STM32CubeMX实现串口中断通信
文章目录
- 一. 环境
- 二. 使用STM32CubeMX
- 三. USART中断通信
- 1. UART函数库介绍
- 2. 编写代码
- 3. 最终效果
- 四. 软件调试
- 五. 总结
一. 环境
- 硬件:stm32f103c8t6 核心板
- 软件:STM32CubeMX 6.3.0
- 软件:keil5 mdk
二. 使用STM32CubeMX
这里与前一篇文章只在于多了个开启串口中断使能。STM32CubeMX实现串口通信_diyu-CSDN博客
三. USART中断通信
1. UART函数库介绍
结构体以及函数定义均在头文件: stm32f1xx_hal_uart.h
- UART结构体定义
UART_HandleTypeDef huart1;
- 串口发送/接收函数
HAL_UART_Transmit():串口发送数据,使用超时管理机制
HAL_UART_Receive():串口接收数据,使用超时管理机制
HAL_UART_Transmit_IT():串口中断模式发送
HAL_UART_Receive_IT():串口中断模式接收
HAL_UART_Transmit_DMA():串口DMA模式发送
HAL_UART_Transmit_DMA():串口DMA模式接收
- 串口中断函数
HAL_UART_IRQHandler(UART_HandleTypeDef *huart); //串口中断处理函数
HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); //串口发送中断回调函数
HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart); //串口发送一半中断回调函数(用的较少)
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); //串口接收中断回调函数
HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);//串口接收一半回调函数(用的较少)
HAL_UART_ErrorCallback();串口接收错误函数
2. 编写代码
在文件main.c
里 main函数外部 添加以下代码
#define LENGTH 4 //接受缓冲区大小
uint8_t RxBuffer[LENGTH]; //接受缓冲区
uint8_t RxFlag = 0; //接收完成标志;0表示接受未完成,1表示接收完成
图中 #define LENGTH 4 这个没有显示出来,但是必须要添加
在main函数内部,while循环外部添加以下代码
//发送提示信息
HAL_UART_Transmit(&huart1,(uint8_t *)"****UART commucition using IT****\n",34,HAL_MAX_DELAY);
HAL_UART_Transmit(&huart1,(uint8_t *)"Please enter 4 characters: \n",30,HAL_MAX_DELAY);
//使能接收中断
HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuffer,LENGTH);
在while循环内部添加一下代码
while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///添加下面代码HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , HAL_MAX_DELAY);HAL_Delay(1000); //延时1sif(RxFlag == 1) //如果接受完成,不在发送数据{HAL_UART_Transmit(&huart1,(uint8_t *)"Recevie Success!\n",17,HAL_MAX_DELAY); //提示接受成功break; //退出循环,不在发送数据}}
在main函数后面,添加中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //串口接收中断回调函数
{if(huart->Instance == USART1) //判断发生接收中断的串口{RxFlag=1; //置为接收完成标志}
}
3. 最终效果
编译,将程序烧录或下载进核心板,打开串口助手查看接收到的数据。
波特率、停止位、数据位、校验位要与配置的一致
当串口没有接受4个字节内容时,每隔一秒串口发送 “hello windows”
当发送4个字节内容时,比如发送“stop”,串口接受完毕后,发送“Recevie Success!”表示接收成功后,不再发送数据
四. 软件调试
如果要进行软件调试,与前一篇文章相同。STM32CubeMX实现串口通信_diyu-CSDN博客
五. 总结
总体而言还是很简单的,只要了解HAL库中的串口发送接收函数以及中断函数,然后调用即可。
这种方式只能固定长度收发,想实现任意长数据收发,可以采用IDLE中断以及DMA接收。
STM32CubeMX实现串口中断通信相关推荐
- 【嵌入式基础】串口中断通信VS串口DMA通信
目录 目录 前言 一.串口通信 1. 通信方式 2.通信速率 3.串口通信的三种工作方式 二.串口中断通信 1.串口中断特点 2.CubeMX配置初始化串口中断相关外设 3.串口中断程序分析 4.实验 ...
- 15_串口中断通信寄存器即库函数配置编写实例
串口中断通信寄存器即库函数配置编写实例 目录 串口中断通信寄存器即库函数配置编写实例 常用的串口相关寄存器: 波特率计算方法: USART_InitTypeDef结构体详解: 串口配置一般步骤: 调试 ...
- STM32G070RBT6基于STM32CubeMX创建串口中断接收数据
STM32G070RBT6基于STM32CubeMX创建串口中断接收数据
- 51单片机 (6)串口中断通信+定时器2串口中断
[若有疑问错误或版权等问题请联系我] [转载请注明出处:http://blog.csdn.net/leytton/article/details/48442129] 51单片机默认使用定时器1作为串口 ...
- STM32CubeMX实现串口DMA中断通信
文章目录 一. 环境 二. 使用STM32CubeMX 三. USART DMA中断通信 1. UART函数库介绍 2. 编写代码 3. 最终效果 四. 软件调试 五. 总结 一. 环境 硬件:stm ...
- STM32CubeMX实现串口通信
文章目录 一. 环境 二. 使用STM32CubeMX 1. 安装固件库 2. 工程设置 三. USART串口通信 1. UART函数库介绍 2. 代码编写 3. 最终效果 四. 软件调试 五. 总结 ...
- 【STM32】HAL库——串口DMA通信(三)
前期准备: STM32CubeMX STM32RCT6核心板 IDE Keil(MDK-ARM) 关于DMA 1. 什么是DMA? DMA(Direct Memory Access,直接存储器访问) ...
- 使用串口中断方式实现串口通信
文章目录 一. 实验环境 二.实验目标 三.串口中断方式特点 四.HAL配置串口通信 五.开发板引脚连接 六.程序代码 (1)接收单个字符控制串口发送 (2)接收多个字符控制串口发送 七.总结 一. ...
- 采用串口中断方式实现串口通信
文章目录 前言 一.中断介绍 1.中断方式 2.中断优先级 3.中断向量 二.利用STM32CubeMX配置项目 三.在keil配置代码 四.实际效果 五.总结 六.参考资料 前言 一.中断介绍 1. ...
最新文章
- 报Java面授班有哪些优势
- Red5安装与入门 与FMS配置
- 【嵌入式】嵌入式天地博客汇总
- CF891B-Gluttony【构造】
- 离线部署 CDH 6.2 及使用 CDH 部署 Hadoop3 大数据平台集群服务
- LintCode,hihoCoder,LeetCode有什么区别?
- js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量)...
- ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
- 产品生命周期管理PLM系统概述——睿思成研发管理咨询(www.wiserdm.com)
- vue html if,vue中v-if使用方法详解
- matlab怎么使用 spm_vol,SPM12批量处理预处理数据
- dq电压方程耦合项符号问题
- 网易2018校园招聘编程题真题集合
- 输入字符串判断有多少个字母,数字和其他
- 什么是统一身份认证?
- 对话霍金弟子:AI能帮助人类到其他星球进行时空旅行 | AI英雄
- 低代码,虽然有点毒瘤,但管用就好
- 吉林华微电子: 自主研发砥砺行 助力打造“中国芯”
- sequelize 向数据库插入数据,自增id该如何添加
- Qt 使用QNetworkAccessManager实现Http操作