文章插圖

文章插圖
在做開發的前幾年,基本上都沒用仿真,有bug就嘗試改程序,一邊改一邊調試 。
甚至都還不知道硬件仿真存在的價值,因為一直都沒用過,而且很多芯片也不支持 。
直到有一次在做行車記錄儀項目的時候,接觸到了GRAIN公司的一款單片機 。
本來我打算是直接開干的,但是老大非要我把這個芯片的仿真環境搭好 。
于是我就開始網上搜集資料,不得不說這塊的資料真少,那時又剛接觸仿真這塊的 。
搞了將近半個月都搞不定,然后我鼓起勇氣跟老大說,仿真搞不出來,要不我就直接開始寫程序燒錄進去調試算了 。
但是老大的意思還是希望我把仿真的環境搭建出來,我又試了2個星期,還是不行,于是就不理他了,直接開始寫程序調試 。
如果沒浪費時間研究怎么搭建調試環境,估計我程序都完成40%-50%了 。
過了一個星期,確實我也把程序跑起來了,在屏上顯示了一些UI,老大問我仿真搞定了?
我說沒有,跟他說沒仿真也能調啊,為什么一定要用仿真?
老大只是笑了笑沒說話,我也不解他具體是幾個意思,不過后面這個項目沒完全做完就跳槽了(不是因為仿真的事情) 。
直到后面,我在做一些比較復雜的主機程序的時候,我才理解老大當初為什么叫我一定讓我把仿真環境搭建出來 。
因為通過硬件仿真開發效率至少比沒有仿真高很多!
我來舉個簡單的例子,比如說我要看一個指針指向的地址 。
如果我要看指針指向的地址到底是多少,如果有屏和串口還好,可以通過屏或者串口打印出來 。
不過這個過程也需要改程序,調試完以后再把程序注釋,還是比較麻煩 。
而用仿真的話,直接在keil上面把鼠標移動到指針的位置就能直接看到地址 。
這就是效率的差別 。
所以,仿真的功能在寫一些復雜的產品程序的時候太重要了!
下面,我給大家分享下,stm32怎么用keil進行仿真 。
keil調試工具設置
這一步是選擇我們使用的仿真器,一般有jtag和st-link,其中st-link實際產品用的最多,所以以這個為主 。
板子上電,并且st-link連接到板子 。
一般來說,我們調試程序的時候就是通過這種方式 。
這個時候,我們看watch窗口a的值,也就是”3”標識的那里,臥槽,怎么沒值出來?a這個時候不是應該等于0xAA嗎?
別著急,這個是編譯器的問題,a定義的是局部變量,編譯器把局部變量優化了,并沒有在內存中生成導致 。
解決辦法有兩種:
1.調節keil的優化等級
這個大家可以自行度娘,一般我不去改,以免產生別的驚喜 。
2.把a改成全局變量
上面是仿真看變量,下面仿真看看硬件 。
學完這兩種基本的仿真調試方法,其他的騷操作就靠大家自行發揮啦 。
如果大家有什么更好的調試方法也歡迎來告訴我們無際單片機編程團隊 。
實際的產品調試比這個還要復雜一些,調試過程中也會碰到一些問題 。
比如一點單步執行,程序就一直執行,問題千奇百怪,這里說不完 。
其實這種問題也很好解決,直接把問題現象在度娘搜一下就可以了,肯定會有人碰到并提供解決的辦法 。
我一直以來都是這樣去解決問題的 。
- 如何做好精細化運營 用戶精細化運營包括哪些內容
- rar密碼解壓 破解 rar解壓密碼如何破
- 如何根除文件夾exe病毒Windows 7 如何清除文件夾exe病毒
- 平板電腦怎么玩pc游戲 平板電腦如何玩
- 感情逐漸淡化,如何重燃激情 冷淡期重新擁有激情的方法有哪些
- 得知他妻子的出軌后 知道老婆出軌的男人如何處理
- ipad屏保時間怎么設置 如何設置ipad屏保時間
- 如何測量網速是多少M 如何測量網速?
- keil的注冊機 如何破解keil5
- 香腸如何吃
