Cortex-M 开发中实现stdout(printf, puts, putc)

在Cortex-M嵌入式开发中,为了在没有标准输出设备的情况下进行调试,通常需要将stdout重定向到串口或USB。本文介绍了如何使用armcc和Microlib以及gcc和Newlib-Nano来实现printf、puts和putc功能,并提供了针对STM32的示例代码,强调了配置外设和处理浮点数输出的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 ch;
}
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值