Cortex-M 开发中实现stdout(printf, puts, putc)
开发嵌入式程序时,由于没有标准输出设备,通常要把标准库的stdout定向到串口或usb等,用于调试;也就是说,在使用printf,puts,putc
等函数时,要先提供stdout基本功能的实现,标准的printf等会调用用户定义的实现函数作为stdout.
使用armcc和Microlib
- 实现
fputc
函数 - armcc armlink armasm参数中添加
--library_type=microlib
,或者使用IDE指定
注意:Microlib不支持p记数法和宽字符,也就是%lc
,%ls
, %a
.
示例(基于stm32,定向到USART,需要提前配置好外设):
#ifdef __CC_ARM
int fputc(int ch, FILE *f)
{
USART_SendData(USART1,(uint8_t)ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
return