|
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 |
|