1、使用CubeMx配置NVIC時(shí)為何不見子優(yōu)先級(jí)選項(xiàng)?
有些STM32用戶,尤其是那些用過基于ARM Cortx-M3/M4/M7內(nèi)核的STM32 MCU的用戶,在使用基于M0/M0+內(nèi)核的STM32系列并通過STM32CubeMx進(jìn)行NVIC配置時(shí),不難發(fā)現(xiàn)一個(gè)問題,那就是怎么沒有中斷子優(yōu)先級(jí)【或稱響應(yīng)優(yōu)先級(jí)、副優(yōu)先級(jí)等】的配置?!【當(dāng)然,很多時(shí)候我們或許沒有關(guān)注子優(yōu)先級(jí)】如下圖所示,只看到搶占優(yōu)先級(jí)的配置,看不到子優(yōu)先級(jí)的配置項(xiàng)。
上圖是我基于STM32L0系列芯片的配置,該系列芯片是基于ARM Cortex-M0+內(nèi)核的。我們?cè)倏纯聪聢D的NVIC配置頁(yè)面,顯然可以看到搶占優(yōu)先級(jí)【PreemptionPriority】和子優(yōu)先級(jí)【Sub Priority】的配置項(xiàng)及相關(guān)信息。
上圖是我基于STM32G4系列芯片的NVIC配置頁(yè)面。該系列的內(nèi)核是ARM Cortex-M4。
當(dāng)我們使用STM32系列芯片并通過CubeMx圖形化工具進(jìn)行NVIC配置時(shí),相應(yīng)界面有無(wú)子優(yōu)先級(jí)的配置,取決于該系列芯片所用的ARM Cortex內(nèi)核。如果說所用STM32系列是基于ARM Cortex-M0或M0+內(nèi)核的,在進(jìn)行NVIC配置時(shí)是沒有子優(yōu)先級(jí)可以配置的。
ARM Cortex-M0或M0+內(nèi)核的中斷優(yōu)先級(jí)控制寄存器實(shí)際有效位就是2位,全部用來(lái)對(duì)各個(gè)中斷/異常做搶占優(yōu)先級(jí)配置,不額外劃分子優(yōu)先級(jí)的配置。
也就是說,基于ARM Cortex-M0或M0+內(nèi)核的STM32 MCU的NVIC配置不會(huì)有子優(yōu)先級(jí)的概念和配置,對(duì)于優(yōu)先級(jí)可配置的中斷而言,總共就4個(gè)可搶占優(yōu)先級(jí)。下圖是基于ARMCortex-M0或M0+內(nèi)核的STM32系列展示。當(dāng)然,STM32系列涉及的內(nèi)核很多,遠(yuǎn)不止下面這些,還有M4/M7/M33等。
而ARM Cortex -M3、M4、M7內(nèi)核的中斷優(yōu)先級(jí)配置寄存器的有效位為4位,同時(shí)還可以基于該4位做優(yōu)先級(jí)的分組,進(jìn)而引出搶占優(yōu)先級(jí)和子優(yōu)先級(jí)。
2、為什么基于STM32G0、STM32L0系列芯片里有VTOR而STM32F0系列又沒有?
用過STM32G0、STM32L0系列芯片并做過IAP操作時(shí),會(huì)發(fā)現(xiàn)該芯片里是有VTOR中斷矢量偏移控制寄存器的,可基于M0內(nèi)核的STM32F0系列芯片里卻沒有!
其實(shí),M0核與M0+核是有諸多差別的。STM32G0、STM32L0是基于M0+而來(lái),而STM32F0系列是基于M0核而成?;贛0+的STM32芯片里都有VTOR寄存器,而M0核里根本就沒有它。
知道了這點(diǎn),就不難理解基于STM32F0芯片做IAP時(shí)有些地方跟其它系列明顯不一樣。F0系列里要做一次矢量表的拷貝操作。
3、為什么基于Cortex-M3/M4的STM32芯片組織的用戶代碼移植到基于Cortex-M0/M0+的STM32芯片時(shí)為何會(huì)發(fā)生對(duì)齊錯(cuò)誤?
這是因?yàn)榛贑ortex-M3/M4的STM32芯片對(duì)數(shù)據(jù)訪問的對(duì)齊要求不那么嚴(yán)格,即使非對(duì)齊訪問也可以支持,當(dāng)然可能會(huì)犧牲訪問效率。而對(duì)于Cortex-M0/M0+的芯片則明確不支持對(duì)數(shù)據(jù)的非對(duì)齊訪問。顯然,我們?cè)O(shè)計(jì)代碼時(shí)盡量遵循對(duì)齊訪問便于移植。
因?yàn)閮?nèi)核的差異導(dǎo)致我們?cè)趹?yīng)用上的誤解或誤用,這也是常有的事情。我這里剛好就最近某STM32用戶咨詢的問題稍作整理,順便做個(gè)簡(jiǎn)單分享。
下面是部分Cortex-M內(nèi)核的NVIC特性差異對(duì)照表,有興趣的話可以看看。
該表格是我從The Definitiveguide to ARM Cortex-M0 and ARM Cortex-M0+ Processors文檔里提取而來(lái),分享給大家算是借花獻(xiàn)佛。
4、能不能在CubeMx配置界面將DMA中斷的默認(rèn)使能關(guān)閉?
這里再順便分享一個(gè)跟CubeMx配置有關(guān)的話題。目前來(lái)看,我相信對(duì)不少人還是有幫助的!
我們?cè)谑褂肅ubeMx對(duì)STM32芯片做初始化配置過程中,當(dāng)開啟某些外設(shè)的DMA功能時(shí),CubeMx會(huì)默認(rèn)開啟相關(guān)DMA的中斷使能。說實(shí)在,這個(gè)做法很多時(shí)候是必要的、有用的。但有時(shí)我們可能并不需要開啟相關(guān)DMA中斷,甚至?xí)驗(yàn)檫@個(gè)默認(rèn)開啟而給我們帶來(lái)調(diào)試上的困擾。
有些人不知如何基于CubeMx配置界面來(lái)關(guān)閉這個(gè)默認(rèn)的DMA中斷使能。其實(shí)很簡(jiǎn)單,就在上面提到過的NVIC配置界面里,將Force DMA channel…前的勾選項(xiàng)拿掉即可。見下面操作流程示意圖。
上一篇:STM32CubeIDE下配置STM32F103輸出帶死區(qū)的互補(bǔ)PWM波
下一篇:hc32和stm32 adc的區(qū)別
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- L6565 過載或短路鎖定關(guān)斷的典型應(yīng)用
- 使用 ON Semiconductor 的 KA7805E 的參考設(shè)計(jì)
- 具有開路檢測(cè)功能的 LT4256-3 正高壓熱插拔控制器的典型應(yīng)用
- ADR420 超精密、低噪聲、5.00 Vout XFET 電壓基準(zhǔn)作為可編程 DAC 基準(zhǔn)的典型應(yīng)用
- AM3GW-4815SZ 15V 3 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- LTM8073EY 5Vout 從 7Vin 到 60Vin 降壓轉(zhuǎn)換器的典型應(yīng)用電路
- NCP716MTTBGEVB,LDO 穩(wěn)壓器,WDFN-6 封裝,超低靜態(tài)電流評(píng)估板
- LT1764AET-1.5 SCR 預(yù)穩(wěn)壓器的典型應(yīng)用可提供跨線路變化的效率
- 用于儀表的 12 位、32 通道 DAC
- 使用 IXYS 的 LTC3454EDD 的參考設(shè)計(jì)
- e絡(luò)盟現(xiàn)貨供應(yīng)Connective Peripherals系列連接產(chǎn)品
- 一臺(tái)出色的振動(dòng)式物位開關(guān)是如何誕生的?
- 瑞薩電子解讀IIoT市場(chǎng):邊緣處理、連接、模擬及電源
- plc編程入門_如何學(xué)習(xí)PLC編程
- 網(wǎng)絡(luò)視頻監(jiān)控服務(wù)器將讓數(shù)據(jù)傳輸簡(jiǎn)易化
- 智能鎖的安全性能是否漏洞百出?
- 介紹用萬(wàn)用表辨別三極管/E極的方法
- CA8435三相電能質(zhì)量分析儀的特點(diǎn)及應(yīng)用范圍
- 磁浮子液位計(jì)的安裝要求及安裝方法
- 方案分享 | ARXML 規(guī)則下 ECU 總線通訊與 ADTF 測(cè)試方案
- 車載SerDes產(chǎn)業(yè)起飛!國(guó)產(chǎn)新品密集炸場(chǎng)
- 出貨量激增1.34倍! 5G車規(guī)模組成標(biāo)配,三大廠商新品同臺(tái)競(jìng)技
- 6月新能源市場(chǎng):零跑創(chuàng)新高;比亞迪海外突破;理想滑坡
- 基于中科芯車規(guī)MCU的LED矩陣大燈應(yīng)用方案
- 蘋果被判侵犯3G專利,需向西班牙公司TOT賠償1.1億美元
- 從設(shè)計(jì)概念到 FPGA 原型僅需數(shù)分鐘,印度 InCore 完成 SoC Generator 平臺(tái)硅驗(yàn)證
- 消息稱因難尋客戶,三星推遲美國(guó)芯片工廠的完工時(shí)間
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領(lǐng)先LTPO技術(shù)打造行業(yè)新標(biāo)桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動(dòng)駕駛安全性
- Basemark合作DMP為商用車研發(fā)智能鏡 可消除盲點(diǎn)/減少碰撞事故
- 新型電池負(fù)極材料石墨二炔 提升電池效率和穩(wěn)定性
- 起亞公布用于輕混車型的線控離合器技術(shù)
- 富士康積極布局移動(dòng)機(jī)器人,比亞迪也不甘落后
- 移動(dòng)機(jī)器人和仿生軟手結(jié)合實(shí)現(xiàn)完整的氣動(dòng)機(jī)器人系統(tǒng)
- 2011年ARM開發(fā)者大會(huì)系列:ARM Techcon系列之Mentor Graphics
- 2011年ARM開發(fā)者大會(huì)系列:ARM Techcon系列之飛思卡爾
- 利用STM32F4和Android控制六足機(jī)器人演示介紹
- 基于ARM Cortex M0+內(nèi)核的STM32 L0系列入門介紹
- 基于POSIX和Unix的多用戶、支持多線程和多CPU的操作系統(tǒng)