初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2019-6-10
- 在线时间
- 17 小时
|
5金钱
本帖最后由 Lixdong 于 2019-8-9 15:53 编辑
关键程序如下:
void IOin_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//使能GPIOD时钟
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //PD13|PD14|PD15设置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100M
GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_DOWN;//下拉
GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化GPIOD15,13,14
}
int main(void)
{
IOin_Init();
while(1)
{
if((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_15))==1)
{
printf("\r\n超温\r\n");
printf("\r\n\r\n");//插入换行
}
}
}
PD15口外接上拉到3.3V,但是为什么不执行if语句里的打印信息;而我把判断改为(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_15))==0时就执行了;
不是应该反过来吗?这里面有什么问题吗试了一下,不论IO口高电平或者低电平,都只执行 if((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_15))==0),换成PD14也一样
|
|