亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

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

基于STM32CubeIDE的調(diào)試配置

茶話MCU ? 來(lái)源:茶話MCU ? 作者:茶話MCU ? 2022-10-08 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有人使用STM32芯片從事產(chǎn)品開(kāi)發(fā),代碼中有涉及到除以0操作。他們發(fā)現(xiàn)基于相同的代碼,使用不同IDE會(huì)出現(xiàn)不同結(jié)果。在IAR或ARM MDK環(huán)境下除以0操作所得結(jié)果為0,而在STM32CubeIDE環(huán)境下的運(yùn)行時(shí)則產(chǎn)生HardFault異常。他們對(duì)這個(gè)結(jié)果感覺(jué)很奇怪,甚至懷疑是不是CubeIDE環(huán)境有bug。

根據(jù)ARM內(nèi)核相關(guān)手冊(cè)描述,關(guān)于除以0事件或非對(duì)齊訪問(wèn)事件是否進(jìn)行捕捉并觸發(fā)異常是可以配置的。如下圖所示:

77fa8d4e-4609-11ed-96c9-dac502259ad0.png

其中,除以0事件由內(nèi)核的配置控制寄存器CCR的DIV_0_TRP控制。該位清0時(shí),系統(tǒng)不對(duì)除以0事件觸發(fā)異常,結(jié)合下面截圖描述得知,此時(shí)硬性返回0值作為結(jié)果。

78270e14-4609-11ed-96c9-dac502259ad0.png

也就是說(shuō),只有控制位配置為1并發(fā)生除以0事件時(shí)才觸發(fā)異常。另外,上圖最后一句明確說(shuō)明,復(fù)位后該位值為0.

結(jié)合客戶的描述,感覺(jué)在ARM MDK和IAR環(huán)境下,該位默認(rèn)值或者說(shuō)復(fù)位值為0,而STM32CubeIDE環(huán)境下該位復(fù)位默認(rèn)值則為1。這似乎有點(diǎn)說(shuō)不通。因?yàn)檫@個(gè)默認(rèn)復(fù)位值應(yīng)該是跟著內(nèi)核芯片走,不會(huì)跟著開(kāi)發(fā)環(huán)境走?!居脩舸a一樣】

我隨手找個(gè)STM32開(kāi)放板,先基于IAR環(huán)境做了個(gè)測(cè)試。在測(cè)試代碼里制造了除以0事件,的確沒(méi)有觸發(fā)異常,而且還返回了結(jié)果0。查看IAR開(kāi)發(fā)環(huán)境下了SCB->CCR->DIV_0_TRP控制位,如下圖所示,其值為0。結(jié)合內(nèi)核資料描述,這點(diǎn)跟測(cè)試結(jié)果吻合。

785fe806-4609-11ed-96c9-dac502259ad0.png

我嘗試將該控制位改為1后再運(yùn)行除以0代碼,立即觸發(fā)異常。如下圖所示:

78d129f8-4609-11ed-96c9-dac502259ad0.png

當(dāng)我將測(cè)試代碼轉(zhuǎn)到CubeIDE去調(diào)試,也馬上觸發(fā)異常,并明確提示發(fā)生除以0事件。

79974d36-4609-11ed-96c9-dac502259ad0.png

順便在SFR寄存器里查看SCB->CCR->DIV_0_TRP位的值,果真是1,見(jiàn)下圖:

7a49c754-4609-11ed-96c9-dac502259ad0.png

我在用戶代碼里并未對(duì)該控制位進(jìn)行改寫,按理其復(fù)位值應(yīng)該是0。難道哪里改寫它了?

我嘗試到STM32CubeIDE的用戶手冊(cè)UM2609找找,看看能否找到相關(guān)信息。在里面搜索DIV_0還真找到相關(guān)信息了。

7e8be52c-4609-11ed-96c9-dac502259ad0.png

這里的文字表明,調(diào)試狀態(tài)下關(guān)于除以0事件的異常捕獲是默認(rèn)使能的,目的是為了幫助用戶在調(diào)試時(shí)及時(shí)發(fā)現(xiàn)除以0異常。這個(gè)說(shuō)法沒(méi)毛病,問(wèn)題是在哪里對(duì)其使能置位的呢?ARM內(nèi)核復(fù)位后可是清零了的。

繼續(xù)查找相關(guān)信息,看到了該段文字上方有個(gè)截圖,如下圖所示:

7ee56ca0-4609-11ed-96c9-dac502259ad0.png

從上圖可以看出,關(guān)于除以0操作或非對(duì)齊訪問(wèn)是否觸發(fā)異常,這里可以選擇配置。在STM32CubeIDE調(diào)試狀態(tài)下,除以0操作的異常捕獲默認(rèn)被使能,基于該配置并在工程啟動(dòng)時(shí)借助調(diào)試部件修改了相關(guān)寄存器。

