2) 使能SWO輸出
使能SWO輸出。最簡單的辦法就是將如下的函數(shù)拷貝到你的工程里面,并且在mian函數(shù)初始化之后調(diào)用該函數(shù)。
void setupSWO(void)
{
uint32_t *dwt_ctrl = (uint32_t *) 0xE0001000;
uint32_t *tpiu_prescaler = (uint32_t *) 0xE0040010;
uint32_t *tpiu_protocol = (uint32_t *) 0xE00400F0;
CMU->HFPERCLKEN0 |= CMU_HFPERCLKEN0_GPIO;
GPIO->ROUTE |= GPIO_ROUTE_SWOPEN;
#if defined(_EFM32_GIANT_FAMILY)
GPIO->ROUTE = (GPIO->ROUTE &~(_GPIO_ROUTE_SWLOCATION_MASK)) | GPIO_ROUTE_SWLOCATION_LOC0;
GPIO->P[5].MODEL &= ~(_GPIO_P_MODEL_MODE2_MASK);
GPIO->P[5].MODEL |= GPIO_P_MODEL_MODE2_PUSHPULL;
#else
GPIO->ROUTE = (GPIO->ROUTE &~(_GPIO_ROUTE_SWLOCATION_MASK)) | GPIO_ROUTE_SWLOCATION_LOC1;
GPIO->P[2].MODEH &= ~(_GPIO_P_MODEH_MODE15_MASK);
GPIO->P[2].MODEH |= GPIO_P_MODEH_MODE15_PUSHPULL;
#endif
CMU->OSCENCMD = CMU_OSCENCMD_AUXHFRCOEN;
while(!(CMU->STATUS & CMU_STATUS_AUXHFRCORDY));
CoreDebug->DHCSR |= 1;
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
*dwt_ctrl = 0x400113FF;
*tpiu_prescaler = 0xf;
*tpiu_protocol = 2;
ITM->LAR = 0xC5ACCE55;
ITM->TCR = 0x10009;
}
3) 配置Keil的工程選項
打開Keil的工程配置,選擇Debug頁面,選擇仿真器為Cortex-M/R J-Link/J-Trace,并點擊仿真器選項邊上的setting選項,打開具體的設置窗口。
在打開的窗口中,切換到Trace頁面,選中Enable,并且設置Core Clock為14MHz,分頻選項為CoreClock/16。詳情如下:
4) 在初始化SWO函數(shù)之后的地方,使用printf函數(shù)進行輸出。例如printf("Hello world")。
5) 在你的工程里面,需要添加如下的函數(shù):
struct __FILE { int handle; };
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE *f) {
ITM_SendChar(ch);
return(ch);
}
6) 編譯你的代碼,并且進入Debug狀態(tài)
7) 打開Keil的printf-view窗口, 通過 View -> Serial Windows ->Debug(printf) View
8) 點擊運行之后,在Debug (printf) View里即可查看
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |