请教STM32F031的PA13-SWDIO读电平一直为低问题
产品上引脚必须复用PA13和PA14。把PA13和PA14初始化成GPIO输入时,读外部输入的电平(频率低于1HZ方波),PA13和PA14读出来的电平一直为0,不知道问题出在哪里?之前用过STM32F1系列,用下载口做GPIO时要先关SWJ,STM32F0没有这个寄存器,用STM32CubeMX生成的代码也没有什么特殊的地方。
请教大家:
初始化代码如下:
GPIO_InitStruct.Pin = LPMODE_PIN;
GPIO_InitStruct.Mode =GPIO_MODE_INPUT;//GPIO_MODE_IT_RISING_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(LPMODE_PORT, &GPIO_InitStruct);
读电平:
static u8 CheckPinState(GPIO_TypeDef *SrcPort, u8 SrcPin)
{
u8 ucCnt = 3;
u8 ucStatus = 1;
u8 ucHighLevelCnt = 0, ucLowLevelCnt = 0;
// remove jitter
while (ucCnt--)
{
(HAL_GPIO_ReadPin(SrcPort, SrcPin)) ? (ucHighLevelCnt++) : (ucLowLevelCnt++);
}
(ucHighLevelCnt > ucLowLevelCnt) ? (ucStatus = 1) : (ucStatus = 0);
return ucStatus;
}
楼主有问题请发求助帖哦~ static u8 CheckPinState(GPIO_TypeDef *SrcPort, u8 SrcPin)
这一条中,SrcPin的类型不对,不能是u8,应该是u16类型。
见stm32f0xx_hal_gpio.c和stm32f0xx_hal_gpio.h
页:
[1]