查看: 3973|回復: 0
打印 上一主題 下一主題

STM系列(7)--STM32 上 RTOS 的中斷管理

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2017-2-20 15:55:04 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: 融創(chuàng )芯城


一. 中斷管理體系

圖1  STM32 的中斷服務(wù)


本文以STM32F1,F2,F3,F4 為例(采用Cortex-M3,M4 內核),內核支持中斷嵌套(最多可設置 256 個(gè)中斷優(yōu)先級)。STM32 只使用其中的16 個(gè)優(yōu)先級。


如圖 1 所示,RTOS 一般不會(huì )將優(yōu)先級分組,但是會(huì )設置為 3 類(lèi),優(yōu)先級最低的中斷(級別 15)由 SysTick,PendSV 所使用; 中斷級別8~14 的服務(wù)程序可以調用內核提供的進(jìn)程間通信函數,但是此 類(lèi)中斷服務(wù)程序會(huì )受到內核的影響,中斷響應可能被 推遲(在進(jìn)入臨界區后,CPU 會(huì )設置為忽略為 8~15 的優(yōu)先級中斷請求,但中斷控制器會(huì )鎖存這些請求,在告別臨界區后重新 打開(kāi)中斷便可立即產(chǎn)生 中斷請求);級別0~7 的中斷服務(wù)程序不使用內核提供的任何函數,即內核不會(huì )影響這些中斷,因此 其中斷延遲時(shí)間是非常短的。


  

. 中斷延遲的實(shí)例

  

1. 簡(jiǎn)

初始化GPIO PA0 為EXTI 中斷,進(jìn)入臨界區后按PA0(中斷源),中斷不會(huì )即時(shí)響應,離開(kāi)臨界區 后此中斷會(huì )被響應。

/* 配置 PA0 為 EXTI 中斷 */
EXTILine0_Config();
CPU_SR_Save(); // 進(jìn)入臨界區
for (i=0;i<200;i++)
{
for (j=0;j<50000;j++);
}
CPU_SR_Restore(); //離開(kāi)臨界區

臨界區實(shí)現如下,此臨界區實(shí)現屏蔽掉所有中斷優(yōu)先級的中斷,注意在M3/M4 內核下,可以屏蔽一定 級別的中斷。

__asm void CPU_SR_Save(void)
{ M
RS R0, PRIMASK ; Set prio int mask to mask all (except faults)
CPSID I
BX LR
}
__asm void CPU_SR_Restore(void)
{
MSR PRIMASK, R0
BX LR
}

融創(chuàng )芯城與ST建立倉儲物流合作,亞太區ST MCU開(kāi)發(fā)工具,融創(chuàng )芯城獨家負責倉儲、發(fā)放!親,這樣實(shí)力雄厚的企業(yè),它的拉人注冊享豪禮,你還猶豫什么?抓緊拉人注冊,享受做小股東的樂(lè )趣!


三.FreeRTOS 下的設置

FreeRTOSConfig.h 中

#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY        0xf
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY   8

文章來(lái)源:微信公眾號   融創(chuàng )芯城(一站式電子元器件、PCB、PCBA購買(mǎi)服務(wù)平臺,項目眾包平臺,方案共享平臺)


您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页