3.串口printf调试输出
在stm32中先配置使能一个uart串口,保存自动生成uart的.h .c 文件
接着在头文件中包含stdio.h
再在c文件中添加重定向:
GCC和keil等不同编译器调用printf时候是不同的
可以定义一个宏保证他们的兼容性,即使printf函数重定向
1 2 3 4 5 6 7 8 9 10 11 12 | #ifdef __GNUC__ //选择gcc编译时才会定义的宏 #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f) //单片机字符也是int类型保存 #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF); return ch; } |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
串口浮点数输出:
由于单片机硬件资源限制(内存小),STM32单片机里C语言标准库的printf()并不支持浮点数的输出
可以在Properties Settings中添加 -u _printf_float解决
分类:
STM32单片机开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了