一个单片机软件,使用了STM32103VET6
其中的PE8、PE9、PE10三个管脚分别连接一个信号,做输入用。
出现一个超级奇怪的问题
单片机在复位或者上电的时候,无论这几个管脚是什么状态,读出来的总是0
更奇怪的是只要这几个管脚出现了一次真正的0信号输入,然后这个管脚就正常了。谁可以告诉我这是为什么?
以上问题可以100%的概率重新出现。
以下是初始化代码:
#define DGsenser_0 GPIO_Pin_8
#define DGsenser_1 GPIO_Pin_9
#define DGsenser_2 GPIO_Pin_10
#define port_DGsenser_0 GPIOE
#define port_DGsenser_1 GPIOE
#define port_DGsenser_2 GPIOE
//-----------------------------------------------------
void sdg_gpio_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE , ENABLE);
GPIO_InitStructure.GPIO_Pin = DGsenser_0 | DGsenser_1 | DGsenser_2 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(port_DGsenser_0, &GPIO_InitStructure);
}
//-----------------------------------------------------
bool sdg_get_senser0()
{
bool a;
a=GPIO_ReadInputDataBit(port_DGsenser_0,DGsenser_0);
return a;
}
bool sdg_get_senser1()
{
bool a;
a=GPIO_ReadInputDataBit(port_DGsenser_1,DGsenser_1);
return a;
}
bool sdg_get_senser2()
{
bool a;
a=GPIO_ReadInputDataBit(port_DGsenser_2,DGsenser_2);
return a;
}
//-----------------------------------------------------
//-----------------------------------------------------
//-----------------------------------------------------
|