能否提供一个STM32通过串口正确发送数据的C语言代码示例?
时间: 2024-11-09 15:29:09 浏览: 30
STM32F103与淘晶驰触摸屏的串口通讯C语言
当然可以,这里是一个简单的STM32通过USART(通用同步异步收发器)发送字符串的C语言代码示例。假设你已经配置了USART并启用了它。这个例子使用的是HAL库。
```c
#include "stm32f1xx_hal.h"
#include "usart.h"
// 定义发送的数据
const char* dataToSend = "Hello from STM32!";
void USART_TransmitData(uint8_t *tx_data, uint16_t len)
{
HAL_StatusTypeDef status;
while(len > 0)
{
// 确保发送缓冲区有足够的空间
if(HAL_UART_GetDataCount(&huart2) < USART_TX_BUFFER_SIZE)
{
// 发送一个字符
status = HAL_UART_Transmit(&huart2, tx_data, 1, HAL_MAX_DELAY);
if(status != HAL_OK)
{
while(1); // 处理错误情况,这里简单地陷入死循环
}
len--;
tx_data++;
}
else
{
// 等待发送缓冲区空闲
HAL_Delay(1);
}
}
}
int main(void)
{
// 初始化硬件和USART
HAL_Init();
MX_USART2_UART_Init();
// 将发送的数据转换为字节指针
const uint8_t* transmitBuffer = (uint8_t*)dataToSend;
// 开始发送数据
USART_TransmitData(transmitBuffer, strlen(dataToSend));
while (1)
{
// 主程序继续运行,等待更多数据或中断
}
}
```
阅读全文