keil5串口输出浮点数
时间: 2025-03-26 17:08:19 浏览: 63
### Keil 5 中通过串口输出浮点数的方法
#### 配置方法
为了使 `printf` 函数能够正确处理并输出浮点数,在编译选项中需要启用浮点库的支持。具体操作如下:
- 打开项目属性设置窗口,导航到 C/C++ 编译器配置页面。
- 查找“Library”标签页下的“Float support”,将其设为 “Full (with printf/scanf float support)” 或者等效项[^1]。
#### 示例代码
下面是一个简单的例子来展示如何初始化 UART 并使用 `printf` 输出浮点数值至串口终端设备:
```c
#include "stm32f1xx_hal.h"
UART_HandleTypeDef huart1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
int fputc(int ch, FILE *f); // 定义重定向函数原型
// 初始化系统时钟、GPIO 和 USART1
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
/* 用户自定义部分 */
char buffer[50];
float num = 25.56;
sprintf(buffer,"The floating point number is %f\n",num); // 使用sprintf格式化字符串
while(1){
HAL_UART_Transmit(&huart1,(uint8_t*)buffer,strlen(buffer),HAL_MAX_DELAY);
HAL_Delay(1000);
}
}
/* 实现fputc用于标准IO流重定向 */
int fputc(int ch, FILE *f) {
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
```
此程序片段展示了如何利用 `sprintf()` 将浮点数据写入字符数组,并随后调用 `HAL_UART_Transmit()` 发送该缓冲区的内容给USART接口进行传输[^2]。
另外需要注意的是,如果是在 Proteus 软件环境中模拟测试,则应确保虚拟仪器(如 VSM 终端)已正确定位并与目标MCU建立了有效的连接关系[^3]。
阅读全文
相关推荐


















