STM32cubeIDE进行Uart打印

注意:

注意不能打印浮点数,因为uart的传递的数据就是int类型,但是如果把printf重定向到ide,可以使能printf打印浮点数
注意1: stm32cubeide没有usart的库函数了,由于usart逐渐被淘汰,stm32的HAL库只留下了uart的库
注意2: stm32cubeide移植printf函数与keil移植printf函数不同的是,keil可以勾选lib库,由于stm32cubeide问世不久教程很少,并不能有效的重定向printf函数,可能是我的编译器配置有问题
解决办法 用HAL_UART_Transmit函数代替printf,并且减少了每次移植printf找代码的麻烦,只不过每次串口打印时,麻烦那么一点点 //注意使用阻塞式串口打印,也就是使用不带中断的串口打印
例子:在上位机打印"你好 word" HAL_UART_Transmit(&huart1,(uint8_t*)“你好 world”,sizeof(“你好 world”), 0xffff); //注意工程用GBK编码才能打印中文

结果验证

2020-6-16后续

>>今天又试了一下,参考https://blog.csdn.net/qq_36075612/article/details/96851644这个博客
>>能打印了,并没有选择什么其他的什么库与编译器,使用的默认的精简版的C库,对了fputchar
>>不需要在uart.h里面进行声明,在调用printf时,编译器会自动找到fputchar函数,它的声明已经在stdio.h文件有了

重定向printf的代码

```c #include "stdio.h" #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) PUTCHAR_PROTOTYPE {  HAL_UART_Transmit(&huart1,(uint8_t*)&ch, 1, HAL_MAX_DELAY); return ch; } #endif