RM新时代网站-首页

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

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

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

FreeRTOS中斷測(cè)試避坑指南

Dp1040 ? 來(lái)源:技術(shù)讓夢(mèng)想更偉大 ? 2023-12-21 09:04 ? 次閱讀

FreeRTOS中斷簡(jiǎn)介

任何調(diào)用中斷安全FreeRTOS API函數(shù)的中斷服務(wù)例程都可以使用的最高中斷優(yōu)先級(jí)。不要從任何優(yōu)先級(jí)高于此的中斷調(diào)用中斷安全FREERTOS API函數(shù)(優(yōu)先級(jí)越高,數(shù)值越低)。

代碼如下(版本FreeRTOS V202107.00):

/*Cortex-M specific definitions.*/
#ifdef __NVIC_PRIO_BITS
/*__BVIC_PRIO_BITS will be specified when CMSIS is being used.*/
#define configPRIO_BITS__NVIC_PRIO_BITS
#else
#define configPRIO_BITS4/*15 priority levels*/
#endif

/*The lowest interrupt priority that can be usedina call to a"set priority"
function.*/
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY0xf

/*The highest interrupt priority that can be used by any interrupt service
routine that makes calls to interrupt safe FreeRTOS APIfunctions.DO NOT CALL
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
PRIORITY THAN THIS!(higher priorities are lower numeric values.*/
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5

/*Interrupt priorities used by the kernel port layer itself.These are generic
to all Cortex-M ports,anddonot rely on any particular libraryfunctions.*/
#define configKERNEL_INTERRUPT_PRIORITY(configLIBRARY_LOWEST_INTERRUPT_PRIORITY<

configMAX_SYSCALL_INTERRUPT_PRIORITY 高于此優(yōu)先級(jí)的中斷,不能被禁止。

cbd8c0a4-9f98-11ee-8b88-92fbcf53809c.jpg

測(cè)試過(guò)程

開(kāi)啟定時(shí)器TIM6和TIM7,兩個(gè)定時(shí)器每隔一定時(shí)間串口打印一次,設(shè)置定時(shí)器TIM6中斷優(yōu)先級(jí)為4,定時(shí)器TIM7中斷優(yōu)先級(jí)為5, 高于 5 的優(yōu)先級(jí)(即優(yōu)先級(jí)數(shù)小于5)不歸操作系統(tǒng)管理。

簡(jiǎn)而言之,定時(shí)器TIM6不歸FreeRTOS管理,在關(guān)閉中斷時(shí),低于優(yōu)先級(jí)5的都會(huì)被關(guān)閉,高于或者等于優(yōu)先級(jí)5的都會(huì)被關(guān)閉。

1、創(chuàng)建中斷測(cè)試任務(wù)

xTaskCreate((TaskFunction_t)interrupt_task,//任務(wù)函數(shù)
(const char*)"interrupt_task",//任務(wù)名稱
(uint16_t)INTERRUPT_STK_SIZE,//任務(wù)堆棧大小
(void*)NULL,//傳遞給任務(wù)函數(shù)的參數(shù)
(UBaseType_t)INTERRUPT_TASK_PRIO,//任務(wù)優(yōu)先級(jí)
(TaskHandle_t*)&INTERRUPTTask_Handler);//任務(wù)句柄

2、中斷測(cè)試任務(wù)函數(shù)

