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

【经验分享】STM32的串口调试经验

[复制链接]
STMCU小助手 发布时间:2022-2-8 21:12
  STM32在使用串口时,有时需要使用串口输出来观察程序运行状态。这时,我们需要将printf进行重定向。
具体重定向方法为:
1、 添加printf的头文件   #include <stdio.h>

2、重写int fputc(int ch, FILE *f)函数

int fputc(int ch, FILE *f);
函数
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
3、修改一下选中Use MicroLIB   Target——Code Generation——选中Use MicroLIB


方法2,也可以避免使用半主机模式进行操作。
#if 1 #pragma import(__use_no_semihosting)            
//标准库需要的支持函数               
struct __FILE
{
  int handle;
};
FILE __stdout;       //定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{  
  x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
       while((USART1->SR&0X40)==0);//循环发送,直到发送完毕      
  USART1->DR = (u8) ch;      
  return ch;
}
#endif

需要注意的还有自己的波特率,在stm32f10x.h中修改

#define HSE_VALUE    ((uint32_t)8000000) /*写自己板子的波特率即可,默认是没有的 */
#if !defined  HSE_VALUE
#ifdef STM32F10X_CL  
#define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#else
#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* STM32F10X_CL */
#endif /* HSE_VALUE */

收藏 评论0 发布时间:2022-2-8 21:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

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