硬汉嵌入式论坛

 找回密码
 立即注册
查看: 263|回复: 5
收起左侧

[UART] printf的问题

[复制链接]

3

主题

8

回帖

17

积分

新手上路

积分
17
发表于 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 LightingSky 于 2025-5-5 16:17 编辑

大家有遇到过这样的问题吗 我自己写了一个RTOS然后想要移植一下HAL库然后看看效果 神奇的事情发生了


int main()
{
                // 创建一个任务 进入 app.c
                // 然后就在APP里启动第一个任务
                HAL_Init();                         /* 初始化HAL库 */
                sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */
                usart_init(115200);                 /* 串口初始化为115200 */
                led_init();
                printf("准备进入RTOS中\r\n");

               /*------RTOS初始化-----*/
}  就是这句printf 我现在还没进入RTOS呢 我如果不开调试模式这句printf就会只打印半句然后就寄了

可是如果我开调试模式 然后一步一步的运行
int fputc(int ch, FILE *f)
{
    while ((USART1->SR & 0X40) == 0);               /* 等待上一个字符发送完成 */


    USART1->DR = (uint8_t)ch;                       /* 将要发送的字符 ch 写入到DR寄存器 */
    return ch;
} 它就反而都打印出来了,这是为什么呢?
下载.png
有没有帮忙解惑一下哈
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
发表于 5 天前 | 显示全部楼层

回帖奖励 +5 个金币

测试下,注释掉你所作的RTOS代码,是否正常。
回复

使用道具 举报

3

主题

8

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 5 天前 | 显示全部楼层
还是不正常 不知道为什么
回复

使用道具 举报

5

主题

82

回帖

97

积分

初级会员

积分
97
发表于 5 天前 | 显示全部楼层
你的微库勾选了吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
发表于 4 天前 | 显示全部楼层
LightingSky 发表于 2025-5-5 16:58
还是不正常 不知道为什么

说明串口实现确实有问题,排查下。

ps:fputc里面,你这里为什么是直接就等待上一个字符发送,你这里还没有执行字符发送。
回复

使用道具 举报

26

主题

137

回帖

215

积分

高级会员

积分
215
发表于 3 天前 | 显示全部楼层
大概率是没有选微库,然后使用printf导致的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 03:43 , Processed in 0.252821 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表