0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

STM32中斷及FreeRTOS中斷優(yōu)先級配置

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-04 11:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多朋友對中斷的一些知識還是不了解,今天就寫點關于Cortex-M3處理器中斷相關,以及FreeRTOS中斷優(yōu)先級配置的內(nèi)容。

1寫在前面

寫本文之前,先寫點相關的擴展內(nèi)容。

STM32屬于ARM中Cortex-M系列處理器,比如:STM32F1數(shù)據(jù)Cortex-M3,STM32F7數(shù)據(jù)Cortex-M7。

可以參看我之前分享文章:從Cortex-M到Cortex-A認識ARM處理器,了解一下關于ARM處理器的種類。

本文主要結合Cortex-M3下面STM32F1系列處理器為例來講述中斷控制相關內(nèi)容。而Cortex-M其它系列,或者說STM32其它系列關于中斷的內(nèi)容類似。

Cortex-M3只是STM32F1的一個內(nèi)核。反過來說STM32F1是在Cortex-M3基礎上增加了一些外設(如:USART、AD等)的芯片。

2

STM32中斷控制

NVIC:Nested Vectored Interrupt Controller,即嵌套向量中斷控制器。

STM32中NVIC我們比較熟悉,編程的時候使用中斷都會對NVIC進行配置。

而STM32F1中的NVIC是屬于Cortex-M3中的一部分,而不是STM32增加的外設。

NVIC向量中斷控制器是Cortex‐M3不可分離的一部分,它與 CM3 內(nèi)核的邏輯緊密耦合,有一部分甚至水乳交融在一起。

所以,NVIC相關的寄存器位于Cortex-M手冊中。講述STM32的中斷控制,還得從Cortex-M3的NVIC講起,

1.中斷輸入向量表

Cortex-M3的NVIC支持1至240個中斷輸入,比如STM32中xxxIRQs,也就是中斷向量表,具體的數(shù)值由芯片廠商在設計芯片時決定。

比如STM32F1的中斷和異常向量表:

2.中斷和異常區(qū)別

很多初學的朋友不知道什么是中斷?什么是異常?甚至有人直接把中斷和異?;\統(tǒng)稱為“中斷”。

中斷和異常其實有差異,也有關聯(lián),我們常說的中斷其實是包含了異常。異??梢岳斫鉃?a target="_blank">MCU,或者程序處于了某種異常狀態(tài)。

這么區(qū)分吧,看上面向量表,上部分有灰色背景的為異常,下部分白色的為中斷。

異常屬于Cortex‐M3內(nèi)核的一部分,而中斷屬于MCU(STM32)的一部分(由廠家決定)。

所以:

1.站在Cortex‐M3內(nèi)核角度,像STM32中USART這類中斷,屬于外部中斷。

2.站在STM32角度,EXTI外部引腳中斷才屬于中斷。

3.優(yōu)先級

對于Cortex-M3來說,每個外部中斷都有一個對應的優(yōu)先級寄存器。

每個寄存器占用8位,但是允許最少只使用最高3位,在STM32F1中使用了高4位。(也就是我們可以分16個優(yōu)先級)

優(yōu)先級可以被分為高低兩個位段,分別是搶占優(yōu)先級和亞(響應)優(yōu)先級。

提示:

1.STM32中斷優(yōu)先級數(shù)值越小,優(yōu)先級越大。

2.優(yōu)先級分組:Cortex-M3,M4具有分組功能,即存在搶占優(yōu)先級和響應優(yōu)先級,如下圖:

而有的內(nèi)核就沒有,如Cortex-M0就沒有。

3.參考資料

可以參看《Cortex-M3權威指南》

STM32的內(nèi)核編程手冊:

http://www.st.com/stonline/products/literature/pm/15491.pdf

3

FreeRTOS中斷優(yōu)先級配置

本節(jié)內(nèi)容講述一下FreeRTOS最大中斷優(yōu)先級配置問題,也就是FreeRTOSConfig.h配置文件中的:

configMAX_SYSCALL_INTERRUPT_PRIORITY

你們知道配置數(shù)值的含義嗎?

這里就需要結合NVIC相關的內(nèi)容來理解。

上面說了,在STM32中,使用了NVIC優(yōu)先級的高4位,而我們配置時需要對高4位進行配置(低4位未使用)。

看上圖,明白了嗎,上面這個數(shù)值就是95,但代表的優(yōu)先級為5。

這個配置數(shù)值的含義,大概意思是:你代碼中使用的中斷(比如USART1_IRQn)優(yōu)先級需要大于5才可行。

如下面配置,優(yōu)先級為2就不行(當然,有分組的還牽涉到分組問題)。

關于FreeRTOS最大優(yōu)先級配置的內(nèi)容可以參考:

https://www.freertos.org/RTOS-Cortex-M3-M4.html

提示:

