【STM32CubeMx你不知道的那些事】第三章:STM32CubeMx串口配置(中断接收)
在嵌入式环境中,串口通信是必不可少的通信方式,这一章我们主要是讲解一下HAL库怎么应用串口外设做收发功能。
一、准备工作
1、使用我们第一章配置好工程文件。如图
2、明确原理图上面所需要的串口,这里我们用串口1做实验。
二、具体操作
1、Pinout菜单栏下,串口的选择与配置。配置如图
外设选择USART1,Mode选择Asynchronous(异步通信)。这样右边会显示配置的两个串口脚PA、PA10。
2、在Configuration菜单栏下,点击connectivity下的USART1弹出配置界面,配置如图
1)首先在Parameter Settings 下配置 Baud Rate(波特率)我们这里设置115200(可根据自己需要而定)。
2)在NVIC Setting界面我们要把串口全局中断使能,Enable选项打钩。
3、生成工程
点击Project菜单栏选择Generate code,工程生成完毕。
好了现在基本的串口配置已经完成了,但是光光这里配置是不够的在工程代码里面还需要添加一些函数才能使用。
4、打开MDK工程,工程里面配置
由于HAL库里面串口配置比较繁琐,串口在接收的时候只能一个字节一个字节的接收,而且接受完成一次就需要重新使能接收中断,这里是比较麻烦的。我提供了以下解决办法,这里需要修改两处代码。
1)串口初始化.C里面添加
这里是在串口1初始化的情况下加了接受中断使能和打开接受中断。
代码如下:
void MX_USART1_UART_Init(void)
{huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart1) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);/* USART1 interrupt Init */HAL_NVIC_SetPriority(USART1_IRQn, 1, 0);HAL_NVIC_EnableIRQ(USART1_IRQn);__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);USART1->CR1 |= ((uint16_t)0x2000);//USART Enable
}
2)串口中断函数里面修改
这里串口接受中断本来是调用HAL库自己的回调函数,这里十分浪费时间。所以修改成我们经常使用的方式。
代码如下:
void USART1_IRQHandler(void)
{unsigned char temp;if(__HAL_UART_GET_IT_SOURCE(&huart1,UART_IT_RXNE) != RESET){temp = __HAL_UART_FLUSH_DRREGISTER(&huart1);HAL_UART_Transmit(&huart1,&temp, 1, 100); }HAL_UART_IRQHandler(&huart1); }
HAL_UART_Transmit(&huart1,&temp, 1, 100); 这里我是把接收到的数据返回发送了出去。如果需要其他处理则是在这里调
用解析回调函数。
这里就实现了串口中断方式的接收功能。
发送功能可直接调用HAL库函数 HAL_UART_Transmit(&huart1,arr, 10, 100);
这里huart1代表选用的串口这里是USART1;arr代表传入的数据首地址;10代表的要发出的数据个数10个字节;100代表超时时
间100ms;
如有什么不懂联系加QQ群:1063618791欢迎大家学习交流!
【STM32CubeMx你不知道的那些事】第三章:STM32CubeMx串口配置(中断接收)相关推荐
- 19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行
第三章 spring boot 配置原理实战 3.1.结合配置加载讲解bean自动装配原理 3.2.详解YAML语法及占位符语法 3.3.获取自定义配置的两种实现方法 3.4.配置文件注入值数据校验 ...
- 【STM32CubeMx你不知道的那些事】第十章:STM32CubeMx的SPI外置FLASH(W25Q128)+文件系统(FATFS)+虚拟U盘
这一张我们主要讲解一下STM32CUBEMX新版本 片外FLASH(W25Q128)+FATFS文件系统+虚拟U盘. 一.准备工作 这里我们要想配置SPI和文件系统 并验证需要的准备工作如下: 1 ...
- STM32CUBEMX学习笔记——陶晶驰串口屏中断接收数据
网上很多串口屏的开发都是基于标准库开发的,我本人接触到的开发模式是CUBEMX,两种开发环境导致很多资料之间有点割裂,因此我将自己之前学习标准库的开发方式利用CUBEMX实现的方法写在这,防止自己忘记 ...
- nrf52840 gpiote如何配置中断输入_STM32第四章外部中断管理
点击上方"果果小师弟",选择"置顶/星标公众号"干货福利,第一时间送达!STM32F4 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32F4 ...
- 计算机图形学 opengl版本 第三版------胡事民 第三章更多的绘图工具
opengl 计算机图形学 第三版 第二部分 第三章更多的绘图工具 3.1 概述 第2章中 我们绘图使用的是屏幕窗口的基础坐标系 以像素为单位 屏幕坐标从左下角x从0延伸到scr ...
- flash闪存使用和STM32CUBEMX安装教程【第三天】
flash闪存使用和STM32CUBEMX安装教程 [1]STM32 FLASH [2]嵌入式 Flash 接口 [3]嵌入式 Flash [4]FLASH写入数据函数 [5]FLASH接收数据 [6 ...
- 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...
- 关于系统架构你不知道的那些事-架构设计流程:评估和选择备选方案
关于系统架构你不知道的那些事-架构设计流程:评估和选择备选方案 前言 架构设计第 3 步:评估和选择备选方案 评估和选择备选方案实战 备选方案 1:采用开源 Kafka 方案 备选方案 2:集群 + ...
- STM32CubeMX实现串口DMA中断通信
文章目录 一. 环境 二. 使用STM32CubeMX 三. USART DMA中断通信 1. UART函数库介绍 2. 编写代码 3. 最终效果 四. 软件调试 五. 总结 一. 环境 硬件:stm ...
最新文章
- 《 短文本数据理解》——2.5小结
- 计算机尖端技术,不可思议的尖端技术:Top10
- iOS开发 贝塞尔曲线UIBezierPath(后记)
- PIC中的#pragma idata 和#pragma udata
- C语言中的三目运算符是啥?有何用处?
- java 的SYSTEM类
- HDU 1754 I hate it【线段树之单点替换区间最值】
- DefenseCode ThunderScan 静态代码审计工具
- Java初级笔记-第一章
- android 滚动条 相关属性
- python通过解释器内置的open_Python 之 文件读写的学习
- mysqldump实现数据备份及灾难恢复
- Python 语言程序设计(5-1)函数的定义与使用
- p2p - cdn传输技术杂谈
- c语言通讯录程序设计个人感言,C语言学习感悟(1)
- 仿映客直播礼物特效制作流程
- IntelliJ IDEA设置字体样式
- 部署企业的网络安全方案
- matlab 带通滤波,MATLAB窗函数实现带通滤波器
- 【2020 Java基础快速学习路线】写了很久,这是一份最适合普通大众、非科班的路线