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

STM32中使用printf,重定向的代码

[复制链接]
在路上11111111 发布时间:2016-12-11 16:19
  1. #ifndef MicroLIB//没有在MDK中打上MicroLIB对勾的话     执行下面的数据
  2. #pragma import(__use_no_semihosting)//这句话的意思是不调用半主机模式
  3. struct  __FILE
  4. {
  5.     int handle;
  6. };
  7. FILE  __stdout;
  8. _sys_exit(int x)//避免使用半主机模式
  9. {
  10.   x = x;
  11. }
  12. int fputc(int ch,FILE *f)//重新定义fputc函数使其输出到串口上
  13. {
  14.    while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET)//等待发送成功
  15.    {}
  16.    USART_SendData(USART1,(uint8_t) ch);//发送数据
  17.    return ch;
  18. }


  19. 在这里希望大神能想详细讲解一下#ifndef    到  #endif之间的东西,谢谢。
  20. int ferror(FILE *f)
  21. {
  22.    return EOF;
  23. }
  24. #endif
  25. #ifdef USE_FULL_ASSERT
  26. /*************
  27. 如果你定义了USE_FULL_ASSERT

  28. 就可以在assert_failed,加入:
  29. printf("Wrong parameters value: file %s on line %d\r\n", file, line);
  30. 就可以使用assert_param(expr) 来判断当前参数是够正确,如果不正确,就会打印出错的文件,以及出错的行。
  31. 这样就可以方面调试信息了。
  32. *********/
  33. void assert_failed(uint8_t* file,uint32_t line)//输出错误信息
  34. {
  35.     printf("Wrong parameters value: file %s on line %d\r\n",file,line);
  36.         while(1)
  37.         {
  38.         }
  39. }
  40. #endif
复制代码


收藏 5 评论2 发布时间:2016-12-11 16:19

举报

2个回答
jackten 回答时间:2016-12-11 20:01:27
学习学习                        
leo121_3006061 回答时间:2016-12-11 21:22:35
楼主研究的真细,赞一个

所属标签

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