完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这个是按键初始化的函数:
#include "KEY.h" /*按键初始化*/ void KEY_Init(void) { GPIO_Init(KEY1_PORT, KEY1|KEY2|KEY3|KEY4|KEY5, GPIO_Mode_In_PU_IT); //中断方式 GPIO_Init(KEY5_PORT, KEY5, GPIO_Mode_In_PU_IT); //中断方式 EXti_SetPinSensitivity(EXTI_Pin_2|EXTI_Pin_3|EXTI_Pin_4|EXTI_Pin_5, EXTI_Trigger_Falling_Low ); //配置外部中断触发方式 } bool KEY_Down(GPIO_TypeDef* GPIOx,GPIO_Pin_TypeDef GPIO_Pin) { /*检测是否有按键按下 */ if( GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 0 ) { delay_ms(5); // 延时消抖 if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==0) { while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==0); //等待按键释放 return true; //如果有键盘按下,就返回真值,否则返回假值 } } return false; } 下面是中断2线的处理函数: INTERRUPT_HANDLER(EXTI2_IRQHandler,10) { /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ if(KEY_Down(GPIOA,KEY1) == 0 ) { GPIO_ToggleBits(GPIOC, GPIO_Pin_5);//LED1 printf ("01.rn"); EXTI_ClearITPendingBit(EXTI_IT_Pin2); //清除中断。 } if(KEY_Down(GPIOD,KEY5) == 0 ) { GPIO_ToggleBits(GPIOD, GPIO_Pin_4);//LED5 printf ("05.rn"); EXTI_ClearITPendingBit(EXTI_IT_Pin2); //清除中断。 } } 现在发现的现象是:当KEY1键按下时,LED1状态有时翻转,有时不翻转。当KEY5按键按下时,LED1状态翻转。还是没有找到问题所在,求好心人解答下,感谢! |
|
相关推荐
11个回答
|
|
应该可以的 判断是哪个io口就可以啊
|
|
|
|
进入中断后可以判断io口的标志位就知道是哪个了
|
|
|
|
请问根据什么可以判断是那个IO口?
|
|
|
|
通过中断标志判断是哪个GPIO产生中断
|
|
|
|
STM8没有中断标志位
|
|
|
|
怎么可能呢,我还没有发现没有的
|
|
|
|
据我了解到的,我是共用中断2线函数的,有Externalinterruptstatusregister1(EXTI_SR1)这个寄存器。但是这只能判断是哪个中断线发生中断,没有具体到哪个IO口。如果有些东西是我没了解到的,请指教,感谢!
|
|
|
|
去看相关的寄存器就明白了
|
|
|
|
楼主解决问题了吗
|
|
|
|
最近也在学习这一类知识,好多不懂,来这里学习
|
|
|
|
可能STM8L有中断优先级设置,同时配置两个IO为中断的时候就会出现问题。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2028 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1879 浏览 3 评论
4470 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2027 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2535 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 14:48 , Processed in 0.798345 second(s), Total 62, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号