|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
版本:RT-Thread nano 3.1.5 用CubeMX生成代码
# {. g5 N" R, u5 d$ w( G9 M环境:Clion搭配gcc工具链(可视作CubeIDE)9 G0 z7 r- G: R+ h( Z+ B7 G2 k8 L" [
问题:rt_kprintf()貌似没有关联到串口
1 K! L9 M |5 `5 S' k# C8 H3 a9 x$ y0 m: G; [! H
下边是3.1.5版本board.c里自带的代码,文档中心里的代码应该也一样
% p( {$ W' E o+ ?0 C: J+ G3 \& U3 `
static UART_HandleTypeDef UartHandle;+ \# }8 x c5 c( l
static int uart_init(void)
" e" p3 m" s( H: _% w" x) h{
2 `) o( r3 E/ k* u/* TODO: Please modify the UART port number according to your needs */
% h+ u0 ~& M7 Q5 yUartHandle.Instance = USART2;3 m4 V. o, M8 B: s7 ?* @0 ]! ~$ t0 j
UartHandle.Init.BaudRate = 115200;
7 t" Z4 l& G( O1 p5 XUartHandle.Init.WordLength = UART_WORDLENGTH_8B;. c5 S! s$ \9 Y/ w2 g& g
UartHandle.Init.StopBits = UART_STOPBITS_1;
+ G' j- c& i2 _9 ]% e! bUartHandle.Init.Parity = UART_PARITY_NONE;2 F5 V. O: A R4 m" ?
UartHandle.Init.Mode = UART_MODE_TX_RX;, s' S$ _# T! \3 V+ ?* z
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;# I! e$ M8 a; B5 i4 ^4 N2 G0 X. o0 _ v
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
+ z. U9 y* n+ G- K8 s) K# L4 cif (HAL_UART_Init(&UartHandle) != HAL_OK)
/ G1 D/ R1 I# l0 H, K4 F! w{7 @+ f; O7 ^- }
while (1);
: x+ Q e6 ^: ^}
6 N) |+ t5 W0 C- n G( A7 Yreturn 0;0 w4 J) _- K5 w* B" ]4 K1 Z( Q
}
: }& j3 Q& F! Y z% _2 @4 JINIT_BOARD_EXPORT(uart_init);5 O. y7 ~6 s) R' T6 ?
void rt_hw_console_output(const char str)/ c7 Z# |7 j& {7 r! C
{; m/ d; X1 r( _- V( C; E
rt_size_t i = 0, size = 0;. P& c. D4 o N ^1 m m# {
char a = '\r';7 H0 C' A5 p/ F3 D
__HAL_UNLOCK(&UartHandle);- a9 `8 v0 z- o9 c* D$ {3 F
size = rt_strlen(str);7 `% L& ?6 u% \: W
for (i = 0; i < size; i++)8 B# a6 o! C0 J7 q: Y
{( B9 E, c) A; @, m" x3 t2 g$ F' W/ L' n
if ((str + i) == '\n')
1 N, D. p" O. F$ o' f{" S- z2 F" X# T w4 U9 c
HAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);7 [+ J# M1 g& N$ w* j
}
; f e; p/ B) sHAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);+ M) `$ k+ X2 ]4 `8 a
}% m2 m( {4 X4 T3 b$ |
}
4 m0 @5 ^+ V% J2 R! Y4 [5 @/ f: _
直接kprintf之后串口完全没有反应
u1 i2 l* ]6 H; d- b$ o1 d" b+ ?7 F2 M8 p
已经排除了硬件故障的可能,直接调用hal库的串口可以正常使用
, O) |) C, E @' W: z进debug调试后发现kprintf时候完全在上面5 B* |9 T# _' Q, S! p# I
; h0 D6 K q+ v! S7 ort_hw_console_output()里走了一遭,但串口一点反应都没给,推测问题是根本没关联到串口上,但怎么解决一直没找到
% G" ]8 X$ o! X |
|