打印
[其他ST产品]

STM32 printf程序会跑不起来

[复制链接]
1378|60
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2023-10-30 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
引用正点原子的printf程序,串口1已正常配制了,发送接收数据正常,现想用printf信息,设置如下
#include "stdio.h"已在头文件中

//加入以下代码,支持printf函数,而不需要选择use MicroLIB         
#if 1
#pragma import(__use_no_semihosting)  //标准库需要的支持函数                           
struct __FILE
{
        int handle;
        /* Whatever you require here. If the only file you are using is */
        /* standard output using printf() for debugging, no file handling */
        /* is required. */
};
FILE __stdout; /* FILE is typedef’ d in stdio.h. */      
_sys_exit(int x) //定义_sys_exit()以避免使用半主机模式   
{
        x = x;
}
//重定向fputc函数
//printf的输出,指向fputc,由fputc输出到串口
//这里使用串口1(USART1)输出printf信息
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//等待上一次串口数据发送完成  
        USART1->DR = (u8) ch;              //写DR,串口1将发送数据
        return ch;
}
#endif

在主函数里引用printf("OKn");   程序会跑不起来,去掉这条运行正常,有人遇到同样的问题吗?

使用特权

评论回复
沙发
probedog| | 2023-10-31 14:38 | 只看该作者
可能是未正确配置串口,需要检查串口的波特率、数据位、停止位、奇偶校验等参数是否正确设置。

使用特权

评论回复
板凳
laocuo1142| | 2023-10-31 14:39 | 只看该作者
是不是未包含正确的头文件,检查程序中是否包含了正确的头文件。

使用特权

评论回复
地板
flycamelaaa| | 2023-10-31 14:40 | 只看该作者
是不是没使用正确的编译器

使用特权

评论回复
5
classroom| | 2023-10-31 14:40 | 只看该作者
检查程序中是否有语法错误、逻辑错误等问题。

使用特权

评论回复
6
AloneKaven| | 2023-10-31 22:43 | 只看该作者
这个没有重定义吗

使用特权

评论回复
7
albertaabbot| | 2023-11-5 10:23 | 只看该作者
使用不支持STM32的编译器,或者编译参数设置不当,可能会导致printf程序无法编译或链接

使用特权

评论回复
8
usysm| | 2023-11-5 10:53 | 只看该作者
如果printf程序无法正常运行,还需要检查代码本身是否存在问题

使用特权

评论回复
9
pmp| | 2023-11-5 11:32 | 只看该作者
printf函数需要使用标准库中的一些函数

使用特权

评论回复
10
averyleigh| | 2023-11-5 15:06 | 只看该作者
一些硬件问题也可能导致printf函数无法正常运行。

使用特权

评论回复
11
kkzz| | 2023-11-5 15:40 | 只看该作者
引脚连接不正确或者电源不稳定              

使用特权

评论回复
12
yeates333| | 2023-11-5 16:14 | 只看该作者
如果STM32的时钟设置不正确,可能会导致printf函数无法正常运行

使用特权

评论回复
13
MessageRing| | 2023-11-5 18:26 | 只看该作者
重写函数了吗

使用特权

评论回复
14
xiaoyaodz| | 2023-11-6 22:23 | 只看该作者
串口通信速率设置过高可能会导致通信失败。

使用特权

评论回复
15
everyrobin| | 2023-11-7 17:51 | 只看该作者
printf函数的参数类型不正确或格式化字符串错误等。解决方法是仔细检查代码,确保printf函数的参数类型和格式化字符串正确无误。

使用特权

评论回复
16
xiaoyaodz| | 2023-11-7 18:36 | 只看该作者
USART 端口是否连接正确              

使用特权

评论回复
17
kkzz| | 2023-11-7 18:58 | 只看该作者
调试器的问题               

使用特权

评论回复
18
earlmax| | 2023-11-7 19:20 | 只看该作者
未正确配置GPIO引脚或时钟,可能会影响printf函数的正常工作

使用特权

评论回复
19
janewood| | 2023-11-7 20:08 | 只看该作者
正确配置STM32的驱动程序,或者驱动程序存在问题,可能会导致printf程序无法运行。

使用特权

评论回复
20
minzisc| | 2023-11-7 20:52 | 只看该作者
如果printf程序无法正常运行,也可能是由于硬件问题引起的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1327

主题

3826

帖子

0

粉丝