0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

STM32平臺(tái)下的FreeRTOS中斷配置

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux系統(tǒng)開(kāi)發(fā) ? 作者:嵌入式Linux系統(tǒng)開(kāi) ? 2023-09-28 11:34 ? 次閱讀

Cortex-M 中斷

Cortex-M 內(nèi)核(STM32)的 MCU 提供了一個(gè)用于中斷管理的嵌套向量中斷控制器(NVIC)。Cotex-M3 的 NVIC 最多支持 240 個(gè) IRQ(中斷請(qǐng)求)、1 個(gè)不可屏蔽中斷(NMI)、1 個(gè) Systick(滴答定時(shí)器)定時(shí)器中斷和多個(gè)系統(tǒng)異常。

Cortex-M 處理器有多個(gè)用于管理中斷和異常的可編程寄存器,這些寄存器大多數(shù)都在 NVIC 和系統(tǒng)控制塊(SCB)中,CMSIS 將這些寄存器定義為結(jié)構(gòu)體。以 STM32F103 為例,打開(kāi) core_cm3.h,有兩個(gè)結(jié)構(gòu)體,NVIC_Type 和 SCB_Type,就存儲(chǔ)了這些信息。

優(yōu)先級(jí)分組定義

當(dāng)多個(gè)中斷來(lái)臨的時(shí)候處理器應(yīng)該響應(yīng)哪一個(gè)中斷是由中斷的優(yōu)先級(jí)來(lái)決定的,高優(yōu)先級(jí)的中斷(優(yōu)先級(jí)編號(hào)小)肯定是首先得到響應(yīng),而且高優(yōu)先級(jí)的中斷可以搶占低優(yōu)先級(jí)的中斷,這個(gè)就是中斷嵌套。

Cortex-M 處理器的有些中斷是具有固定的優(yōu)先級(jí)的,比如復(fù)位、NMI、HardFault,這些中斷的優(yōu)先級(jí)都是負(fù)數(shù),優(yōu)先級(jí)也是最高的。

Cortex-M 處理器有三個(gè)固定優(yōu)先級(jí)和 256 個(gè)可編程的優(yōu)先級(jí),最多有 128 個(gè)搶占等級(jí),但是實(shí)際的優(yōu)先級(jí)數(shù)量是由芯片廠(chǎng)商來(lái)決定的。但是,絕大多數(shù)的芯片都會(huì)精簡(jiǎn)設(shè)計(jì)的,以致實(shí)際上支持的優(yōu)先級(jí)數(shù)會(huì)更少,如 8 級(jí)、16 級(jí)、32 級(jí)等,比如 STM32 就只有 16 級(jí)優(yōu)先級(jí)。

FreeRTOS 中斷配置宏

1、configPRIO_BITS:設(shè)置 MCU 使用幾位優(yōu)先級(jí),STM32 使用的是 4 位,因此此宏為 4

2、configLIBRARY_LOWEST_INTERRUPT_PRIORITY :設(shè)置最低優(yōu)先級(jí)。

3、configKERNEL_INTERRUPT_PRIORITY:此宏用來(lái)設(shè)置內(nèi)核中斷優(yōu)先級(jí)。

4、configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY:來(lái)設(shè)置 FreeRTOS 系統(tǒng)可管理的最大優(yōu)先級(jí),是高于 x 的優(yōu)先級(jí)不歸 FreeRTOS 管理!

