日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...

發布時間:2024/4/18 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FreeRTOS操作系統,在按鍵中斷函數中恢復被掛起的任務,程序卡死的原因和解決辦法

時間:2019-08-10 14:39:47??來源:??作者:??所屬欄目:其他服務端

這里將告訴您FreeRTOS操作系統,在按鍵中斷函數中恢復被掛起的任務,程序卡死的原因和解決辦法,教程操作方法:出現問題場景:

作為剛接觸FreeRTOS實時操作系統的菜鳥,我在練

這里將告訴您FreeRTOS操作系統,在按鍵中斷函數中恢復被掛起的任務,程序卡死的原因和解決辦法,教程操作方法:出現問題場景:

作為剛接觸FreeRTOS實時操作系統的菜鳥,我在練習一個程序功能:按鍵3按下,將LED閃爍的任務掛起;按鍵4按下,將LED閃爍的任務恢復到就緒。按鍵使用外部中斷。恢復就緒的語句是xTaskResumeFromISR(xHandleTaskLED1(該函數用于在中斷中恢復一個被掛起的任務)。

兩個按鍵的中斷優先級程序如下:

/*------------------------------------------------------------------------*/

HAL_NVIC_SetPriority(EXTI3_IRQn, 2, 0);//KEY3按鍵中斷優先級配置

HAL_NVIC_EnableIRQ(EXTI3_IRQn);

HAL_NVIC_SetPriority(EXTI4_IRQn, 3, 0);//KEY4按鍵中斷優先級配置

HAL_NVIC_EnableIRQ(EXTI4_IRQn);

/*------------------------------------------------------------------------*/

按鍵3的中斷優先級配置為2,按鍵4配置為3。按鍵3的掛起任務是在另一個任務中實現,按下按鍵3后正常將LED任務掛起。按鍵4的恢復任務在中斷中,按下按鍵4出現整個系統卡死,沒有任何反應。

出現問題原因:

在使用FreeRTOS系統時,如果想在中斷中恢復一個被掛起的任務,需要使用xTaskResumeFromISR(TaskHandle_t xTaskToResume)函數,而不是xTaskResume(TaskHandle_t xTaskToResume) 函數。

當單片機芯片使用的是CM內核的MCU,官方強烈建議將NVIC的優先級分組配置為全搶占式優先級,沒有響應式優先級。這樣方便系統管理。我看了以下我的設置:HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); 全為搶占式優先級,正常。

在系統的 FreeRTOSConfig.h 配置頭文件里,定義了一個宏定義:#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 。它的意思是:用戶可以在搶占式優先級為 5 - 15的中斷里調用FreeRTOS的API函數(搶占式式優先級為0的中斷里面不允許調用)。仔細看,我定義的是從5-15的優先級中斷可以去調用系統的API,但是上面的代碼中,我把兩個按鍵的優先級設置為2和3,已經超過了5-15的搶占式優先級范圍,所以我按下按鍵后,調用不了恢復任務函數!

解決辦法:

我將#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 宏定義改為#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 1 (因為0級搶占式優先級不允許用戶使用)。這表明 在 1 - 15級的搶占式優先級范圍,我的按鍵3和按鍵4的中斷優先級在范圍之內,可以調用系統的API函數了。這樣,我的問題就解決了。FreeRTOS操作系統,在按鍵中斷函數中恢復被掛起的任務,程序卡死的原因和解決辦法就為您介紹到這里,感謝您關注懶咪學編程c.lanmit.com.

本文地址:https://c.lanmit.com/czxt/qita/8799.html

總結

以上是生活随笔為你收集整理的c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。