在stm32中将程序下载至开发板上,printf 函数在串口助手显示不出来如何解决
1条回答 默认 最新
关注 不知道你这个问题是否已经解决, 如果还没有解决的话:- 这篇博客也许可以解决你的问题👉 :stm32中printf整形和浮点型会进入硬件错误中断
- 除此之外, 这篇博客: STM32 在PC端串口助手上打印中文字符----printf()函数重定向中的 printf()的重定向(三个步骤) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
步骤一:
重定向: 简单来说就是用户写了一个跟C标准库一模一样的函数,在进行工程编译时,连接器检查到用户自己编写的有某个和C库函数同名的用户写的函数,就会优先采用用户编写的函数,这就叫重定向; 而且这里我们为了实现重定向printf()函数,我们重写了fputc(int ch,FILE *f)这个C标准库函数,因为printf()在C标准库函数中实质上是个宏定义,最终调用的是fputf(int ch,FILE *f)这个函数;//重定向C库函数printf()到串口,重定向后可使用printf(); int fputc(int ch,FILE *f) { USART_SendData(USART1,(uint8_t)ch); while(!(USART_GetFlagStatus(USART1,USART_FLAG_TC))); return ch; }
printf()对应的底层函数接口在"stdio.h"中的第673行
注:- ch为要发送的8位数据;
- 若使用C标准输出库函数,需要在main.c中把stdio.h头文件包含进来,还要在魔法棒中勾选一个“Use MicroLIB(使用微库)”,这个微库是MDK为嵌入式应用量身定做的C库,在编程时,要先有库,才能重定向;如下图配置;
步骤二
步骤三
在需要用到printf()函数的文件中加上头文件 stdio.h 文件;如下列工程;
#include "stm32f10x.h" #include "usart.h" #include "stdio.h" //标准输入输出头文件; #include "systick.h" int main() { systick_Init(); USART1_Init(115200); while(1) { printf("无语尊wuyuzun\n"); delay_ms(100); } }
完成上面这两个操作后,就可以通过串口助手软件看输出了:
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信小程序协议怎么写
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看