chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

單片機調試過程中的調試組件導致的問題

茶話MCU ? 來源:工程師曾玲 ? 2018-12-30 17:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?在我們的單片機調試過程中,經常會遇到類似如下因第3只眼而導致的問題。何謂第3只眼呢?不妨先看看幾個實例就知道了。

第一個案例,與ADC轉換標志位有關的問題。遇到該問題是一種較為頻繁的情形。

經常有人在做STM32 ADC應用,進行代碼單步調試時發(fā)現(xiàn),明明啟動了ADC轉換就是等不到轉換結束的那一刻,即總是檢測不到EOC等于1的時候。有時讓人直急得冒汗!比方類似下面的情形,開啟了ADC轉換指令,然后等待ADC轉換結束。

在那藍色圓圈的代碼處,查詢等待EOC等于1,可就是等不到它為1的時候。是怎么回事呢?

原來,STM32芯片ADC的轉換結束標志EOC位,具有讀清零的特性。當你調試時打開外設寄存器顯示欄時,那調試組件在不停的讀取它。當你單步操作去讀取該標志位時往往先被調試組件讀過了。即使它之前被置位過,但因調試組件的讀取后又被清零。當你單步慢悠悠去讀它時,結果讀到的往往是0,你就查不到為1的那一刻,此時我們可能會傻傻的等和著急。

?當然,如果你將右邊ADC外設寄存器顯示欄關閉就不會出現(xiàn)上述問題了。

第二個案例??,與UART狀態(tài)寄存器標志位有關的問題。遇到該問題也是較為頻繁的情形。

某STM32用戶使用STM32F2系列芯片的UART外設及相關功能。他發(fā)現(xiàn)明明接收完畢,發(fā)送標志TC位也置位了,可就是不進IDLE空閑中斷。當然,相關中斷使能都已正常使能無誤。實際情形是這樣的:

STM32F205的UART5發(fā)送指令(循環(huán)發(fā)送一個字節(jié)一個字節(jié)地發(fā))給wifi芯片,WiFi芯片會返回相應數(shù)據(jù)過來,所以,正常來講uart5會收到一幀數(shù)據(jù)之后應該進入串口接收IDLE中斷.這是客戶所期望的。

他將斷點打在UART中斷服務程序的檢查到IDLE中斷請求位等于1后的入口處。就像下面截圖的樣子。他甚至在右邊的UART寄存器顯示欄都看到IDLE被置位過的痕跡了,可就是進不到相關代碼里去,怎么回事呢?

?因為他開啟了UART寄存器顯示窗口,意味著調試組件在不停幫他讀了UART相關寄存器,其中包括DR和SR寄存器。當他在中斷代碼里再去讀SR寄存器里的IDLE標志位時,讀回來的結果總是0,所以中斷程序沒法進一步走下去。對于他這里,嚴格地說是響應了中斷,只是沒法進一步進入相關中斷服務代碼區(qū)。

其實,對于stm32f2芯片UART的IDLE中斷請求標志位的清零會遵循一個訪問序列,即讀DR寄存器,然后讀SR寄存器就可將IDLE位清零。

o4YBAFwkl_WAf9s4AABN-9NNghQ511.png

當然,解決上面問題的辦法也很簡單,調試跟蹤時,將右邊UART的外設寄存器顯示欄關閉就好。

第三個案例,與讀取RTC日歷有關的問題。一個較為隱蔽而容易誤導人的問題。

曾有人反饋說STM32F4和STM32L4的RTC脫機運行跑不起來,不運行。具體表現(xiàn)就是日歷時間不動、不更新。奇怪的是,調試時候不論單步還是全速運行,查看日歷寄存器都顯示正常運行,數(shù)據(jù)也正確。

可當燒錄代碼到芯片后,通過調試助手查看日歷的數(shù)據(jù)則原地不動了,感覺RTC沒有運行??蛻粲肧TM32F4和STM32L4的板都測試過,出現(xiàn)同樣問題。懷疑STM32F4和L4芯片的RTC是否有BUG【反正找不到原因了就想芯片bug?】。

查看其測試代碼,就是讀RTC的日歷,很簡單。如下?:

while(1){

HAL_RTC_GetTime(&hrtc,&rtcTime,RTC_FORMAT_BIN);?printf( ...... );HAL_Delay(1000);}

?從上面代碼不難看出就是不停地去讀當前的時、分、秒時間。STM32參考手冊在關于RTC日歷讀取操作部分有相關描述。為了讀取時間的一致性,讀取日歷操作要求先讀時分秒然后還得讀日期,這樣做為一個完整的操作。所以在讀取TIME【時分秒】后,硬件會將當前日歷值鎖住,直到讀取了日期寄存器。否則當你讀了TIME而不讀DATE的話,再去讀TIME時還是原來的值維持不變。顯然,客戶這里的代碼只有讀取TIME時間的語句,沒有讀取DATE日期的代碼。這是問題?根本原因之所在。

但是,為什么同樣代碼在調試情況下又能正常運行呢??那是因為他在調試時打開著RTC寄存器外設顯示窗口,雖然用戶代碼沒去讀DATE,但調試組件幫忙讀了DATE寄存器,所以感覺上一切風調雨順,也就沒能及時發(fā)現(xiàn)問題,一直到程序燒進芯片后才發(fā)現(xiàn)異常癥狀。

到此,結合上述3個案例的分享介紹,我們應該明白了那個第3只眼了,即調試組件。個別寄存器或寄存器位具有“讀則變”或“讀有效”的特性。我們在調試時候要注意類似細節(jié),調試時也不必時刻將那個外設寄存器顯示欄開啟掛在那里。其實,除了這個寄存器顯示欄外,我們還可以利用其它輸出,比方示波器、printf,或者WATCH窗口等來輔助觀察運行狀態(tài)或結果。

