你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于Printf重定向.

[复制链接]
jaerryz 提问时间:2020-9-22 14:53 /
用keil仿真 无法用printf打印.想用printf重定向到Usart1的方法,使printf打印信息能够在UART#1的窗口打印出来.

硬件连接用的是SW(没有连SWO引脚,只连接DIO和CLK)接口方式. 芯片USART1的RX TX引脚反接仿真器RX TX引脚.

这种连接方式可以使printf重定向到usart1用Keil实现在线调试吗?


我试了好多次都实现不了!!!~

求大佬帮忙..
收藏 评论5 发布时间:2020-9-22 14:53

举报

5个回答
radio2radio 回答时间:2020-9-22 15:39:00

试一试这个:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. extern UART_HandleTypeDef huart1;

  5. //USART1 retargetting:
  6. struct __FILE
  7. {
  8.   int handle;
  9. };

  10. FILE __stdout;

  11. // fgetc
  12. int fgetc(FILE *f) {
  13.   uint8_t ch = 0;
  14.   while(HAL_UART_Receive(&huart1, &ch, 1, 100000));
  15.   return((int)ch);
  16. }

  17. // fputc
  18. int fputc( int ch, FILE *f )
  19. {
  20.   while ( (USART1->SR & 0X40) == 0 )
  21.   ;
  22.   USART1->DR = (uint8_t) ch;
  23.   return (ch);
  24. }

  25. //_ttywrch
  26. int _ttywrch( int ch )
  27. {
  28.   ch = ch;
  29.   return (ch);
  30. }
复制代码
butterflyspring 回答时间:2020-9-24 12:05:12
官方的很多固件库里有相关的例程,参照使用即可。例如:
STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Examples\UART\UART_Printf\MDK-ARM
回答时间:2020-9-24 14:36:20
楼主,你用的是什么仿真器?可以使用一个TTL的USB串口板连接USART1进行测试。确定仿真器的串口可以正常使用。
qq12271229 回答时间:2020-9-24 21:57:18
我现在串口也遇到一个问题,真的是奇了怪了,加入了fputc重定向函数,printf就是重定向不了!现象是fputc都进不去!用HAL的API进行串口输出就是正常的!
O60VX[RLZ~R_U7HNPP5)TNO.png
alicekuonji 回答时间:2020-9-25 16:02:08
首先测试串口好坏,以及usb转ttl的好坏

关于重定向网上都有,包括cube里面自带的例程都是有的

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版