STM32 UART(接收 ,发送数据)

本文介绍了在STM32F401 discovery板上使用UART6进行数据接收和发送的实践,涉及GPIO和USART初始化,以及解决IAR编译器中遇到的库配置问题。提供了工程代码下载链接,并鼓励分享知识。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

UART接收发送数据:

平台:STM32F401 discovery版

此代码用的UART6,TX,RX对应的PIN脚是PC6,PC7

如图:


代码如下:

步骤一:初始化串口的GPIO,USART,并且配置上UART的RX中断

void USART6_Config(void){   USART_InitTypeDef USART_InitStructure;   NVIC_InitTypeDef NVIC_InitStructure;  G
要使用STM32进行数据接收发送,需要使用UART通信协议。以下是通用的STM32数据接收发送代码示例(以STM32F103为例): 接收数据: ```c #include "stm32f10x.h" #include <stdio.h> USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; uint16_t buffer[10]; uint8_t counter = 0; int main(void) { // 初始化时钟和IO RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化参数 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_Rx; USART_Init(USART1, &USART_InitStructure); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); NVIC_EnableIRQ(USART1_IRQn); while (1) { // 接收到数据后执行某些操作 // ... } } void USART1_IRQHandler() { if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { buffer[counter] = USART_ReceiveData(USART1); counter++; if (counter == 10) { counter = 0; // 接收完成后执行某些操作 // ... } } } ``` 发送数据: ```c #include "stm32f10x.h" #include <stdio.h> USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; int main(void) { // 初始化时钟和IO RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化参数 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_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); while (1) { // 发送数据 USART_SendData(USART1, 'A'); // 延时一段时间 for (int i = 0; i < 1000000; i++); } } ``` 以上只是代码示例,实际使用时需要根据具体需求进行修改和配置。另外,还可以使用DMA方式进行数据传输和接收,更加高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值