久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2753|回復: 8
打印 上一主題 下一主題
收起左側

關于STM32外部中斷回調函數

[復制鏈接]
跳轉到指定樓層
樓主
ID:609192 發表于 2021-11-24 20:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
該程序放入延時函數就發送錯誤,實現不了功能,把延時函數注釋掉又可以實現。
究竟是什么問題導致的?

1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)  
2. {  
3. HAL_Delay(100);//消抖,通過延時然后讀取按鍵電平,達到消抖的效果。  
4. switch(GPIO_Pin)  
5.     {  
6.         case KEY_UP_Pin:  
7.     if(KEY_UP==1)  
8.     {  
9.     HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);  
10.     HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);         
11.     }  
12.             break;  
13.         case KEY2_Pin:  
14.     if(KEY2==0)  
15.     {  
16.     HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);   
17.     }            
18.             break;  
19.         case KEY1_Pin:  
20.     if(KEY1==0)  
21.     {  
22.     HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);   
23.     }  
24.             break;  
25.         case KEY0_Pin:  
26.     if(KEY0==0)  
27.     {  
28.     HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);  
29.     HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);        
30.     }            
31.             break;  
32.     }  
33. }


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:301191 發表于 2021-11-24 23:35 | 只看該作者
頂一下
回復

使用道具 舉報

板凳
ID:935919 發表于 2021-11-25 08:14 | 只看該作者
hal_delay里面有個循環一直在等待, 外部中斷的callback是在中斷的時候調用, 還處在中斷里面. 如果你的中斷的優先級比定時器的優先級高, 那么delay里面獲取的tick計數都沒有增加, 當然就會卡死在此處了.

哪怕是tick計數增加, 也不建議在中斷里面使用延時程序.
回復

使用道具 舉報

地板
ID:609192 發表于 2021-11-25 09:20 | 只看該作者
sinside 發表于 2021-11-25 08:14
hal_delay里面有個循環一直在等待, 外部中斷的callback是在中斷的時候調用, 還處在中斷里面. 如果你的中斷 ...

我昨晚睡覺的時候也在想是不是中斷優先級的問題,今天早上發現果然是這個問題導致的。另外中斷里面放延時是正點原子例程里面的騷操作,我初學就抄過來了,下次不會了
回復

使用道具 舉報

5#
ID:123289 發表于 2021-11-25 15:58 | 只看該作者
樓主對中斷的理解不足。有沒有考慮,連續中斷發生時,CPU是如何處置這些連續中斷的呢?
回復

使用道具 舉報

6#
ID:759731 發表于 2021-12-4 22:09 | 只看該作者
k9702 發表于 2021-11-25 09:20
我昨晚睡覺的時候也在想是不是中斷優先級的問題,今天早上發現果然是這個問題導致的。另外中斷里面放延時 ...

你確定正點原子用的是hal_delay這個系統自帶的延時函數??
回復

使用道具 舉報

7#
ID:139866 發表于 2021-12-5 12:44 | 只看該作者
k9702 發表于 2021-11-25 09:20
我昨晚睡覺的時候也在想是不是中斷優先級的問題,今天早上發現果然是這個問題導致的。另外中斷里面放延時 ...

hal_delay()優先級比外部中斷低多了,你自己寫個延時函數都能用,但是用這個不行
回復

使用道具 舉報

8#
ID:609192 發表于 2021-12-24 14:20 | 只看該作者
2873632596 發表于 2021-12-4 22:09
你確定正點原子用的是hal_delay這個系統自帶的延時函數??

他放的是自己寫的延時函數,我沒用他的庫,就放了HAL庫的
回復

使用道具 舉報

9#
ID:883242 發表于 2021-12-24 14:43 | 只看該作者
hal_delay()是用systick中斷實現的,而這個中斷優先級最低,中斷里面用永遠也退不出來。更大的問題是中斷處理程序里面放delay本身就是非常愚蠢的行為,不管用什么手段實現,應該快進快出。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美久久久久久 | 国产精品久久久久久久久久久免费看 | 欧美精品一区二区三区在线四季 | 国产精品久久久久av | 久久久久国产精品www | 干干天天| 国产视频中文字幕在线观看 | 欧美一区二区三区在线观看 | 日韩一区二区三区四区五区 | 亚洲欧美日韩中文在线 | 久久久久久久电影 | 国产玖玖| 日韩在线国产精品 | 国产伦一区二区三区久久 | 成人午夜在线 | 91精产国品一二三区 | 国产专区视频 | 日批免费在线观看 | 一区二区精品 | 91视频一88av | 老妇激情毛片免费 | 成人在线观看网址 | 99re99| 国产精品美女 | 国产中文一区二区三区 | 啪一啪在线视频 | 日韩av美女电影 | 黄色国产视频 | 国产精品 亚洲一区 | 久久精品网 | 欧美日产国产成人免费图片 | 亚洲精美视频 | 久久久精选 | 青青草视频网站 | 亚洲人成在线播放 | 亚洲一区二区三区在线播放 | 中文字幕一区二区三区精彩视频 | 在线国产一区二区 | 日韩精品一区二区三区中文字幕 | 精品国产伦一区二区三区观看方式 | 国产精品区二区三区日本 |