本人在使用STM32031G4的过程中,碰到一个奇怪现象,IO口读出来的状态与IO口实际的状态不相符。也就是说:IO口用万用表去量测电平是3.3V的情况下,IDR读取对应的bit位为0。以下是本人的GPIO的初始化及使用部分。如有碰到类似情况的大神,还请指点问题出在哪。
*****************************初始化**********************************************
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
*******************************使用部分*******************************************
GPIO_ResetBits(GPIOB,GPIO_Pin_6);
DelayTime(COUNT_SCL);
GPIO_SetBits(GPIOB,GPIO_Pin_7);
DelayTime(COUNT);
GPIO_SetBits(GPIOB,GPIO_Pin_6);
DelayTime(COUNT);
while (err_time--)
{
GPIOB->MODER&=0xFFFF3FFF;
if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7) == 0) //在此时,PIN7外部量侧是高电平,但是程序读出来是低电平.
{
GPIO_ResetBits(GPIOB,GPIO_Pin_6);
GPIOB->MODER|=0x00004000;
return true;
}
}
|