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