|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
版本:RT-Thread nano 3.1.5 用CubeMX生成代码3 O1 l- D- `1 _- h. P, D" d
环境:Clion搭配gcc工具链(可视作CubeIDE)
+ a6 |$ ^; `7 V' Q/ k1 _ v' u1 _9 O. X问题:rt_kprintf()貌似没有关联到串口1 r, G$ K- A* m$ v; U. [
8 k$ M) U p# m' z3 u0 N下边是3.1.5版本board.c里自带的代码,文档中心里的代码应该也一样
4 x0 I8 T ?$ z( Y7 W8 E2 X1 I: ?: C# J1 i$ E
static UART_HandleTypeDef UartHandle;) h, n$ j& c+ m; D9 j2 z6 {
static int uart_init(void)
5 w) a0 O: A- V' L7 y5 _{
4 D: s: i2 q: M' [6 F/* TODO: Please modify the UART port number according to your needs */
) A/ c, e. ]6 u2 P& I0 |& l5 {UartHandle.Instance = USART2;
/ a f" ]- R; t3 Y( fUartHandle.Init.BaudRate = 115200;
; u& o1 ]0 u# `8 x/ KUartHandle.Init.WordLength = UART_WORDLENGTH_8B;" B& e* z* Y2 F% z% o* L
UartHandle.Init.StopBits = UART_STOPBITS_1;
. V0 @4 M* T# ]" s! }UartHandle.Init.Parity = UART_PARITY_NONE;
; Z9 n) p& `! t: r) T" U1 ]! aUartHandle.Init.Mode = UART_MODE_TX_RX;& ^* e/ r7 \" }$ w0 i
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;: W: l, D2 r1 S2 Z( h: X2 P
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
) y6 \8 _8 L$ L; z% X6 V/ q, aif (HAL_UART_Init(&UartHandle) != HAL_OK)" r8 M. {! K; J. l# y- D, T. M1 i
{
) k0 a. ^# ~' R. h% X0 k0 ^ bwhile (1);/ B9 i1 k; N. b4 i2 g& h0 V' P
}
+ n3 @' {5 G" g' s2 Freturn 0;2 h( R& I0 I$ j- \+ x
}" s6 L6 H+ k% z( \
INIT_BOARD_EXPORT(uart_init);
* I- n2 Z, d) M" }( ?& `void rt_hw_console_output(const char str)
* i8 ?: H9 K- l4 t4 x0 @{
2 m2 t0 G4 p$ L- }: l: c7 mrt_size_t i = 0, size = 0;# n, \ k( Q9 C* l F
char a = '\r';
$ T5 x; K6 h8 E__HAL_UNLOCK(&UartHandle);" R2 z% u/ [1 m1 H1 u$ o
size = rt_strlen(str);
9 d' y. Z/ g# i# bfor (i = 0; i < size; i++)
8 N) ^# W# k Y{" `0 t2 ^0 ?2 c- ^1 X# M9 s) {
if ((str + i) == '\n')
% I7 I! g; {3 |% L+ W5 Z2 u W{
# q+ ~" E2 L! U IHAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);
+ B% A* R8 x6 g- R2 v}1 E: M, K" `$ a9 b; ~
HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);
- m- ~% l. _& n6 u" V}* O' n3 M. y2 h2 ~! ~3 Q
}$ v7 n6 N4 m2 V: E
& c2 M8 L8 |/ A. D7 J/ J
直接kprintf之后串口完全没有反应
' L* H+ W( k. U$ v
/ b$ l8 |" c$ Z已经排除了硬件故障的可能,直接调用hal库的串口可以正常使用
/ K8 `& G+ [/ {' l, p+ s4 f进debug调试后发现kprintf时候完全在上面
, b; O: Z+ ~. I$ }% O: V j6 m9 D! P) U" Z) N9 F# Y! ~
rt_hw_console_output()里走了一遭,但串口一点反应都没给,推测问题是根本没关联到串口上,但怎么解决一直没找到
" z5 g/ P- @+ g) d$ K" g- _, K8 m h1 k |
|