找回密码
 注册
关于网站域名变更的通知
查看: 248|回复: 4
打印 上一主题 下一主题

rt_kprintf()貌似没有关联到串口怎么解决?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-10-18 13:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
版本:RT-Thread nano 3.1.5 用CubeMX生成代码
/ q0 i: F1 \( c* m+ ~) j环境:Clion搭配gcc工具链(可视作CubeIDE)
6 C* j$ X+ h8 {! B1 c问题:rt_kprintf()貌似没有关联到串口
1 ^4 R7 Z, O* t' s0 C3 U, N
+ G7 t3 d2 b# _" G下边是3.1.5版本board.c里自带的代码,文档中心里的代码应该也一样
& `: l0 Q8 S, u4 n# k  H
: A' _8 O) l/ v" ^; Ystatic UART_HandleTypeDef UartHandle;
9 z/ X# o; b7 U$ b. [. P& zstatic int uart_init(void)' v  U5 k7 {' U! W' T7 E9 W
{5 H3 m0 U7 ^' O, o- E* U
/* TODO: Please modify the UART port number according to your needs */3 n9 ^3 p: t/ V" t
UartHandle.Instance = USART2;# o" ?" N" h% p2 O8 A
UartHandle.Init.BaudRate = 115200;
$ @; k( Q. R) s% L- w- KUartHandle.Init.WordLength = UART_WORDLENGTH_8B;
* k/ z( O/ B( uUartHandle.Init.StopBits = UART_STOPBITS_1;; K  A3 r  k* i: e
UartHandle.Init.Parity = UART_PARITY_NONE;+ t9 I# S2 L% }% X
UartHandle.Init.Mode = UART_MODE_TX_RX;
/ u7 Q0 ~  s; g. qUartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;5 U" F' A; [% x3 r
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;& b5 @3 ~. E; ^* l
if (HAL_UART_Init(&UartHandle) != HAL_OK)
% r1 t( y1 G$ u; a: E{
9 s% @3 n- A1 U  E) zwhile (1);
$ ^6 o' q9 q  Y+ ~: r- F5 E; U}
6 z4 ?- K' B' E! q/ A; |4 \3 s( Vreturn 0;
* n$ B2 k& Y# N- Q/ x; Y}9 L( Q! n, v1 i/ j$ _% ^3 N, A
INIT_BOARD_EXPORT(uart_init);1 [, d: x2 s7 L* {; W" m
void rt_hw_console_output(const char str)
& r: ~  V  J4 J$ y$ I) b" n8 u{; B; `7 O/ U& z5 O+ B! P
rt_size_t i = 0, size = 0;# h- \& ]# N. j0 f4 t
char a = '\r';
7 z: x" _) D8 J' z__HAL_UNLOCK(&UartHandle);2 I+ l* g5 j1 s' @" ^" l6 u
size = rt_strlen(str);% r! V' g, m9 c! @
for (i = 0; i < size; i++)6 k! L$ _8 O' W8 v4 Y: a1 B
{1 c. N& ^9 e' G! x( C; Q
if ((str + i) == '\n')6 |9 I1 q" }" O6 z! Z/ m, y" E
{
: g: K; n0 w- |3 q6 O. x% oHAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);
0 [- K: A3 }# `}$ U  h4 T7 n# R3 Z8 Q* H
HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);4 Y4 y$ Z; e/ d1 k+ }
}
6 x' ^# x+ L5 I! w; q  Q}
2 w, c- u2 R3 `$ ~
7 b- [0 U- R- m8 Z" r& V4 E4 U) y直接kprintf之后串口完全没有反应
/ g9 P# T# N/ I3 G7 @6 J+ F* P/ t4 X& @2 \  b
已经排除了硬件故障的可能,直接调用hal库的串口可以正常使用
$ G9 h# Q2 U3 C- j; |进debug调试后发现kprintf时候完全在上面
- H; a& Y! k% n( X/ e. A' S3 v
/ P5 C3 l; t" w$ ]rt_hw_console_output()里走了一遭,但串口一点反应都没给,推测问题是根本没关联到串口上,但怎么解决一直没找到
" F* f& T! C5 ]4 p' Q

该用户从未签到

2#
发表于 2022-10-18 14:30 | 只看该作者
串口初始化失败了呗。自己检查一下引脚复用配置。外设电源时钟配置等等。2 p" U# ], d. q

该用户从未签到

3#
发表于 2022-10-18 14:33 | 只看该作者
board.c里那个uart_init()根本没有关联上已经配置好的串口,得把那个删了再把uarthandle改成huartx就可以了,不过我不明白如果uart_init一点用都没有的话为什么要带上那个,是为了适配不同的芯片?+ n0 S2 F: h* Q5 E

该用户从未签到

4#
发表于 2022-10-18 14:52 | 只看该作者
这个函数本来就是让你修改的,但是你没修改,直觉认为 cubemx 生成的代码和 rtt 无缝衔接了
* N- v: B( S  V: ]$ R" E正常操作流程应该是把 cubemx 生成的代码赋值粘贴到 rtt 原来对应的地方。
  p! e. |# y6 x

该用户从未签到

5#
发表于 2022-10-18 15:00 | 只看该作者
得改链接脚本否则不能正常自动初始化,cubeMX那边生成的代码没有问题可以直接用,就像GCC编译下finsh线程似乎没有正常的被初始化里面一样,只能说在gcc编译链下搞RT-Thread坑有点多
% C5 J" ~3 q4 a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-29 10:32 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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