• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

22.4.2-中斷優(yōu)先級(jí)相關(guān) FreeRTOS開源項(xiàng)目

02/13 08:46
1659
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

聯(lián)系方式.txt

共1個(gè)文件

這個(gè)是全網(wǎng)最詳細(xì)的STM32項(xiàng)目教學(xué)視頻。
第一篇在這里:
視頻在這里


STM32智能小車V3-STM32入門教程-openmv與STM32循跡小車-stm32f103c8t6-電賽 嵌入式學(xué)習(xí) PID控制算法 編碼器電機(jī) 跟隨

V3:HAL庫(kù)開發(fā)、手把手教學(xué)下面功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、openmv視覺控制、電磁循跡、FreeRTOS、K210視覺智能車(更新中)、K230視覺智能車(更新中)、MSPM0G3507視覺智能車(更新中)

在這里插入圖片描述

22.4.2-中斷優(yōu)先級(jí)相關(guān)

中斷優(yōu)先級(jí)說(shuō)明(掌握)

給出中斷相關(guān)優(yōu)先級(jí)說(shuō)明、中斷在freeRTOS的注意事項(xiàng)。

中斷是MCU硬件特性,STM32 MCU的NVIC管理硬件中斷。STM32F103使用4位設(shè)置優(yōu)先級(jí)分組策略,用于設(shè)置中斷的搶占優(yōu)先級(jí)和次優(yōu)先級(jí),優(yōu)先級(jí)數(shù)字越小,優(yōu)先級(jí)越高。每個(gè)中斷有一個(gè)中斷服務(wù)例程,即ISR,用于對(duì)中斷做出響應(yīng)。

FreeRTOS的運(yùn)行用到中斷,F(xiàn)reeRTOS的上下文切換就是在PenSV中斷中進(jìn)行的,F(xiàn)reeRTOS還需要一個(gè)基礎(chǔ)時(shí)鐘產(chǎn)生嘀嗒信號(hào)。在CubeMX中啟用FreeRTOS后,系統(tǒng)會(huì)對(duì)NVIC做一些設(shè)置,例如。啟用FreeRTOS后,中斷優(yōu)先級(jí)分組策略自動(dòng)設(shè)置為4位全部用于搶占優(yōu)先級(jí),所以搶占優(yōu)先級(jí)編號(hào)是0到15。

這個(gè)就是加入FreeRTOS自動(dòng)設(shè)置的
在這里插入圖片描述
還有兩個(gè)參數(shù)非常重要,F(xiàn)reeRTOS并不是可以管理MCU的所有中斷,可以設(shè)置FreeRTOS可以管理那些優(yōu)先級(jí)的中斷。
在這里插入圖片描述
configLIBRARY_LOWEST_INTERRUPT_PRIORITY: ,表示中斷的最低優(yōu)先級(jí)數(shù)值,因?yàn)橹袛喾纸M策略是4位全部用搶占優(yōu)先級(jí),所以這個(gè)數(shù)值是15。

configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY :表示FreeRTOS可管理的最高優(yōu)先級(jí)(freeRTOS中,中斷里面使用的FreeRTOS函數(shù)和任務(wù)中使用的FreeRTOS函數(shù)是不一樣的,這個(gè)我們后面會(huì)講到),默認(rèn)是5。也就是說(shuō)中斷優(yōu)先級(jí)數(shù)等于或者大于5的中斷ISR里,才可以調(diào)用FreeRTOS的中斷安全API函數(shù),也就是待用"FromISR"后綴的函數(shù),使用taskDISABLE_INTERRUPTS()函數(shù)也只能屏蔽優(yōu)先級(jí)數(shù)值等于或者大于5的中斷。所以也不能在優(yōu)先級(jí)高于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY的中斷ISR里面調(diào)用FreeRTOS的API函數(shù),即便是帶"FromISR"的中斷安全函數(shù)也是不可以的。

中斷中要使用FreeRTOS的中斷級(jí) API函數(shù)(理解)

在中斷的ISR中斷服務(wù)函數(shù)里,有時(shí)會(huì)需要調(diào)用FreeROTS的API函數(shù),但是調(diào)用普通的API函數(shù)可能會(huì)存在問題。列如,在ISR中斷服務(wù)函數(shù)里調(diào)用osDelay就會(huì)出現(xiàn)問題,因?yàn)閛sDelay會(huì)使任務(wù)進(jìn)入阻塞狀態(tài),而ISR中斷服務(wù)函數(shù)根本就不是任務(wù),ISR中斷服務(wù)函數(shù)運(yùn)行的時(shí)候,也不能進(jìn)行任務(wù)調(diào)度。

