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