當(dāng)我把這個(gè)地方取消勾選后,使用前面相同代碼做驗(yàn)證調(diào)試,此時(shí)不再觸發(fā)異常并返回0值結(jié)果。到此,也就解釋了發(fā)生除以0操作時(shí),為什么STM32CubeIDE會(huì)出現(xiàn)與MDK、IAR不同的調(diào)試結(jié)果。

顯然,STM32CubeIDE默認(rèn)調(diào)試狀態(tài)下使能除以0事件的捕獲,這樣的確便于我們?cè)谡{(diào)試時(shí)就能及時(shí)發(fā)現(xiàn)除以0事件,若是不該出現(xiàn)的,趕緊查錯(cuò)糾錯(cuò),避免其發(fā)生。如果是允許出現(xiàn)的特別應(yīng)用場(chǎng)景,調(diào)試時(shí)可以通過(guò)CubeIDE配置關(guān)閉其異常捕獲。

相比其它IDE,STM32CubeIDE在這個(gè)地方顯得更為方便些。我們只需基于調(diào)試環(huán)境做簡(jiǎn)單的勾選即完成修改,每次程序啟動(dòng)時(shí)即生效,在IAR、ARM MDK環(huán)境下往往需要事先添加用戶代碼修改SCB->CCR寄存器內(nèi)容。

講到這里,我要特別提醒下,對(duì)于除以0事件或?qū)R事件的捕獲與否,最終取決于用戶代碼。

STM32CubeIDE只是在調(diào)試狀態(tài)下根據(jù)配置修改了相關(guān)控制寄存器位,不等于用戶代碼對(duì)其做了修改。

前面提過(guò),除以0事件相關(guān)寄存器控制位復(fù)位后默認(rèn)值為0,即默認(rèn)不觸發(fā)除以0異常。如果說(shuō)CubeIDE的調(diào)試配置跟其芯片復(fù)位后默認(rèn)值一致倒沒(méi)什么,如果CubeIDE里的調(diào)試配置是使能除以0異常的捕獲,而在用戶代碼里卻沒(méi)有相應(yīng)實(shí)現(xiàn)代碼,這時(shí)代碼運(yùn)行若有除以0事件,調(diào)試時(shí)自然可以發(fā)現(xiàn),但全速運(yùn)行時(shí)還是不會(huì)觸發(fā)異?!敬藭r(shí)代碼運(yùn)行脫離了調(diào)試組件】。所以,要保證全速運(yùn)行時(shí)也能對(duì)除以0事件進(jìn)行異常捕獲,我們終究還得在用戶代碼里對(duì)SCB->CCR寄存器的DIV_0_TRP位進(jìn)行置位。

STM32CubeIDE這里的調(diào)試配置為我們提供了方便,同時(shí)個(gè)人認(rèn)為其默認(rèn)的調(diào)試配置也是合理的,畢竟并非所有人都知道芯片復(fù)位后默認(rèn)除以0事件不觸發(fā)異常,當(dāng)然,一般來(lái)講編譯時(shí)會(huì)有警告。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    462

    文章

    53293

    瀏覽量

    455762
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5505

    瀏覽量

    128422
  • STM32
    +關(guān)注

    關(guān)注

    2302

    文章

    11103

    瀏覽量

    370112

