色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32CubeIDE的調試配置

茶話MCU ? 來源:茶話MCU ? 作者:茶話MCU ? 2022-10-08 10:01 ? 次閱讀

有人使用STM32芯片從事產品開發,代碼中有涉及到除以0操作。他們發現基于相同的代碼,使用不同IDE會出現不同結果。在IAR或ARM MDK環境下除以0操作所得結果為0,而在STM32CubeIDE環境下的運行時則產生HardFault異常。他們對這個結果感覺很奇怪,甚至懷疑是不是CubeIDE環境有bug。

根據ARM內核相關手冊描述,關于除以0事件或非對齊訪問事件是否進行捕捉并觸發異常是可以配置的。如下圖所示:

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

其中,除以0事件由內核的配置控制寄存器CCR的DIV_0_TRP控制。該位清0時,系統不對除以0事件觸發異常,結合下面截圖描述得知,此時硬性返回0值作為結果。

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

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

結合客戶的描述,感覺在ARM MDK和IAR環境下,該位默認值或者說復位值為0,而STM32CubeIDE環境下該位復位默認值則為1。這似乎有點說不通。因為這個默認復位值應該是跟著內核芯片走,不會跟著開發環境走。【用戶代碼一樣】

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

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

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

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

當我將測試代碼轉到CubeIDE去調試,也馬上觸發異常,并明確提示發生除以0事件。

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

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

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

我在用戶代碼里并未對該控制位進行改寫,按理其復位值應該是0。難道哪里改寫它了?

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

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

這里的文字表明,調試狀態下關于除以0事件的異常捕獲是默認使能的,目的是為了幫助用戶在調試時及時發現除以0異常。這個說法沒毛病,問題是在哪里對其使能置位的呢?ARM內核復位后可是清零了的。

繼續查找相關信息,看到了該段文字上方有個截圖,如下圖所示:

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

從上圖可以看出,關于除以0操作或非對齊訪問是否觸發異常,這里可以選擇配置。在STM32CubeIDE調試狀態下,除以0操作的異常捕獲默認被使能,基于該配置并在工程啟動時借助調試部件修改了相關寄存器。

當我把這個地方取消勾選后,使用前面相同代碼做驗證調試,此時不再觸發異常并返回0值結果。到此,也就解釋了發生除以0操作時,為什么STM32CubeIDE會出現與MDK、IAR不同的調試結果。

顯然,STM32CubeIDE默認調試狀態下使能除以0事件的捕獲,這樣的確便于我們在調試時就能及時發現除以0事件,若是不該出現的,趕緊查錯糾錯,避免其發生。如果是允許出現的特別應用場景,調試時可以通過CubeIDE配置關閉其異常捕獲。

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

講到這里,我要特別提醒下,對于除以0事件或對齊事件的捕獲與否,最終取決于用戶代碼。

STM32CubeIDE只是在調試狀態下根據配置修改了相關控制寄存器位,不等于用戶代碼對其做了修改。

前面提過,除以0事件相關寄存器控制位復位后默認值為0,即默認不觸發除以0異常。如果說CubeIDE的調試配置跟其芯片復位后默認值一致倒沒什么,如果CubeIDE里的調試配置是使能除以0異常的捕獲,而在用戶代碼里卻沒有相應實現代碼,這時代碼運行若有除以0事件,調試時自然可以發現,但全速運行時還是不會觸發異常【此時代碼運行脫離了調試組件】。所以,要保證全速運行時也能對除以0事件進行異常捕獲,我們終究還得在用戶代碼里對SCB->CCR寄存器的DIV_0_TRP位進行置位。

STM32CubeIDE這里的調試配置為我們提供了方便,同時個人認為其默認的調試配置也是合理的,畢竟并非所有人都知道芯片復位后默認除以0事件不觸發異常,當然,一般來講編譯時會有警告。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    455

    文章

    50851

    瀏覽量

    423904
  • 寄存器
    +關注

    關注

    31

    文章

    5343

    瀏覽量

    120425
  • STM32
    +關注

    關注

    2270

    文章

    10901

    瀏覽量

    356195

原文標題:關于除以0異常捕獲的配置話題

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    STM32CubeIDE軟件實現STM32外部中斷實例

    本文用STM32CubeIDE軟件實現STM32外部中斷實例。
    的頭像 發表于 08-24 09:09 ?4372次閱讀

    STM32CubeIDE SWV功能介紹

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

    Ubuntu 18.04 安裝 STM32CubeIDE 小記

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

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

    第三章:STM32CUBEIDE工程下的ADC DMA配置簡述1、芯片選型&創建工程2、芯片工程配置1)配置系統外部晶振&仿真引腳
    發表于 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屬于一站式工具,本文帶你體驗它的強大第一個STM32CubeIDE項目STM32CubeIDE使用記錄STM32CubeIDE使用筆記(03):使用ST-L
    發表于 12-02 17:21 ?29次下載
    <b class='flag-5'>STM32CubeIDE</b>使用

    STM32CubeIDE初識

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

    STM32CubeIDE安裝-NSIS Error問題

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

    STM32CubeIDE的MCU開發

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

    STM32CubeIDE所支持的幾個調試小工具及功能

    意法半導體ST公司為廣大STM32用戶免費提供了基于GCC的功能強大集成調試工具STM32CubeIDE。這里簡單演示下STM32CubeIDE所支持的幾個
    的頭像 發表于 07-11 09:59 ?3294次閱讀

    STM32CUBEIDE(1)----安裝

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

    STM32CubeIDE安裝指南

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

    巧用 STM32CubeIDE 之編譯警告

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

    STM32CubeIDE實用技巧之配置Heap空間

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

    STM32CubeIDE實用技巧之配置堆空間

    電子發燒友網站提供《STM32CubeIDE實用技巧之配置堆空間.pdf》資料免費下載
    發表于 09-19 15:07 ?8次下載
    <b class='flag-5'>STM32CubeIDE</b>實用技巧之<b class='flag-5'>配置</b>堆空間
    主站蜘蛛池模板: 仓井空torrent| free俄罗斯性xxxxhd派对| 亚洲精品在线不卡| 双性被疯狂灌满精NP| 窝窝影院午夜看片毛片| 色戒床震视频片段| 亚洲精品九色在线网站| 成人在线小视频| 娇小8一12xxxx第一次| 久久精品电影| 亚洲黄色在线观看| 国产毛片女人高潮叫声| 精品亚洲国产熟女福利自在线| 十分钟免费视频大全在线| yellow视频免费观看高清在线| 国产精品一久久香蕉国产线看| 日本精品久久久久中文字幕 1| 亚洲欧美日本中文子不卡| 国产免费阿v精品视频网址| 视频一区国产在线二区| 国产成人在线小视频| 老色69久久九九精品高潮| 热热久久超碰精品中文字幕 | 精品无人区麻豆乱码1区2| 亚洲午夜精品A片久久WWW软件| WW.国产人妻人伦精品| 欧美亚洲精品午夜福利AV| 亚洲精品自在在线观看| 九九久久精品国产| 中文在线中文资源| 国产第81页| 亚州综人网| bl(高h)文| 三级网址在线| 国精产品一区一区三区有限| 伊人精品视频直播| 国产三级影院| 伊人国产在线播放| 能看的黄页最新网站| 最近中文字幕高清中文字幕MV| 妺妺窝人体色777777野大粗 |