STM 编写一段函数,使得一个数字变成十六进制发送出去,例如2200,串口发送0下2,0x
时间: 2024-03-21 16:37:45 浏览: 42
16位串口发送的简单编程实现
下面是一个将数字转换为十六进制并通过串口发送的函数:
```c
void send_hex(uint16_t num)
{
uint8_t buf[5] = {0}; // 存放发送数据的缓冲区
uint8_t i = 0; // 计数器
// 将数字转换为十六进制字符串
for (i = 0; i < 4; i++)
{
buf[3 - i] = "0123456789ABCDEF"[num & 0x0F];
num >>= 4;
}
// 将数据发送出去
buf[4] = 0x0D; // 插入回车换行符号
buf[5] = 0x0A;
HAL_UART_Transmit(&huart1, buf, 6, 1000); // 发送数据
}
```
上面的代码中,先将数字转换为十六进制字符串,再插入回车换行符号,并且使用 HAL 库中的函数 HAL_UART_Transmit() 将数据通过串口发送出去。在将数字转换为十六进制字符串时,可以使用位运算符和数组来实现。具体的实现方法是,先将数字的低四位与 0x0F 做与运算,得到该位的十六进制值,再将数字右移 4 位,重复上述过程,直到将所有位都转换为十六进制。
阅读全文