完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我是STM32初学者。在学习使用GPIO_ReadInputDataBit()时,不论按键是否按下结果不变,也就是检测脚始终为0,百思不得其解;希望得到高手指点。
以下是程序 #include #include #include #include #include #include #include #include #define led1 GPIO_Pin_0 #define led2 GPIO_Pin_1 #define led3 GPIO_Pin_2 #define led4 GPIO_Pin_3 #define led5 GPIO_Pin_4 #define led6 GPIO_Pin_5 #define led7 GPIO_Pin_6 #define led8 GPIO_Pin_7 #define led_turn1 GPIO_WriteBit(GPIOB,led1,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led1)) #define led_turn2 GPIO_WriteBit(GPIOB,led2,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led2)) #define led_turn3 GPIO_WriteBit(GPIOB,led3,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led3)) #define led_turn4 GPIO_WriteBit(GPIOB,led4,(BitAction)!GPIO_ReadOutputDataBit(GPIOB,led4)) void Clock_init() { RCC_APB2PeriphClockCmd( RCC_APB1Periph_PWR| RCC_APB1Periph_BKP | RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE); } void B_init() { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); } void A_init() { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); } void delay_ms(unsigned int Counter) { unsigned int i; for(;Counter!=0;Counter--) { i=1000; //1ms 10301 while(i--); } } int main (void) { u8 read5,read6,read7; Clock_init(); A_init(); B_init(); // GPIO_SetBits(GPIOA,GPIO_Pin_All); while(1) { //read5=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5); read5=GPIOA->IDR&GPIO_Pin_5; read6=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6); read7=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7); if(read5==0){GPIO_SetBits(GPIOB,GPIO_Pin_14);} if(read6==0){GPIO_SetBits(GPIOB,GPIO_Pin_15);} if(read7==0){GPIO_ResetBits(GPIOB,GPIO_Pin_15);} led_turn1; led_turn2; led_turn3; led_turn4; delay_ms(500); } } |
|
相关推荐
3个回答
|
|
将GPIO_Mode_IN_FLOATING改成GPIO_Mode_IPU试试看。
最佳答案
|
|
|
|
找到原因了。不过用proteus仿真还是这样,烧录进电路没问题。
|
|
|
|
烧录进电路没问题,建议多测试下。还有就是仿真时不行,看看仿真的设置。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2136 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1970 浏览 3 评论
4566 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2116 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2629 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 15:31 , Processed in 0.875262 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号