uart通信代码
时间: 2023-08-06 12:09:35 浏览: 169
下面是一个基于STM32F4系列微控制器的UART通信代码示例,使用USART2通道和115200波特率进行数据传输:
```c
#include "stm32f4xx.h"
#include <stdio.h>
#define UART_PORT USART2
#define UART_BAUDRATE 115200
#define UART_GPIO_PORT GPIOA
#define UART_GPIO_TX_PIN GPIO_Pin_2
#define UART_GPIO_RX_PIN GPIO_Pin_3
#define UART_GPIO_AF GPIO_AF_USART2
#define UART_GPIO_RCC RCC_AHB1Periph_GPIOA
#define UART_RCC RCC_APB1Periph_USART2
void UART_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(UART_GPIO_RCC, ENABLE);
GPIO_InitStructure.GPIO_Pin = UART_GPIO_TX_PIN | UART_GPIO_RX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(UART_GPIO_PORT, &GPIO_InitStructure);
GPIO_PinAFConfig(UART_GPIO_PORT, GPIO_PinSource2, UART_GPIO_AF);
GPIO_PinAFConfig(UART_GPIO_PORT, GPIO_PinSource3, UART_GPIO_AF);
}
void UART_Init(void)
{
USART_InitTypeDef USART_InitStructure;
RCC_APB1PeriphClockCmd(UART_RCC, ENABLE);
USART_InitStructure.USART_BaudRate = UART_BAUDRATE;
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_Rx | USART_Mode_Tx;
USART_Init(UART_PORT, &USART_InitStructure);
USART_Cmd(UART_PORT, ENABLE);
}
int UART_SendChar(char ch)
{
while (USART_GetFlagStatus(UART_PORT, USART_FLAG_TXE) == RESET)
{
}
USART_SendData(UART_PORT, ch);
return ch;
}
int UART_ReceiveChar(void)
{
while (USART_GetFlagStatus(UART_PORT, USART_FLAG_RXNE) == RESET)
{
}
return USART_ReceiveData(UART_PORT);
}
void UART_SendString(char* str)
{
while (*str)
{
UART_SendChar(*str++);
}
}
int main(void)
{
char buf[50];
UART_GPIO_Init();
UART_Init();
sprintf(buf, "UART test\r\n");
UART_SendString(buf);
while (1)
{
char ch = UART_ReceiveChar();
UART_SendChar(ch);
}
}
```
在上面的示例代码中,首先通过GPIO_Init函数初始化UART的GPIO引脚,然后通过USART_Init函数初始化UART通道的参数和波特率。发送和接收数据的函数分别是UART_SendChar和UART_ReceiveChar,其中UART_SendString函数用于发送字符串。在主函数中,首先发送一条测试信息,然后进行无限循环,接收并发送UART收到的每个字符。
阅读全文