FreeRTOS任務優(yōu)先級是數(shù)值越大,優(yōu)先級越高。需要和中斷優(yōu)先級區(qū)分開來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19882

    瀏覽量

    234906
  • STM32
    +關注

    關注

    2293

    文章

    11031

    瀏覽量

    364378
  • FreeRTOS
    +關注

    關注

    12

    文章

    492

    瀏覽量

    64245
  • Cortex-M3
    +關注

    關注

    9

    文章

    276

    瀏覽量

    60244
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ADL5308可以通過軟件和硬件配置的參數(shù),配置優(yōu)先級是什么?

    你好,麻煩問一下ADL5308可以通過軟件和硬件配置的參數(shù),配置優(yōu)先級是什么?有沒有更詳細的寄存器配置手冊,截距配置的步進是多少?
    發(fā)表于 06-10 06:39

    第六章 外部中斷

    本章介紹W55MH32的IO口作為外部中斷輸入的使用。先闡述了NVIC(嵌套向量中斷控制器) 的結構、寄存器、優(yōu)先級及相關函數(shù),再說明EXTI(外部中斷和事件控制器)的功能??驁D及I
    的頭像 發(fā)表于 05-26 16:27 ?498次閱讀
    第六章 外部<b class='flag-5'>中斷</b>

    第十章 W55MH32中斷應用概覽

    本章講述了W55MH32中斷應用,涵蓋異常類型、NVIC介紹、優(yōu)先級定義與分組,闡述中斷編程三要點(使能中斷、配置 NVIC、編寫服務函數(shù))
    的頭像 發(fā)表于 05-22 17:07 ?996次閱讀
    第十章 W55MH32<b class='flag-5'>中斷</b>應用概覽

    CyU3PDebugPrint的最高優(yōu)先級和最低優(yōu)先級是什么?

    [i]CyU3PDebugPrint的最高優(yōu)先級和最低優(yōu)先級是什么?
    發(fā)表于 05-13 08:22

    一天一個嵌入式面試知識(1:中斷處理機制詳解)

    立即響應(優(yōu)先級高) 需經(jīng)過系統(tǒng)調(diào)度(優(yōu)先級可控) 典型應用 外部事件響應(如UART數(shù)據(jù)到達) 系統(tǒng)服務調(diào)用(如文件讀寫) 三、中斷處理流程解析 以STM32為例,
    發(fā)表于 03-21 10:18

    配電柜—斷電危機?配電柜故障排查優(yōu)先級指南

    在排查配電柜故障過程,合理安排排查優(yōu)先級至關重要。下面聊一下如何科學合理安排配電柜故障排查優(yōu)先級順序。
    的頭像 發(fā)表于 03-06 18:55 ?408次閱讀
    配電柜—斷電危機?配電柜故障排查<b class='flag-5'>優(yōu)先級</b>指南

    瑞薩ethercat中斷對程序其他周期性中斷的影響

    瑞薩ethercat數(shù)據(jù)收發(fā)中斷對程序其他周期計時中斷的影響要如何解決,周期中斷里通過配置GPT進行pwm的輸出,對時間要求嚴格,ethe
    發(fā)表于 11-21 18:34

    stm32 GPIO中斷配置教程

    在嵌入式開發(fā)STM32微控制器因其高性能和豐富的外設而廣受歡迎。GPIO(通用輸入/輸出)中斷STM32微控制器中常用的功能之一,它允許開發(fā)者在特定引腳上檢測到外部信號變化時快速
    的頭像 發(fā)表于 11-19 15:53 ?3414次閱讀

    使用CH32V103C8TC設置中斷優(yōu)先級分組時,編譯報錯的原因?

    使用CH32V103C8TC設置中斷優(yōu)先級分組時,設置為NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);編譯報錯 而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 卻不會報
    發(fā)表于 09-27 06:03

    CH32V103 使用中斷優(yōu)先級分組0時報錯

    使用CH32V103C8TC設置中斷優(yōu)先級分組時,設置為NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);卻不會報錯
    發(fā)表于 09-23 13:52

    STM32CUBEMX(11)--外部中斷(EXTI)

    都相等,則根據(jù)他們在中斷的排位順序決定先處理哪一個。 中斷服務函數(shù) 配置中斷優(yōu)先級之后,
    發(fā)表于 09-10 15:44

    freertos中斷優(yōu)先級在哪設置

    FreeRTOS是一個流行的實時操作系統(tǒng),它廣泛應用于嵌入式系統(tǒng)開發(fā)。在FreeRTOS,中斷優(yōu)先級是一個重要的概念,因為它決定了
    的頭像 發(fā)表于 09-02 14:17 ?1552次閱讀

    stm32怎樣觸發(fā)軟件中斷

    STM32,您需要配置NVIC以啟用所需的中斷。這包括設置中斷通道、優(yōu)先級和觸發(fā)條件。 編寫
    的頭像 發(fā)表于 09-02 09:32 ?1888次閱讀

    【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片」閱讀體驗】+閱讀中斷

    NVIC外設,用戶可以使用NVIC的相關API實現(xiàn)中斷配置、使能、禁止和優(yōu)先級設置的操作。 Cortex-M3的NVIC是一種嵌套向量中斷
    發(fā)表于 09-01 23:59

    通過I2C PWM IC控制伺服,可以為伺服控制進行高優(yōu)先級中斷嗎?

    () 大約需要 100 毫秒才能完成請求。 我怎樣才能避免那里的事情。 我可以為伺服控制進行高優(yōu)先級中斷嗎? 使用 Arduino IDE。
    發(fā)表于 07-12 06:20

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品