|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
版本:RT-Thread nano 3.1.5 用CubeMX生成代码( F. Y" h$ Y; L
环境:Clion搭配gcc工具链(可视作CubeIDE)) m" d7 h( H1 ^& N
问题:rt_kprintf()貌似没有关联到串口
1 q$ Y1 k a2 R1 [) ~& r+ P) U6 u3 H
2 J( v8 P7 Y! S9 `8 }3 p下边是3.1.5版本board.c里自带的代码,文档中心里的代码应该也一样
* L A; F) w# f7 R
1 O3 r/ m% Y) @4 Ystatic UART_HandleTypeDef UartHandle;
! a5 A8 c1 r( q2 J# u7 E" Nstatic int uart_init(void)5 w& g- X6 V, H
{9 m+ O C( x$ P: W7 N
/* TODO: Please modify the UART port number according to your needs */3 v' _/ l. L' y+ K% h
UartHandle.Instance = USART2;, i3 I( h+ e- r3 [# j
UartHandle.Init.BaudRate = 115200;/ Y6 m$ F( P% F: G2 D; p$ l
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
1 f* m$ }8 ]5 J8 [( t7 q/ tUartHandle.Init.StopBits = UART_STOPBITS_1;1 p2 m) Q+ s( L: E
UartHandle.Init.Parity = UART_PARITY_NONE;
+ w0 z' W7 n% iUartHandle.Init.Mode = UART_MODE_TX_RX;) \6 p% z2 s, s& G1 n/ n
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
) n! ^; r% _& x/ g; U5 lUartHandle.Init.OverSampling = UART_OVERSAMPLING_16;4 J& l" ~0 _# o; Y$ ~
if (HAL_UART_Init(&UartHandle) != HAL_OK)
5 [/ d/ O* G; U5 i( c3 @4 Q& J{
. j1 h5 X& e' Bwhile (1);
3 { N! ?$ g2 j0 z: ]% G8 v}! B+ {4 h% P+ s9 x4 S
return 0;
# o, i4 a2 C: d! \5 j}
j& u# q- H9 mINIT_BOARD_EXPORT(uart_init);( j) u/ n `4 ?: O' r1 t* z
void rt_hw_console_output(const char str); N6 M+ {6 K; R3 X; m* ]4 x
{
% }/ g/ p' r2 @9 Y2 T7 K, }' ~rt_size_t i = 0, size = 0;
' C1 o! t" B* R* v2 o4 z. }4 w& Ichar a = '\r';
, t) }- s$ ^: i' P. Q7 C' w__HAL_UNLOCK(&UartHandle);+ x N, [) v0 u3 Z
size = rt_strlen(str);; ]- q- Y" h! z$ v+ ]* r& w' K$ B
for (i = 0; i < size; i++)& X* a$ O3 q4 D" {/ V8 w- m; g( s
{
6 V! p4 B$ E& s% o1 M+ K& Yif ((str + i) == '\n')9 E9 R; z! N9 {& c5 z% Z2 Z
{4 l" E" z3 i, y @8 E+ S6 ]# _, q; ^
HAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);6 Q# K; v" O$ S) v5 W
}
# ?& |! M6 Z3 h/ w KHAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);
7 P, C, V. K% w! _8 r6 H) K}# k. j. }/ a0 e
}
. k: K9 g/ h; r5 j) h
. A6 ?. ~" m- s+ u$ a0 O# _直接kprintf之后串口完全没有反应
2 h9 z& I2 ^3 [: R4 t# _8 d9 d
$ c* }- f$ E" f已经排除了硬件故障的可能,直接调用hal库的串口可以正常使用
4 i' w- {& }5 G5 Y9 v0 g$ s! ^. `进debug调试后发现kprintf时候完全在上面3 H. p# A9 N& ?) i1 f9 n
: T, Z2 ~+ ?* X7 \3 u! a0 `
rt_hw_console_output()里走了一遭,但串口一点反应都没给,推测问题是根本没关联到串口上,但怎么解决一直没找到
5 m$ V9 c- S* q |
|