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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
版本:RT-Thread nano 3.1.5 用CubeMX生成代码' V9 O6 o# ?' d
环境:Clion搭配gcc工具链(可视作CubeIDE), G: J! M$ P6 i2 q" D9 \; _- J! B
问题:rt_kprintf()貌似没有关联到串口. z2 B; K5 _/ \" e8 Z
/ q. S9 N( c4 d- h; ?0 h
下边是3.1.5版本board.c里自带的代码,文档中心里的代码应该也一样
, K1 v; c* O: {; W: R7 R2 q! k4 ?$ B" [7 q
static UART_HandleTypeDef UartHandle;4 k. F- m( h# y
static int uart_init(void)
! X# T. q' ^" u{$ [+ a/ @! p* [* T4 S3 p, T
/* TODO: Please modify the UART port number according to your needs */
9 e9 S( O/ ]5 Z3 I) G: `UartHandle.Instance = USART2;" {, c" O7 R- l7 K0 z+ {
UartHandle.Init.BaudRate = 115200;: x' [, H  B  b( S2 C$ B
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;7 M; e! [( l3 K1 W/ K- x
UartHandle.Init.StopBits = UART_STOPBITS_1;
4 T; w4 t3 ^4 f1 F" F) kUartHandle.Init.Parity = UART_PARITY_NONE;+ Q- c  p! B; M
UartHandle.Init.Mode = UART_MODE_TX_RX;* G2 y1 f& R8 J
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;! w+ O8 g' G' i+ x5 i, W0 G9 v6 p( x
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;: h& k( q0 w* `2 I8 D  Z- c, a. D
if (HAL_UART_Init(&UartHandle) != HAL_OK)
, W$ g1 o, u4 p! V" p{; z/ |9 R  c( L, J5 w
while (1);9 b0 w4 w$ z$ B: x: w
}
, P1 O8 {4 S0 c- {" n- Xreturn 0;8 Z. j- B- B& a1 j9 D
}+ R% `2 @9 P6 K" }, Q' D
INIT_BOARD_EXPORT(uart_init);
) e2 ~/ H4 K6 W  _4 D0 o' Mvoid rt_hw_console_output(const char str)5 f6 Q8 z" v1 `! u1 v9 L
{. y- v/ h$ A$ M+ X" O6 o+ a
rt_size_t i = 0, size = 0;& n2 Y! t/ t" r& c, Q3 X) c
char a = '\r';4 x, D0 r7 [9 u
__HAL_UNLOCK(&UartHandle);* m. M$ a& [1 b' G2 Y
size = rt_strlen(str);! p, F- R7 q; W7 j) Z9 z6 z
for (i = 0; i < size; i++), n3 Y7 d6 o! p- f6 [8 f/ K
{
. c5 u! W2 \; s# @. S8 [8 Rif ((str + i) == '\n')
' f- `$ j6 w: A/ p1 `8 k9 C{
  T# Q& G: F. BHAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);' _; ~2 s- s# }: V1 b4 L5 d
}( f- d$ `8 @& U- r7 u6 y  W
HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);
3 F+ A6 C8 ]9 n, C}3 D. o; r& O  B9 Z( c
}
& d% s7 p/ D+ m( p& ^: K# G! q% I0 q6 t4 q
直接kprintf之后串口完全没有反应
4 o6 }2 N- W: ~% {# R" I. Q( \
& k6 e7 l- S: w% F- t已经排除了硬件故障的可能,直接调用hal库的串口可以正常使用
( @! e& g# C& G0 g进debug调试后发现kprintf时候完全在上面
' s* x' i" N& C, L+ t
9 o) F" f$ [% b+ ]. brt_hw_console_output()里走了一遭,但串口一点反应都没给,推测问题是根本没关联到串口上,但怎么解决一直没找到
5 U* D1 j6 [, r4 I5 g

该用户从未签到

2#
发表于 2022-10-18 14:30 | 只看该作者
串口初始化失败了呗。自己检查一下引脚复用配置。外设电源时钟配置等等。
5 |$ s( g$ T/ T4 m. t3 n/ K& z9 z

该用户从未签到

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

该用户从未签到

4#
发表于 2022-10-18 14:52 | 只看该作者
这个函数本来就是让你修改的,但是你没修改,直觉认为 cubemx 生成的代码和 rtt 无缝衔接了
# L5 B( h: N. v' `( \正常操作流程应该是把 cubemx 生成的代码赋值粘贴到 rtt 原来对应的地方。: h, x7 j/ L" E: z

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 19:56 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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