生成嵌入式场景的uart通信代码实例
时间: 2024-10-22 10:15:46 浏览: 41
linux uart实例2:testlcd
在嵌入式系统中,UART(Universal Asynchronous Receiver Transmitter,通用异步收发传输器)是一种常见的串行通信接口。下面是一个简单的基于C语言的STM32微控制器(如STM32F103)通过USART进行UART通信的例子:
```c
#include "stm32f10x.h" // 包含STM32库头文件
// 定义发送数据的全局变量
uint8_t data_to_send[] = {'H', 'e', 'l', 'l', 'o', '\r', '\n'};
const uint16_t data_len = sizeof(data_to_send);
void USART_Init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB1Periph_USART1, ENABLE); // 启动GPIOA和USART1时钟
// GPIO配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // RX 引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 接地模式
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // TX 引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// USART初始化
USART_InitStructure.USART_BaudRate = 9600; // 设置波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE); // 开启USART模块
}
void UART_SendData(void) {
while (!USART_GetFlagStatus(USART1, USART_FLAG_TXE)); // 等待发送缓冲区空闲
for (uint16_t i = 0; i < data_len; i++) {
USART_SendData(USART1, data_to_send[i]); // 发送每个字符
}
}
int main(void) {
USART_Init();
UART_SendData();
while (1); // 无限循环,程序会一直运行
}
阅读全文