版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.7.7 串口通信本节内容串口通信概述轮询方式的串口通信HAL库外设初始化设计思想中断方式的串口通信2.7.7 中断方式的串口通信1 中断方式的接口函数--
南昌大学“卓越”辅导员培养工程建设串口中断方式发送数据时,将一字节数据放入数据寄存器DR;接收数据时,将DR的内容存放到用户存储区;中断方式不必等待数据的传输过程,只需要在每字节数据收发完成后,由中断标志位触发中断,在中断服务程序中放入新的一字节数据或者读取接收到的一字节数据;在传输数据量较大,且通信波特率较高(大于384000)时,如果采用中断方式,每收发一个字节的数据,CPU都会被打断,造成CPU无法处理其他事务。因此在批量数据传输,通信波特率较高时,建议采用DMA方式。串口中断方式的特点UART1 串口中断方式发送函数:HAL_UART_Transmit_IT()函数原型HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart,uint8_t*pData,uint16_t
Size)功能描述在中断方式下发送一定数量的数据入口参数1huart
:串口句柄的地址入口参数2pData:待发送数据的首地址入口参数3Size :
待发送数据的个数返回值HAL状态值:HAL_OK表示发送成功;HAL_ERROR表示参数错误;HAL_BUSY表示串口被占用注意事项函数将使能串口发送中断函数将置位TXEIE和TCIE,使能发送数据寄存器空中断和发送完成中断。完成指定数量的数据发送后,将会关闭发送中断,即清零TXEIE和TCIE。因此用户采用中断方式连续发送数据时,需要重复调用该函数,以便重新开启发送中断当指定数量的数据发送完成后,将调用发送中断回调函数HAL_UART_TxCpltCallback进行后续处理该函数由用户调用。--
南昌大学“卓越”辅导员培养工程建设发送过程每发送一个数据进入一次中断,在中断中根据发送数据的个数来判断数据是否发送完成。2 串口中断方式接收函数:HAL_UART_Receive_IT函数原型HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef
*huart, uint8_t
*pData, uint16_t
Size)功能描述在中断方式下接收一定数量的数据入口参数1huart
:串口句柄的地址入口参数2pData:存放接收数据的首地址入口参数3Size :待接收数据的个数返回值HAL状态值:HAL_OK表示接收成功;HAL_ERROR表示参数错误;HAL_BUSY表示串口被占用注意事项函数将使能串口接收中断函数将置位RXNEIE,使能接收数据寄存器非空中断RXNE。完成指定数量的数据接收后,将会关闭接收中断,即清零RXNEIE。因此用户采用中断方式连续接收数据时,要重复调用该函数,以重新开启接收中断当指定数量的数据接收完成后,将调用接收中断回调函数HAL_UART_RxCpltCallback进行后续处理该函数由用户调用--
南昌大学“卓越”辅导员培养工程建设接收过程每接收一个数据进入一次中断,在中断中根据发送数据的个数来判断数据是否接收完成。UART接口函数:HAL_UART_IRQHandler函数原型voidHAL_UART_IRQHandler(UART_HandleTypeDef
*huart)功能描述作为所有串口中断发生后的通用处理函数入口参数huart:串口句柄的地址返回值无注意事项函数内部先判断中断类型,并清除对应的中断标志,最后调用回调函数完成对应的中断处理该函数由CubeMX自动生成3 串口中断通用处理函数:HAL_UART_IRQHandlerUART4 串口发送中断回调函数:HAL_UART_TxCpltCallback接口函数:
HAL_UART_TxCpltCallback函数原型voidHAL_UART_TxCpltCallback(UART_HandleTypeDef
*huart)功能描述回调函数,用于处理所有串口的发送中断,用户在该函数内编写实际的任务处理程序入口参数huart:串口句柄的地址返回值无注意事项函数由串口中断通用处理函数HAL_UART_IRQHandler调用,完成所有串口的发送中断任务处理函数内部需要根据串口句柄的实例来判断是哪一个串口产生的发送中断函数由用户根据具体的处理任务编写UART5 串口接收中断回调函数:HAL_UART_RxCpltCallback接口函数:
HAL_UART_RxCpltCallback函数原型voidHAL_UART_RxCpltCallback(UART_HandleTypeDef
*huart)功能描述回调函数,用于处理所有串口的接收中断,用户在该函数内编写实际的任务处理程序入口参数huart:串口句柄的地址返回值无注意事项函数由串口中断通用处理函数HAL_UART_IRQHandler调用,完成所有串口的接收中断任务处理函数内部需要根据串口句柄的实例来判断是哪一个串口产生的接收中断函数由用户根据具体的处理任务编写--
南昌大学“卓越”辅导员培养工程建设6 串口中断使能函数:__HAL_UART_ENABLE_IT接口函数:
HAL_UART_ENABLE_IT函数原型
HAL_UART_ENABLE_IT(
HANDLE
,
INTERRUPT
)功能描述使能对应的串口中断类型参数1
HANDLE
:串口句柄的地址参数2
INTERRUPT
:串口中断类型,该参数几个常用的取值如下:UART_IT_TXE :发送数据寄存器空中断UART_IT_TC :发送完成中断UART_IT_RXNE:接收数据寄存器非空中断UART_IT_IDLE :线路空闲中断返回值无注意事项该函数是宏函数,进行宏替换,不发生函数调用函数需要由用户调用,用于使能对应的串口中断类型--
南昌大学“卓越”辅导员培养工程建设7 串口中断标志查询函数:
HAL_UART_GET_FLAG接口函数:
HAL_UART_GET_FLAG函数原型
HAL_UART_GET_FLAG
(
HANDLE
,
INTERRUPT
)功能描述查询对应的串口中断标志参数1
HANDLE
:串口句柄的地址参数2
INTERRUPT
:串口中断类型,该参数几个常用的取值如下:UART_IT_TXE :发送数据寄存器空中断UART_IT_TC :发送完成中断UART_IT_RXNE:接收数据寄存器非空中断UART_IT_IDLE :线路空闲中断返回值无注意事项该函数是宏函数,进行宏替换,不发生函数调用函数需要由用户调用,用于查询对应的串口中断标志UART接口函数:
HAL_UART_CLEAR_IDLEFLAG函数原型
HAL_UART_CLEAR_IDLEFLAG
(
HANDLE
)功能描述清除串口的空闲中断标志参数
HANDLE
:串口句柄的地址返回值无注意事项该函数是宏函数,进行宏替换,不发生函数调用函数需要由用户调用,用于清除对应的串口空闲中断标志8 空闲中断标志清除函数:
HAL_UART_CLEAR_IDLEFLAG2 基础任务:固定长度的数据收发基本任务01任务目标掌握CubeMX软件配置串口实现中断方式通信的方法。02任务内容利用串口调试助手,从PC上发送10个字符到STM32F4开发板,STM32F4开发板收到后原样发回到PC。UART固定长度的数据收发--
南昌大学“卓越”辅导员培养工程建设设计思路采用前后台编程模式;前台程序为中断服务程序,一旦数据接收完成,则设置一个标志位为1;后台程序为while(1)的死循环,在循环中不断检测标志位是否为1。如果为1,表明数据接收完成,并存放在接收缓冲区中。然后进行后续处理:先清除标志位,再把接收的数据原样发回。前后台编程模式UART异步模式,无硬件流控串口外设配置设置通信参数:波特率1152008位数据位无奇偶校验1位停止位使能接收和发送16倍过采样串口中断设置UART使能串口中断使能串口1的中断中断优先级使用默认值用户宏定义及变量定义用户初始化代码步骤六:main.c程序编写便于修改缓冲区的大小用户应用代码步骤六:程序编写接收中断回调函数串口调试助手串口中断过程UART串口中断处理过程HAL_UART_Receive_ITUSART1_IRQHandlerHAL_UART_IRQHandlerUART_Receive_ITHAL_UART_RxCpltCallback串口中断方式接收函数串口1的中断服务程序串口中断通用处理函数串口中断接收函数串口接收中断回调函数2.7.8
挑战任务:串口控制LED流水灯的
显示样式任务要求UART需求分析
任务要求UART需求分析初始模式:8个LED灯全部熄灭。用户用PC端串口调试助手给核心板的串口1发送指令控制显示样式的切换。例如:发送mode1,流水灯按样式1显示,发送mode2,按样式2显示,…,发送stop,8个LED灯全部熄灭。实验电路(1)核心板MCU:STM32F103ZET6。(2)LED7~LED0依次连接到PC7~PC0,低电平点亮,高电平熄灭。(3)USB线经CH340G转换连接到核心板的USART1(PA9/PA10)。(4)接口电路如图所示。任务实施UART根据本任务要求,需要使用的MCU为STM32F103ZET6,外设包括USART1、PC7~PC0。PC7~PC0配置为推挽输出,默认为高电平。USART1的波特率为115200,使能全局中断。任务实施UART另外,还需要对STM32F103的调试端口、时钟系统等系统组件进行配置。添加用户变量定义步骤六:程序编写步骤六:程序编写用户函数声明用户函数定义在main.c中添加如下代码:步骤六:程序编写添加头文件添加初始化代码添加用户代码在main.c中添加如下代码:步骤六:程序编写在main.c中添加如下代码:打开main.h,添加用户自定义串口中断服务函数声明在main.c中定义此函数步骤六:程序编写打开stm32f1xx_it.c,调用用户自定义串口中断服务函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师个人思想总结(3篇)
- 2026主操面试题目大全及答案
- 2026年一建市政实务考前三套密押试卷及答案
- 2026年一建民航实务考前历年真题重组试卷及答案
- 2026船务主管面试题及答案
- 2026年一建经济考前综合仿真测评试卷及答案
- 2026调研相关面试题目及答案
- 2026岗位适配面试题目及答案
- 2026惠民工程面试题及答案
- 数据交换服务接口(API)设计、油气田生产监控预警、应急保障、物料与能量平衡、运营优化、调度指挥多元数据互联与业务场景
- 燃气安全知识培训天然气安全教育课件
- 食品安全地方标准 桑黄
- 2024年辽宁省中考语文真题
- 企业伦理与社会责任实践案例
- 中建群塔作业施工方案群塔安全方案
- RB/T 180-2017基于过程的质量管理体系审核指南
- GB/T 9768-2008轮胎使用与保养规程
- GB/T 17573-1998半导体器件分立器件和集成电路第1部分:总则
- GB/T 17431.2-2010轻集料及其试验方法第2部分:轻集料试验方法
- GB/T 13389-2014掺硼掺磷掺砷硅单晶电阻率与掺杂剂浓度换算规程
- GA/T 642-2020道路交通事故车辆安全技术检验鉴定
评论
0/150
提交评论