伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

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

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

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

單片機(jī)調(diào)試過(guò)程中的調(diào)試組件導(dǎo)致的問(wèn)題

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

掃碼添加小助手

加入工程師交流群

?在我們的單片機(jī)調(diào)試過(guò)程中,經(jīng)常會(huì)遇到類似如下因第3只眼而導(dǎo)致的問(wèn)題。何謂第3只眼呢?不妨先看看幾個(gè)實(shí)例就知道了。

第一個(gè)案例,與ADC轉(zhuǎn)換標(biāo)志位有關(guān)的問(wèn)題。遇到該問(wèn)題是一種較為頻繁的情形。

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

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

原來(lái),STM32芯片ADC的轉(zhuǎn)換結(jié)束標(biāo)志EOC位,具有讀清零的特性。當(dāng)你調(diào)試時(shí)打開外設(shè)寄存器顯示欄時(shí),那調(diào)試組件在不停的讀取它。當(dāng)你單步操作去讀取該標(biāo)志位時(shí)往往先被調(diào)試組件讀過(guò)了。即使它之前被置位過(guò),但因調(diào)試組件的讀取后又被清零。當(dāng)你單步慢悠悠去讀它時(shí),結(jié)果讀到的往往是0,你就查不到為1的那一刻,此時(shí)我們可能會(huì)傻傻的等和著急。

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

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

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

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

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

?因?yàn)樗_啟了UART寄存器顯示窗口,意味著調(diào)試組件在不停幫他讀了UART相關(guān)寄存器,其中包括DR和SR寄存器。當(dāng)他在中斷代碼里再去讀SR寄存器里的IDLE標(biāo)志位時(shí),讀回來(lái)的結(jié)果總是0,所以中斷程序沒法進(jìn)一步走下去。對(duì)于他這里,嚴(yán)格地說(shuō)是響應(yīng)了中斷,只是沒法進(jìn)一步進(jìn)入相關(guān)中斷服務(wù)代碼區(qū)。

其實(shí),對(duì)于stm32f2芯片UART的IDLE中斷請(qǐng)求標(biāo)志位的清零會(huì)遵循一個(gè)訪問(wèn)序列,即讀DR寄存器,然后讀SR寄存器就可將IDLE位清零。

o4YBAFwkl_WAf9s4AABN-9NNghQ511.png

當(dāng)然,解決上面問(wèn)題的辦法也很簡(jiǎn)單,調(diào)試跟蹤時(shí),將右邊UART的外設(shè)寄存器顯示欄關(guān)閉就好。

第三個(gè)案例,與讀取RTC日歷有關(guān)的問(wèn)題。一個(gè)較為隱蔽而容易誤導(dǎo)人的問(wèn)題。

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

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

查看其測(cè)試代碼,就是讀RTC的日歷,很簡(jiǎn)單。如下?:

while(1){

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

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

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

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

既然這里把調(diào)試組件稱之為第3只眼,那另外兩只眼呢?這個(gè)不難想到CPUDMA

聲明:本文內(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)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6078

    文章

    45540

    瀏覽量

    672456
  • adc
    adc
    +關(guān)注

    關(guān)注

    100

    文章

    7796

    瀏覽量

    556639

原文標(biāo)題:?jiǎn)纹瑱C(jī)調(diào)試過(guò)程中的第3只眼

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    單片機(jī)串口模塊調(diào)試方法

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

    USMART調(diào)試過(guò)程是怎樣的

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

    5G14433和MCS-51單片機(jī)接口電路的調(diào)試過(guò)程

    通過(guò)5G14433芯片與MCS一51單片機(jī)接rm電路的實(shí)例,說(shuō)明了硬件電路的調(diào)試過(guò)程
    發(fā)表于 11-12 14:36 ?23次下載

    電源設(shè)計(jì)調(diào)試過(guò)程中的異常現(xiàn)象分析

    調(diào)試過(guò)程中所看到的一些異常現(xiàn)象,以及后來(lái)的解決辦法。其實(shí)很多工程師認(rèn)為設(shè)計(jì)電源是非常重經(jīng)驗(yàn)的一門技術(shù),要見多識(shí)廣。這種經(jīng)
    發(fā)表于 10-09 10:49 ?1988次閱讀

    單片機(jī)開發(fā)過(guò)程中硬件調(diào)試技巧

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

    單片機(jī)驅(qū)動(dòng)DM9000網(wǎng)卡芯片詳細(xì)調(diào)試過(guò)程

    單片機(jī)驅(qū)動(dòng)DM9000網(wǎng)卡芯片詳細(xì)調(diào)試過(guò)程
    發(fā)表于 11-02 11:03 ?0次下載

    淺析STM32調(diào)試過(guò)程中的幾個(gè)相關(guān)問(wèn)題

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

    使用單片機(jī)驅(qū)動(dòng)DM9000網(wǎng)卡芯片的詳細(xì)調(diào)試過(guò)程資料免費(fèi)下載

    本文主要介紹單片機(jī)驅(qū)動(dòng)DM9000E網(wǎng)卡芯片的詳細(xì)過(guò)程。從網(wǎng)卡電路的連接,到網(wǎng)卡初始化相關(guān)程序調(diào)試,再到ARP協(xié)議的實(shí)現(xiàn),一步一步詳細(xì)介紹調(diào)試過(guò)程。如果有時(shí)間也會(huì)把UDP和TCP通訊實(shí)
    發(fā)表于 08-27 17:30 ?16次下載
    使用<b class='flag-5'>單片機(jī)</b>驅(qū)動(dòng)DM9000網(wǎng)卡芯片的詳細(xì)<b class='flag-5'>調(diào)試過(guò)程</b>資料免費(fèi)下載

    STM32單片機(jī)OBG調(diào)試接口的介紹

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

    OBG調(diào)試接口在單片機(jī)的應(yīng)用解析

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

    電磁流量計(jì)調(diào)試過(guò)程中存在的問(wèn)題以及解決措施

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

    單片機(jī)常用的調(diào)試方法

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

    單片機(jī)開發(fā)調(diào)試工具有哪些?

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

    STMCU應(yīng)用過(guò)程中與電源相關(guān)的案例分享

    我們?cè)趶氖耂TM32單片機(jī)的應(yīng)用開發(fā)及調(diào)試過(guò)程中,往往會(huì)碰到各類異常。其中有不少比例的問(wèn)題跟電源有關(guān)。
    的頭像 發(fā)表于 08-04 14:52 ?1387次閱讀
    STMCU應(yīng)用<b class='flag-5'>過(guò)程中</b>與電源相關(guān)的案例分享

    單片機(jī)基本io功能調(diào)試過(guò)程

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