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

关于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
久远寺有珠 回答时间:2020-9-25 16:02:08
提示: 作者被禁止或删除 内容自动屏蔽

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版