5、configMAX_SYSCALL_INTERRUPT_PRIORITY:低于此優(yōu)先級(jí)的中斷可以安全的調(diào)用 FreeRTOS 的 API 函數(shù),高于此優(yōu)先級(jí)的中斷 FreeRTOS 是不能禁止的,中斷服務(wù)函數(shù)也不能調(diào)用 FreeRTOS 的 API 函數(shù)!

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

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227256
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18821

    瀏覽量

    298630
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1336

    瀏覽量

    40084
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352509
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61730
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PSOC4平臺(tái)下如何編譯生成.bin后綴的文件?

    PSOC4平臺(tái)下如何編譯生成.bin后綴的文件
    發(fā)表于 02-01 06:37

    ARM9平臺(tái)下的CMOS圖像傳感器數(shù)據(jù)采集系統(tǒng)

    ARM9平臺(tái)下的CMOS圖像傳感器數(shù)據(jù)采集系統(tǒng)
    發(fā)表于 11-23 21:14

    freeRTOS中斷配置

    freeRTOS中斷配置沒(méi)有處理亞優(yōu)先級(jí)這種情況,即要求全部為搶占優(yōu)先級(jí)。所以STM32移植freeRTOS時(shí),應(yīng)將
    發(fā)表于 08-23 09:13

    如何在zynq 7000平臺(tái)下運(yùn)行 java web程序

    轉(zhuǎn)載:https://blog.csdn.net/weixin_39827918/article/details/78806642前言因公司項(xiàng)目需求,需要在zynq 7000平臺(tái)下運(yùn)行 java
    發(fā)表于 12-14 06:19

    imx6平臺(tái)下如何移植mongodb呢?

    論壇有誰(shuí)在imx6平臺(tái)下移植過(guò)mongodb的呢?移植的mongodb一直無(wú)法運(yùn)行。
    發(fā)表于 11-28 07:42

    基于MagicARM270平臺(tái)下的WinCE5.0使用說(shuō)明

    基于MagicARM270平臺(tái)下的WinCE5.0使用說(shuō)明
    發(fā)表于 09-29 11:39 ?5次下載
    基于MagicARM270<b class='flag-5'>平臺(tái)下</b>的WinCE5.0使用說(shuō)明

    基于STM32應(yīng)用的FreeRTOS中斷設(shè)置

    一、FreeRTOS中斷設(shè)置介紹 FreeRTOSConfig.h中定義了兩個(gè)宏,分別是: configKERNEL_INTERRUPT_PRIORITY
    發(fā)表于 11-29 19:46 ?1871次閱讀
     基于<b class='flag-5'>STM32</b>應(yīng)用的<b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>設(shè)置

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

    STM32中斷,及FreeRTOS中斷優(yōu)先級(jí)配置
    的頭像 發(fā)表于 03-04 11:45 ?8611次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>中斷</b>及<b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>優(yōu)先級(jí)<b class='flag-5'>配置</b>

    STM32平臺(tái)下GP2Y1010AU0F灰塵傳感器的使用源代碼

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32平臺(tái)下GP2Y1010AU0F灰塵傳感器的使用源代碼。
    發(fā)表于 01-09 17:15 ?99次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>平臺(tái)下</b>GP2Y1010AU0F灰塵傳感器的使用源代碼

    STM32單片機(jī)平臺(tái)下的RF射頻控制教程

    STM32單片機(jī)平臺(tái)下的RF射頻控制教程
    發(fā)表于 06-15 10:06 ?11次下載

    基于STM32FreeRTOS學(xué)習(xí)之中斷配置和臨界段(四)

    記錄一,方便以后翻閱~FreeRTOS中斷配置需要根據(jù)MCU具體配置,這需要我們了解MCU架構(gòu)關(guān)于
    發(fā)表于 12-08 09:51 ?6次下載
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>FreeRTOS</b>學(xué)習(xí)之<b class='flag-5'>中斷</b><b class='flag-5'>配置</b>和臨界段(四)

    stm32cubemx 配置FreeRTOS相關(guān)基礎(chǔ)基礎(chǔ)知識(shí)及串口接收中斷實(shí)驗(yàn)

    本實(shí)驗(yàn)首先大家自身要有stm32cubemx基礎(chǔ)配置,比如GPIO、中斷、串口、SPI等,FreeRTOS有相關(guān)的調(diào)用函數(shù)基礎(chǔ)及調(diào)度任務(wù)的概念都需要提前理解。單獨(dú)
    發(fā)表于 12-14 18:44 ?21次下載
    <b class='flag-5'>stm32</b>cubemx <b class='flag-5'>配置</b><b class='flag-5'>FreeRTOS</b>相關(guān)基礎(chǔ)基礎(chǔ)知識(shí)及串口接收<b class='flag-5'>中斷</b>實(shí)驗(yàn)

    STM32FreeRTOS:(一) 中斷配置和臨界段的使用

    STM32FreeRTOS:(一) 中斷配置和臨界段的使用文章目錄STM32FreeRTOS
    發(fā)表于 01-14 15:43 ?3次下載
    <b class='flag-5'>STM32</b>之<b class='flag-5'>FreeRTOS</b>:(一) <b class='flag-5'>中斷</b><b class='flag-5'>配置</b>和臨界段的使用

    Cortex-M中斷FreeRTOS中斷優(yōu)先級(jí)配置原理

    下面就來(lái)說(shuō)說(shuō)關(guān)于Cortex-M的中斷,及FreeRTOS中斷優(yōu)先級(jí)配置原理。
    發(fā)表于 02-08 15:30 ?3次下載
    Cortex-M<b class='flag-5'>中斷</b>及<b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>優(yōu)先級(jí)<b class='flag-5'>配置</b>原理

    STM32如何配置外部中斷?STM32外部中斷配置步驟

    STM32如何配置外部中斷?STM32外部中斷配置步驟? 作為一款現(xiàn)代化的微控制器,
    的頭像 發(fā)表于 10-26 17:47 ?3046次閱讀