void interrupt_task(void*pvParameters)
{
static u32 count_num=0;
while(1)
{
count_num++;
if(count_num==5)
{
printf("關(guān)閉中斷.............
");
portDISABLE_INTERRUPTS();//關(guān)閉中斷
delay_xms(5000);//延時(shí)5s
printf("打開(kāi)中斷.............
");
portENABLE_INTERRUPTS();//打開(kāi)中斷
}
vTaskDelay(1000);//延時(shí)1000個(gè)時(shí)鐘節(jié)拍,就是1sconfigTICK_RATE_HZ
}
}

3、定時(shí)器中斷服務(wù)函數(shù)

void TIM6_IRQHandler(void)
{
if(TIM_GetITStatus(TIM6,TIM_IT_Update))//是否產(chǎn)生中斷
{
printf("TIM6中斷
");
TIM_ClearITPendingBit(TIM6,TIM_IT_Update);//清除中斷標(biāo)志位
}
}

void TIM7_IRQHandler(void)
{
if(TIM_GetITStatus(TIM7,TIM_IT_Update))//是否產(chǎn)生中斷
{
printf("TIM7中斷
");
TIM_ClearITPendingBit(TIM7,TIM_IT_Update);//清除中斷標(biāo)志位
}
}

4、測(cè)試結(jié)果

cbe67a5a-9f98-11ee-8b88-92fbcf53809c.png

5、注意事項(xiàng)

臨界區(qū)、中斷服務(wù)函數(shù)、開(kāi)關(guān)中斷中不能使用vTaskDelay()函數(shù),此函數(shù)就是要交出CPU一段時(shí)間,如果任務(wù)一直不延時(shí)或者掛起,那么低優(yōu)先級(jí)的任務(wù)會(huì)無(wú)法獲得CPU。







審核編輯:劉清

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

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211574
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3246

    瀏覽量

    114715
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62139
  • 中斷優(yōu)先級(jí)

    關(guān)注

    0

    文章

    22

    瀏覽量

    9368

原文標(biāo)題:FreeRTOS避坑指南之中斷測(cè)試

文章出處:【微信號(hào):玩點(diǎn)嵌入式,微信公眾號(hào):玩點(diǎn)嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    freeRTOS開(kāi)發(fā)筆記】記一次爹的freeTOS升級(jí)

    freeRTOS開(kāi)發(fā)筆記】記一次爹的freeTOS-v9.0.0升級(jí)到freeRTOS-v10.4.4
    的頭像 發(fā)表于 07-11 09:15 ?4631次閱讀
    【<b class='flag-5'>freeRTOS</b>開(kāi)發(fā)筆記】記一次<b class='flag-5'>坑</b>爹的freeTOS升級(jí)

    如何對(duì)FreeRTOS中斷進(jìn)行測(cè)試

    FreeRTOS與臨界段代碼保護(hù)有關(guān)的函數(shù)有哪幾個(gè)?如何對(duì)FreeRTOS中斷進(jìn)行測(cè)試呢?
    發(fā)表于 11-26 08:06

    分享一些嵌入式系統(tǒng)編程中內(nèi)存操作相關(guān)的指南

    在嵌入式系統(tǒng)的編程中,內(nèi)存操作是我們常用到的,但往往也是易錯(cuò)的地方,怎么避免呢,今天給大家分享一些相關(guān)的指南。數(shù)據(jù)指針...
    發(fā)表于 12-17 07:18

    FreeRTOS實(shí)時(shí)內(nèi)核使用指南-中文

    FreeRTOS實(shí)時(shí)內(nèi)核使用指南-中文版,Using the FreeRTOS Real Time Kernel - A Practical Guide的中文版本
    發(fā)表于 07-13 15:11 ?123次下載

    FreeRTOS 使用指南

    FreeRTOS 使用指南
    發(fā)表于 10-24 13:37 ?25次下載
    <b class='flag-5'>FreeRTOS</b> 使用<b class='flag-5'>指南</b>

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

    一、FreeRTOS中斷設(shè)置介紹 FreeRTOSConfig.h中定義了兩個(gè)宏,分別是: configKERNEL_INTERRUPT_PRIORITY
    發(fā)表于 11-29 19:46 ?2047次閱讀
     基于STM32應(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 ?8904次閱讀
    STM32<b class='flag-5'>中斷</b>及<b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>優(yōu)先級(jí)配置

    STM32CubeIDE+FREERTOS記錄

    STM32CubeIDE+FREERTOS記錄
    發(fā)表于 12-05 18:06 ?15次下載
    STM32CubeIDE+<b class='flag-5'>FREERTOS</b>踩<b class='flag-5'>坑</b>記錄

    STM32之FreeRTOS:(一) 中斷配置和臨界段的使用

    STM32之FreeRTOS:(一) 中斷配置和臨界段的使用文章目錄STM32之FreeRTOS:(一) 中斷配置和臨界段的使用前言 一、stm32的NVIC 分組配置二、
    發(fā)表于 01-14 15:43 ?3次下載
    STM32之<b class='flag-5'>FreeRTOS</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í)配置原理

    PCB設(shè)計(jì)指南

    本文就重點(diǎn)講解PCB設(shè)計(jì)指南,99%的PCB工程師容易忽略的!點(diǎn)進(jìn)來(lái) 大家在PCB設(shè)計(jì)
    的頭像 發(fā)表于 03-20 18:20 ?1166次閱讀
    PCB設(shè)計(jì)<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>

    【6月28日|直播】遇見(jiàn)KeysightCare——貴重儀器安全指南

    現(xiàn)場(chǎng)直播時(shí)間: 2023年6月28日 下午1415 ? 立即報(bào)名 01 直播簡(jiǎn)介 什么?!價(jià)值百萬(wàn)的儀器壞了?怎么就壞了呢?如果你有這樣的困惑,快來(lái)參加直播,聽(tīng)聽(tīng)專家詳細(xì)介紹如何“”,保證高端
    的頭像 發(fā)表于 06-14 07:40 ?479次閱讀
    【6月28日|直播】遇見(jiàn)KeysightCare——貴重儀器安全<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>

    芯片測(cè)試大講堂——半導(dǎo)體參數(shù)測(cè)試指南

    芯片測(cè)試大講堂系列 又和大家見(jiàn)面了 本期我們來(lái)聊聊 半導(dǎo)體參數(shù)測(cè)試 內(nèi)容涉及半導(dǎo)體參數(shù)測(cè)試原理, 參數(shù)測(cè)試面臨的挑戰(zhàn)與實(shí)測(cè)
    的頭像 發(fā)表于 09-13 07:45 ?3563次閱讀
    芯片<b class='flag-5'>測(cè)試</b>大講堂——半導(dǎo)體參數(shù)<b class='flag-5'>測(cè)試</b>與<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>

    FreeRTOS中斷測(cè)試實(shí)驗(yàn)

    FreeRTOS 中斷測(cè)試實(shí)驗(yàn) 設(shè)定:FreeRTOS 中優(yōu)先級(jí)低于 configMAX_SYSCALL_INTERRUPT_PRIORITY的中斷
    的頭像 發(fā)表于 09-28 11:42 ?669次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b><b class='flag-5'>測(cè)試</b>實(shí)驗(yàn)

    指南】電容耐壓降額裕量不合理導(dǎo)致電容頻繁被擊穿

    指南】電容耐壓降額裕量不合理導(dǎo)致電容頻繁被擊穿
    的頭像 發(fā)表于 11-23 09:04 ?1996次閱讀
    【<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>】電容耐壓降額裕量不合理導(dǎo)致電容頻繁被擊穿
    RM新时代网站-首页