日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> HDSC/華大 >> 三分鐘學會國產(chǎn)低功耗華大單片機四(多種調(diào)試方法及printf輸出)

三分鐘學會國產(chǎn)低功耗華大單片機四(多種調(diào)試方法及printf輸出)

關鍵字:小華單片機 作者: 來源: 發(fā)布時間:2020-06-08  瀏覽:94

工程師做單片機軟件開發(fā)的時候必然要對所寫的軟件進行驗證。其實就是我們讓寫的程序跑起來通過一定的手段來觀察MCU的CPU與寄存器是否與我們的理論值相同的操作。通常采用的手段有如下幾種:

  1. 仿真器(如J-link等)仿真;
  2. IO口指示;
  3. 液晶屏信息輸出;
  4. 串口輸出。

以上幾種方法中方法1仿真器仿真最直接,在仿真環(huán)境中可以清楚明確的看到自己想要的信息。但也有其局限性,如產(chǎn)品把芯片的引腳全部占滿在調(diào)試最后的功能時正好用到了仿真的引腳;有些芯片進入低功耗模式為了降低功耗會關掉仿真接口等等。方法2最容易實現(xiàn),只需在調(diào)試的時候使用MCU某一引腳為輸出,程序中讀取想要的內(nèi)容做判斷后在這個引腳輸出即可。我們可以用示波器量這個引腳的電平,或直接接個指示燈來觀察就可以。方法3的使用比較受限,比較適合有LCD顯示的產(chǎn)品。方法4串口輸出的方法是我們今天的重點。

就像前面所說的當仿真接口不方便的時候可以用串口來調(diào)試,那有沒有什么情況下串口調(diào)試效率會比仿真器高呢?答案是肯定的。舉個例子,做平衡系統(tǒng)時調(diào)節(jié)PID參數(shù),我們是會選擇 修改參數(shù)–>編譯–>燒錄–>運行–>修改…,還是做一個功能可以一邊運行一邊修改參數(shù)呢?顯然一邊運行一邊修改效率會高很多,而通常的仿真器仿真時都要設置斷點來觀察值,如果要修改參數(shù),則要重新編譯–>燒錄–>運行,想要邊運行邊修改很難,F(xiàn)在的應用開發(fā)都講究交互試設計,我們在調(diào)試程序的時候是否也可以呢?還用上面的例子,我們可以加下兩個按鍵分別定義為“加”和“減”用來修改參數(shù),當然不要這兩個按鍵也是可以的,只要把參數(shù)按一定的規(guī)律做變化就可以,參數(shù)和運行的結果都通過串口輸出,這樣我們就可以很直觀的看到哪組參數(shù)是合適的。

用串口輸出就要編寫串口代碼,大家知道如果用串口輸出的數(shù)據(jù)比較容易,但是不是很直觀,有沒有什么方法可以像我們學C語言時候直接用printf()。來輸出我們想要的內(nèi)容呢?這是個非常好的問題,華大單片機實現(xiàn)起來十分簡單。現(xiàn)在就以國產(chǎn)超低功耗華大單片機HC32F003為例向大家介紹如何來實現(xiàn)printf()的輸出。

還是用之前建立好的空工程,閑話少說直接上代碼。

#define DEBUG #include "gpio.h"int main(){ Clk_SetPeripheralGate(ClkPeripheralUart0, TRUE); //開UART0外設時鐘 Clk_SetPeripheralGate(ClkPeripheralBt, TRUE); //開定時器外設時鐘 Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE); //開GPIO外設時鐘#ifdef DEBUG Debug_UartInit(); //調(diào)試串口初始化#endif #ifdef DEBUG printf("This is a UART Test!"); //輸出調(diào)試內(nèi)容#endif while(1) { ; }}

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

本文旨在拋磚引玉,其余具體使用歡迎加群164973950交流。

?國產(chǎn)低功耗華大單片機主力型號如下:

HC32F003 HC32F005 HC32L110 HC32F030 HC32L136 HC32M140 HC32F146 HC32L150 HC32L156

芯片相關資料下載鏈接:https://blog.csdn.net/lvk/article/details/85260690

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

代碼很簡單先打開UART0,定時器,GPIO的外設時鐘,因為我們使用串口這三個外設是必須用到的。

第二部分如果定義了DEBUG則對調(diào)試串口進行初始化。初始化在ddl.c文件中完成。

可以看到串口用到了芯片的P35為TX引腳,特率為19200bps。

如果定義了DEBUG則輸出This is a UART Test!(這里的內(nèi)容根據(jù)實際需要自己來定義。)

通過USB轉TTL我們可以把數(shù)據(jù)傳到電腦上,在電腦中我們打開串口調(diào)試工具可以看到程序跑起來后我們收到的數(shù)據(jù)與理論值相同。如下圖所示:

我們在開發(fā)的時候只要在我們想要觀察結果的位置加上以下語句就可以

#ifdef DEBUG printf(); ????????????????????????????//輸出調(diào)試內(nèi)容#endif

當程序全部OK以后這部分語句也可以不進行刪除,只要把程序最開始的

#define DEBUG 語句注釋掉,程序中所有的調(diào)試語句都不參考最終程序的編譯,減小程序空間并提高程序運行效率。

其實在程序的開發(fā)過程中各種調(diào)試方法都有自己各自己的優(yōu)缺點,要根據(jù)實際的情況綜合運用最合適的調(diào)試方法,才能讓保證開發(fā)最高效的進行。 ???

編輯:admin  最后修改時間:2020-06-08

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

肇州县| 郁南县| 东乡县| 东至县| 淳化县| 迭部县| 福贡县| 县级市| 即墨市| 调兵山市| 常州市| 房产| 塔城市| 庄浪县| 山东省| 班戈县| 龙南县| 日喀则市| 望江县| 乐业县| 法库县| 宁乡县| 石屏县| 竹北市| 阿图什市| 湘乡市| 宣威市| 弥渡县| 霍州市| 辽中县| 大兴区| 隆林| 谢通门县| 昌都县| 张家界市| 桑日县| 醴陵市| 长乐市| 舟山市| 兰州市| 封丘县|