找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 11016|回復(fù): 1
收起左側(cè)

STM32系列MCU芯片開(kāi)關(guān)總中斷的話題

[復(fù)制鏈接]
ID:98618 發(fā)表于 2015-12-8 03:09 | 顯示全部樓層 |閱讀模式
整理:MilerShao

時(shí)不時(shí)會(huì)有人詢問(wèn)基于ARM CORTEX Mn 內(nèi)核的STM32各系列MCU芯片應(yīng)用開(kāi)發(fā)時(shí)開(kāi)、關(guān)總中斷的函數(shù)或指令的話題,尤其最近,頻繁有人問(wèn)起STM32F0系列 MCU關(guān)閉總中斷的問(wèn)題,其中有些人還是用過(guò)STM32F1系列芯片的,說(shuō)找不到相應(yīng)的函數(shù)。

隨著基于CORTEX Mn 各內(nèi)核的MCU芯片越來(lái)越多和相關(guān)編譯工具的升級(jí)換代,編譯工具在有關(guān)內(nèi)核指令操作的文檔安排及函數(shù)書寫等方面可能會(huì)發(fā)生些細(xì)微變化。 所以即使用過(guò)STM32F1系列產(chǎn)品的工程師,在使用較晚推出的STM32F0芯片開(kāi)發(fā)時(shí)發(fā)現(xiàn)那些跟內(nèi)核操作有關(guān)的指令或函數(shù)不知哪里去找了。以STM32各系列的標(biāo)準(zhǔn)固件庫(kù)為例,與內(nèi)核有關(guān)的指令及函數(shù)都可以在...\LIBRARIES\CMSIS\...后面目錄的相關(guān)文件里找到。于不同系列的標(biāo)準(zhǔn)固件庫(kù)中所對(duì)應(yīng)的子目錄及相關(guān)文件名略有差異。

一般來(lái)講,我們是不用或者說(shuō)用不著做總中斷的關(guān)閉動(dòng)作的,或許個(gè)別時(shí)刻可能真有需要。當(dāng)然也不排除部分人可能出于之前使用別的MCU開(kāi)發(fā)習(xí)慣或者好奇想知道怎么用。這里簡(jiǎn)單地分享下。

這個(gè)開(kāi)、關(guān)STM32芯片總中斷的指令,是針對(duì)ARM CORTEX內(nèi)核的操作指令。在各ARM內(nèi)核編程手冊(cè)上一定可以找到,但在STM32芯片相關(guān)技術(shù)手冊(cè)上是找不到的。開(kāi)、關(guān)總中斷的匯編指令分別就是CPSIE i、CPSID i,對(duì)于各個(gè)ARM CORTEX系列MCU芯片來(lái)說(shuō),都是一樣的。

目前各編譯工具都把與內(nèi)核相關(guān)ARM指令根據(jù)指令功能將其中某一條或幾條匯編指令封裝為C函數(shù),函數(shù)名相對(duì)更為直觀、好記,方便用戶需要時(shí)拿來(lái)使用。比方在ARM MDK環(huán)境下,上面兩個(gè)開(kāi)關(guān)總中斷的指令封裝成如下2個(gè)內(nèi)嵌函數(shù)。

1、關(guān)閉【或禁用】總中斷的指令函數(shù):

__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)

{

__ASM volatile ("cpsid i" : : : "memory");

}


2、開(kāi)啟【或使能】總中斷的指令函數(shù)【芯片復(fù)位后總中斷時(shí)默認(rèn)打開(kāi)的,即使能的】:

__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)

{

__ASM volatile ("cpsie i" : : : "memory");

}


需要關(guān)閉總中斷時(shí),在用戶代碼里直接放置 __disable_irq( );

需要開(kāi)啟總中斷時(shí),在用戶代碼里直接放置 __enable_irq( ); 。注意是下劃線是兩個(gè)橫杠。

回復(fù)

使用道具 舉報(bào)

ID:276663 發(fā)表于 2018-5-23 17:55 | 顯示全部樓層
為什么STM32在手冊(cè)里不寫這個(gè)啊,像51很清楚的。難道是有什么特殊原因??

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表