1.
https://www.strongerhuang.com/categories/printf%E7%B3%BB%E5%88%97%E6%95%99%E7%A8%8B/
黃工的這篇文章相當有用
總結一下。
SWO類似於printf
可以替換一個printf,用起來很方便。
core_m4.h
中
__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
{
if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */
((ITM->TER & 2UL ) != 0UL) ) /* ITM Port #0 enabled */
{
while (ITM->PORT[1U].u32 == 0UL)
{
__NOP();
}
ITM->PORT[1U].u8 = (uint8_t)ch;
}
return (ch);
}
#include <stdio.h>
#include "core_cm4.h"
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
return ch;
}
以上是函數中需要添加的代碼,代碼量很少。
硬件上需要多連接一根線SWO
本系列教程主要是針對MCU的printf打印輸出,常見的方式:
1.UART打印輸出
2.仿真打印輸出
3.SWO打印輸出
4.JLink-RTT打印輸出
除仿真之外,其它三種都是基於MCU硬件打印輸出。
從打印效率來說:UART < SWO < JLink-RTT。
每一種printf打印輸出方式應用場景不同,也各有各的特點。
CUBE MX配置
KEIL配置:
IAR
RTT