|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
版本:RT-Thread nano 3.1.5 用CubeMX生成代码
U. H% x# @. N2 x4 t环境:Clion搭配gcc工具链(可视作CubeIDE): |! M6 @' C+ J8 G; X
问题:rt_kprintf()貌似没有关联到串口
' {3 T1 j0 H; e2 }5 o4 k% E7 N! H0 }1 s' G& Q
下边是3.1.5版本board.c里自带的代码,文档中心里的代码应该也一样6 A$ U1 |+ d: L C5 d
! p4 O! ~! t8 hstatic UART_HandleTypeDef UartHandle;
/ C h) d* ~+ T+ s; n- astatic int uart_init(void). ?0 c2 I/ Z4 c i) ~
{7 G+ r* n1 ]- f2 Y; F t; z) Z
/* TODO: Please modify the UART port number according to your needs */6 y3 G! G" p( X& s3 t: ~ E: E9 c
UartHandle.Instance = USART2;0 j: H* ?, o! i; y
UartHandle.Init.BaudRate = 115200;! `8 P/ i6 _& w! n
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
0 a8 H$ r. q* }UartHandle.Init.StopBits = UART_STOPBITS_1;
. ]% \- v3 A* u* A* `UartHandle.Init.Parity = UART_PARITY_NONE;
, o3 ]1 J# c, Q4 k. E# P4 f( sUartHandle.Init.Mode = UART_MODE_TX_RX;
7 d, ~) n- a7 \5 R$ PUartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;3 C& W; V+ V/ S# M& a
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;7 w' _* `2 F, n1 }' ~
if (HAL_UART_Init(&UartHandle) != HAL_OK)5 m* O% }2 N: s, F! W+ X& V a
{
9 f& w" F" b2 ywhile (1);4 {6 O R+ p# M/ ?! n
}
3 z5 o8 K Z/ K' Q0 |5 o( ]return 0; Z! L0 a# Y. f# A9 R" I
}
% J; \. z* Q7 Z( L" Z& ]( OINIT_BOARD_EXPORT(uart_init);4 l9 q( @5 V2 n9 l
void rt_hw_console_output(const char str)" H+ H; D# r4 Z& I
{. {. ]) _! ]( R- }# r
rt_size_t i = 0, size = 0;' h6 d0 |+ m) p, R
char a = '\r';
3 _/ _! i5 S! U" l__HAL_UNLOCK(&UartHandle);8 p+ F# g7 L- F5 W/ d
size = rt_strlen(str);
$ b3 k5 ~7 d: h. u' {for (i = 0; i < size; i++)
1 v% K+ [$ P! i: ~" K# b{
0 a$ e5 d. O- [/ yif ((str + i) == '\n')
' S( v: Q# v0 W5 Y9 S: g{
5 s4 q# \3 t5 o0 N) dHAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);
7 ^+ K/ e5 ]3 W. W3 d, S0 t}
9 I# w6 _* m* n5 i: xHAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);$ _9 n+ ^* o- [5 ~5 A; \
}
) J# T& a5 e$ J) }5 h& I1 N}
7 Q/ |4 f8 M- k2 l) i# @ }4 P; _, q V0 R3 ]3 }
直接kprintf之后串口完全没有反应
3 K7 o# f- t6 |# W* F y! C0 K; Q) U; |; F' t- ~+ z
已经排除了硬件故障的可能,直接调用hal库的串口可以正常使用+ e. t! V2 S) k- h
进debug调试后发现kprintf时候完全在上面
1 ]2 a& s: a6 L: j) {: t- M
/ W; }& Z( S, W$ Irt_hw_console_output()里走了一遭,但串口一点反应都没给,推测问题是根本没关联到串口上,但怎么解决一直没找到/ F9 }4 E" \6 d5 z
|
|