原文標(biāo)題:關(guān)于除以0異常捕獲的配置話題

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32CubeIDE入門教程 STM32CubeIDE安裝使用教程

    STM32CubeIDE是一個(gè)高級(jí)C / C ++開(kāi)發(fā)平臺(tái),具有用于STM32微控制器和微處理器的外設(shè)配置,代碼生成,代碼編譯和調(diào)試功能。它基于Eclipse??/ CDT框架和GCC
    的頭像 發(fā)表于 06-08 09:19 ?1.2w次閱讀
    <b class='flag-5'>STM32CubeIDE</b>入門教程 <b class='flag-5'>STM32CubeIDE</b>安裝使用教程

    STM32CubeIDE SWV功能介紹

    01 引言 STM32CubeIDE是ST官方推出的集成開(kāi)發(fā)環(huán)境,集成了很多STM32調(diào)試與開(kāi)發(fā)工具。本文主要介紹如何使用SWV功能來(lái)打印輸出。 02 問(wèn)題描述 客戶使用STM32CubeI
    的頭像 發(fā)表于 10-13 14:20 ?4622次閱讀
    <b class='flag-5'>STM32CubeIDE</b> SWV功能介紹

    Ubuntu 18.04 安裝 STM32CubeIDE 小記

    Ubuntu 18.04 安裝 STM32CubeIDE 小記
    發(fā)表于 11-18 17:36 ?9次下載
    Ubuntu 18.04 安裝 <b class='flag-5'>STM32CubeIDE</b> 小記

    STM32CUBEIDE的那些事】第三章:STM32CUBEIDE工程下的ADC DMA配置

    第三章:STM32CUBEIDE工程下的ADC DMA配置簡(jiǎn)述1、芯片選型&創(chuàng)建工程2、芯片工程配置1)配置系統(tǒng)外部晶振&仿真引腳
    發(fā)表于 11-30 11:36 ?2次下載
    【<b class='flag-5'>STM32CUBEIDE</b>的那些事】第三章:<b class='flag-5'>STM32CUBEIDE</b>工程下的ADC DMA<b class='flag-5'>配置</b>

    STM32CubeIDE使用

    參考STM32CubeIDE屬于一站式工具,本文帶你體驗(yàn)它的強(qiáng)大第一個(gè)STM32CubeIDE項(xiàng)目STM32CubeIDE使用記錄STM32CubeIDE使用筆記(03):使用ST-L
    發(fā)表于 12-02 17:21 ?29次下載
    <b class='flag-5'>STM32CubeIDE</b>使用

    STM32CubeIDE初識(shí)

    STM32CubeIDE初識(shí)
    發(fā)表于 12-02 18:36 ?23次下載
    <b class='flag-5'>STM32CubeIDE</b>初識(shí)

    STM32CubeIDE安裝-NSIS Error問(wèn)題

    STM32CubeIDE安裝-NSIS Error問(wèn)題
    發(fā)表于 12-03 21:06 ?18次下載
    <b class='flag-5'>STM32CubeIDE</b>安裝-NSIS Error問(wèn)題

    STM32CubeIDE的MCU開(kāi)發(fā)

    以前做stm32嵌入式開(kāi)發(fā)均使用的是破解版的keil軟件,現(xiàn)在工作需要無(wú)法按照此步驟進(jìn)行,最近針對(duì)ST官方免費(fèi)軟件STM32CubeIDE進(jìn)行了相關(guān)調(diào)研工作。1 STM32CubeIDE簡(jiǎn)介目前主流
    發(fā)表于 12-05 12:21 ?25次下載
    <b class='flag-5'>STM32CubeIDE</b>的MCU開(kāi)發(fā)

    STM32CubeIDE所支持的幾個(gè)調(diào)試小工具及功能

    意法半導(dǎo)體ST公司為廣大STM32用戶免費(fèi)提供了基于GCC的功能強(qiáng)大集成調(diào)試工具STM32CubeIDE。這里簡(jiǎn)單演示下STM32CubeIDE所支持的幾個(gè)
    的頭像 發(fā)表于 07-11 09:59 ?4479次閱讀

    STM32CUBEIDE(1)----安裝

    概述 STM32CubeIDE是一體式多操作系統(tǒng)開(kāi)發(fā)工具,是STM32Cube軟件生態(tài)系統(tǒng)的一部分。 STM32CubeIDE是一種高級(jí)C/C++開(kāi)發(fā)平臺(tái),具有STM32微控制器和微處
    的頭像 發(fā)表于 11-22 09:52 ?2063次閱讀
    <b class='flag-5'>STM32CUBEIDE</b>(1)----安裝

    STM32CubeIDE安裝指南

    電子發(fā)燒友網(wǎng)站提供《STM32CubeIDE安裝指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-01 15:44 ?6次下載
    <b class='flag-5'>STM32CubeIDE</b>安裝指南

    巧用 STM32CubeIDE 之編譯警告

    巧用 STM32CubeIDE 之編譯警告
    的頭像 發(fā)表于 10-25 16:33 ?1694次閱讀
    巧用 <b class='flag-5'>STM32CubeIDE</b> 之編譯警告

    STM32CubeIDE實(shí)用技巧之配置Heap空間

    STM32CubeIDE實(shí)用技巧之配置Heap空間
    的頭像 發(fā)表于 10-31 17:30 ?1704次閱讀
    <b class='flag-5'>STM32CubeIDE</b>實(shí)用技巧之<b class='flag-5'>配置</b>Heap空間

    STM32CubeIDE實(shí)用技巧之配置堆空間

    電子發(fā)燒友網(wǎng)站提供《STM32CubeIDE實(shí)用技巧之配置堆空間.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 15:07 ?8次下載
    <b class='flag-5'>STM32CubeIDE</b>實(shí)用技巧之<b class='flag-5'>配置</b>堆空間

    STM32CubeIDE使用教程

    內(nèi)容詳細(xì),適合轉(zhuǎn)向STM32CubeIDE,它免費(fèi),沒(méi)有代碼容量限制
    發(fā)表于 09-02 16:16 ?2次下載