既然這里把調試組件稱之為第3只眼,那另外兩只眼呢?這個不難想到CPUDMA。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6067

    文章

    44992

    瀏覽量

    650510
  • adc
    adc
    +關注

    關注

    99

    文章

    6709

    瀏覽量

    549233

原文標題:單片機調試過程中的第3只眼

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    單片機串口模塊調試方法

    筆者在調試某Cortex-M3內核單片機時遇到一個問題,此單片機不具備在線仿真功能,因此調試代碼時只能使用UART輸出Log的方式調試
    發(fā)表于 07-28 15:48 ?1935次閱讀
    <b class='flag-5'>單片機</b>串口模塊<b class='flag-5'>調試</b>方法

    我用KEIL2編程調試過程中輸入SMOD無法編譯

    本帖最后由 eehome 于 2013-1-5 09:55 編輯 大家好,我今天在做51單片機串口調試過程中,遇到一個問題,設置串口波特率那里,本來輸入SMOD=0;表示串口波特率不加倍,可惜我輸入這條指令無法編譯,請問這是怎么回事?
    發(fā)表于 12-12 18:37

    USMART調試過程是怎樣的

    什么是USMART?USMART是正點原子團隊為其STM32開發(fā)平臺開發(fā)的一種類似linux的shell的調試工具。具體工作過程是通過串口發(fā)送命令給單片機,然后單片機收到命令之后調用
    發(fā)表于 01-13 06:41

    5G14433和MCS-51單片機接口電路的調試過程

    通過5G14433芯片與MCS一51單片機接rm電路的實例,說明了硬件電路的調試過程。
    發(fā)表于 11-12 14:36 ?23次下載

    電源設計調試過程中的異?,F(xiàn)象分析

    調試過程中所看到的一些異?,F(xiàn)象,以及后來的解決辦法。其實很多工程師認為設計電源是非常重經驗的一門技術,要見多識廣。這種經
    發(fā)表于 10-09 10:49 ?1846次閱讀

    單片機開發(fā)過程中硬件調試技巧

    本文結合作者在單片機開發(fā)過程中體會,討論硬件調試的技巧。當硬件設計從布線到焊接安裝完成之后,就開始進入硬件調試階段
    發(fā)表于 06-01 16:09 ?1.5w次閱讀

    單片機驅動DM9000網(wǎng)卡芯片詳細調試過程

    單片機驅動DM9000網(wǎng)卡芯片詳細調試過程
    發(fā)表于 11-02 11:03 ?0次下載

    淺析STM32調試過程中的幾個相關問題

    總的來講,單片機調試單片機開發(fā)工作必不可少的環(huán)節(jié)。不管你愿不愿意,調試過程中總會有各種不期而遇的問題出現(xiàn)在我們面前來磨礪我們。這里分享幾點STM32
    的頭像 發(fā)表于 01-21 13:50 ?5776次閱讀

    STM32單片機OBG調試接口的介紹

    OBG在單片機的解釋STM32單片機的內核(Cortex-M3)含有硬件調試模塊,支持多種復雜的調試操作,硬件
    的頭像 發(fā)表于 01-26 16:45 ?6065次閱讀
    STM32<b class='flag-5'>單片機</b><b class='flag-5'>中</b>OBG<b class='flag-5'>調試</b>接口的介紹

    OBG調試接口在單片機的應用解析

    OBG在單片機的解釋STM32單片機的內核(Cortex-M3)含有硬件調試模塊,支持多種復雜的調試操作,硬件
    發(fā)表于 03-30 15:19 ?2355次閱讀
    OBG<b class='flag-5'>調試</b>接口在<b class='flag-5'>單片機</b><b class='flag-5'>中</b>的應用解析

    電磁流量計調試過程中存在的問題以及解決措施

    對流量計內部設置參數(shù)進行仔細檢查,還需要調試顯示數(shù)據(jù)情況和信號反饋情況,查看它們是否處于正常運行狀態(tài)下。接下來就詳細介紹電磁流量計調試過程中存在的問題以及解決措施。
    的頭像 發(fā)表于 10-27 09:08 ?1786次閱讀

    單片機常用的調試方法

    單片機程序調試過程中,串口打印調試方法是非常重要的手段,在使用串口調試時,我們更多的是使用printf。但是下面我們不介紹printf,介紹一下另外幾種我們常用的
    的頭像 發(fā)表于 04-04 14:58 ?5630次閱讀

    單片機開發(fā)調試工具有哪些?

    單片機調試是一個有條不紊的過程,用于查找和減少單片機程序的錯誤數(shù)量,使其按預期工作。有時候,單片機
    的頭像 發(fā)表于 07-07 12:29 ?2007次閱讀

    STMCU應用過程中與電源相關的案例分享

    我們在從事STM32單片機的應用開發(fā)及調試過程中,往往會碰到各類異常。其中有不少比例的問題跟電源有關。
    的頭像 發(fā)表于 08-04 14:52 ?862次閱讀
    STMCU應用<b class='flag-5'>過程中</b>與電源相關的案例分享

    單片機基本io功能調試過程

    單片機基本IO功能的調試過程涉及多個步驟,旨在確保IO口能夠正確地執(zhí)行輸入和輸出操作。以下是一個調試過程,涵蓋了從準備階段到實際測試的關鍵步驟: 一、準備階段 確定單片機型號和IO口
    的頭像 發(fā)表于 09-14 14:38 ?1484次閱讀