IAR調試EFM32單片機時(shí)的一些技巧
4)關(guān)于Call Stack(在工程中View>Call Stack)
本文引用地址:http://dyxdggzs.com/article/201812/396197.htm如下圖:

IAR集成環(huán)境產(chǎn)生大量的支持信息,這允許調試過(guò)程中在沒(méi)有運行損失的情況下顯示完整的函數調用鏈。這通常會(huì )幫助我們確定目前函數的上下文,跟蹤變量和參數中的不正確值的來(lái)源從而定位出現的問(wèn)題。
5)EFM_ASSERT宏的合理應用
EFM32的CMSIS庫中有一個(gè)宏被大量的應用,它的名字叫EFM_ASSERT。這個(gè)宏應用了2個(gè)參數,一個(gè)是__FILE__,一個(gè)是__LINE__,這在IAR中分別表示文件名和文件內的行號。這2個(gè)參數可以直接告訴我們出現問(wèn)題的文件和所在的行。
以下通過(guò)一個(gè)具體的EFM32代碼來(lái)看看以上提到的幾點(diǎn)的應用。

為了演示gpioSetup內部的問(wèn)題,我們可以把程序調試的起點(diǎn)直接設置到gpioSetup,如下圖:

然后全速運行程序,發(fā)現程序停在了assertEFM函數內部,通過(guò)View>Locals,如下圖:

可以看到問(wèn)題出在em_gpio.c的270行,該行正是GPIO_PinModeSet函數的第一個(gè)語(yǔ)句。
我們再通過(guò)View>Call Stack,如下圖:

可以快速的定位到問(wèn)題出在以下位置,如下圖:

作為主推低功耗的EFM32系列單片機,想要最終實(shí)現低功耗,除了硬件本身支持之外,合理的代碼也是很重要的。通過(guò)不斷的調試,我們可以更加準確的把握這一系列的單片機,也可以掌握很多的調試技巧,希望以后有更多的技巧分享給大家。
評論