遇到HardFault_Handler時,往往不知所措,一般情況是心態崩了,閑話少說,如何解決問題才是關鍵!
第一種辦法是:keil在debug的時候,有call stack窗口,它的作用是記錄程序進出堆棧的過程,通過查看里面的內容,找到死機前函數的調用過程,往往問題就在這附近!但是有的時候調出call stack窗口時,里面除了HardFault_Handler沒有別的(是不是心態崩了,剛剛告訴你一個救命稻草,啪,稻草斷了)。為什么沒有東西,我現在也不太清楚,但是我嘗試過換個jlink、重新裝個新版keil都不起作用,大家知道的話可以給我留言!這種方法不行,可以試試第二種方法。
第二種方法是:查看register,sp,調出memory1........這方法嘗試過,但是沒有深入理解精髓,就不細談了,詳細操作請查看他人文章吧
第三種方法是:排除法,一點點注釋代碼,直到注釋到它后,程序正常運行了,就知道是它出了問題,這個需要耐心,我在調試的過程中,函數嵌套比較多,我就一層一層排查,最終即使你在在怎么不相信會是它出了問題,那就是它出了問題!這就是反向思維,按照正常的邏輯(我們以為正確的),到最后卻是錯了,那你怎么可能通過正向思維找到問題呢!!!
未完待續...........
調試是們學問,找出發現的問題,需要耐心,保持心態,這是一門內功,慢慢領悟吧!