打印

怎么解决STM32(MDK)中不能使用printf()函数的问题(转)

[复制链接]
2383|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
枫叶gbwz|  楼主 | 2013-7-23 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式),
标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数.

例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:

#ifdef __GNUC__

/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf

     set to 'Yes') calls __io_putchar() */

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif /* __GNUC__ */

PUTCHAR_PROTOTYPE

{

/* Place your implementation of fputc here */

/* e.g. write a character to the USART */

USART_SendData(USART1, (uint8_t) ch);

/* Loop until the end of transmission */

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

return ch;

}


全文在这里http://masust.blog.163.com/blog/static/14695408420123308328203/ 读完终于知道原子哥 为什么那么写了
沙发
haibian826| | 2013-7-23 19:11 | 只看该作者
这里有stm32,MDK中直接添加printf的方法。。。添加后,随便使用printf函数打印信息
http://www.51stm32.com/forum.php ... &extra=page%3D1

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

147

帖子

7

粉丝