所以FreeRTOS的API函數(shù)分為兩個(gè)版本,一個(gè)稱為"任務(wù)級(jí)" 即普通名稱的API函數(shù),另一個(gè)是"中斷級(jí)"帶有"FromISR"的函數(shù)或帶有"FROM_ISR"的宏函數(shù)。

比如我們后面在按鍵中斷中釋放和消耗二值信號(hào)量就使用"FromISR"結(jié)尾的 中斷釋放信號(hào)量函數(shù)xSemaphoreGiveFromISR

下面總結(jié)一下為什么中斷中要使用中斷級(jí)API函數(shù):

  • 中斷上下文與任務(wù)上下文不同,ISR 中的代碼不能做任務(wù)調(diào)度和阻塞等操作。
  • 使用中斷級(jí) API 函數(shù)可以確保中斷中的操作是安全的,避免阻塞、調(diào)度或其他不安全的行為。
  • 在這里插入圖片描述
中斷及其ISR的設(shè)計(jì)原則(重點(diǎn))

根據(jù)FreeRTOS管理中斷的特點(diǎn),中斷的優(yōu)先級(jí)和ISR中斷服務(wù)函數(shù)程序設(shè)計(jì)應(yīng)該遵循如下原則。

  • ISR的代碼應(yīng)該盡量簡(jiǎn)短,應(yīng)該將比較耗時(shí)的處理功能轉(zhuǎn)移到任務(wù)函數(shù)里實(shí)現(xiàn).
  • 在可屏蔽中斷的ISR里,能調(diào)用中斷級(jí)的FreeRTOS API函數(shù),絕對(duì)不能調(diào)用普通的FreeRTOS API函數(shù)。在不可屏蔽中斷的ISR里,不能調(diào)用任何的FreeRTOS API函數(shù)
    -在這里插入圖片描述
中斷優(yōu)先級(jí)和任務(wù)優(yōu)先級(jí)區(qū)別
  • ? MCU的中斷有中斷優(yōu)先級(jí),有中斷服務(wù)例程(ISR); FreeRTOS的任務(wù)有任務(wù)優(yōu)先級(jí),有任務(wù)函數(shù)。這兩者的特點(diǎn)和區(qū)別具體如下。中斷是MCU的硬件特性,由硬件事件或軟件信號(hào)引起中斷,運(yùn)行哪個(gè)ISR是由硬件決定的。中斷的優(yōu)先級(jí)數(shù)字越小,表示優(yōu)先級(jí)越高,所以中斷的最高優(yōu)先級(jí)為0。
  • ? FreeRTOS 的任務(wù)是一個(gè)純軟件的概念,與硬件系統(tǒng)無(wú)關(guān)。任務(wù)的優(yōu)先級(jí)是開發(fā)者在軟件中賦予的,任務(wù)的優(yōu)先級(jí)數(shù)字越低,表示優(yōu)先級(jí)越低,所以任務(wù)的最低優(yōu)先級(jí)為0。FreeRTOS 的任務(wù)調(diào)度器決定哪個(gè)任務(wù)處于運(yùn)行狀態(tài),F(xiàn)reeRTOS 在中斷優(yōu)先級(jí)為 15 的PendSV中斷里進(jìn)行上下文切換,所以,只要有中斷ISR在運(yùn)行, FreeRTOS就無(wú)法進(jìn)行任務(wù)切換。
  • ? 任務(wù)只有在沒有ISR運(yùn)行的時(shí)候才能運(yùn)行,即使優(yōu)先級(jí)最低的中斷,也可以搶占高優(yōu)先級(jí)的任務(wù)的執(zhí)行,而任務(wù)不能搶占 ISR 的運(yùn)行。

在實(shí)際的軟件設(shè)計(jì)中,一般要盡量簡(jiǎn)化ISR的功能,使其盡量少占用CPU的時(shí)間。一般的硬件中斷都是處理一些數(shù)據(jù)的接收或發(fā)送工作,例如,采用中斷方式進(jìn)行ADC數(shù)據(jù)采集時(shí),只需在 ADC 的中斷里將數(shù)據(jù)讀取到緩沖區(qū),而對(duì)數(shù)據(jù)進(jìn)行濾波、頻譜計(jì)算等耗時(shí)間的工作,就轉(zhuǎn)移到任務(wù)函數(shù)里處理。

 

  • 聯(lián)系方式.txt
    下載
意法半導(dǎo)體

意法半導(dǎo)體

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.收起

查看更多

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!