目录
1.实验目标
本实验在实验11的基础上,通过对USART中断的配置及编程,实现USART串口接收数据的功能,同时将接收到的数据发送到USART。
2.实验准备
硬件搭建:ZW-HC32F460-BZ标准版开发板1套
软件搭建:MDK5.22
3. 硬件原理
这里我们使用板载的USB转串口来实现功能。USB转串口对应MCU的USART1,引脚使用PA11(TX)、PA12(RX)。
需要注意:原理图中PA11、PA12通过J31、J32进行跳线切换连接到UART或USB,这里我们跳到UART。
4.驱动代码
为了简化编程,让用户快速上手,我公司针对USART驱动文件进行了深度优化编写,提供开源的Usart.c和Usart.h以供用户使用,现将源文件关键定义及函数做说明。
【USART中断定义】
USART中断主要有:
- 发送器中断:发送数据寄存器空中断TI 和发送完成中断TCI;
- 接收器中断:接收数据寄存器满中断RI 和接收错误中断REI;
- TIMEOUT中断:UART接收数据停止位被检测时TIMEOUT计数器启动,经过设定的TIMEOUT时间(设定单位为接收位数)后未检测到下一帧接收数据时,发生TIMEOUT;
- RX线唤醒停止模式中断:UART通信空闲时,可以让系统进入停止模式以节省电流消耗,在不改变UART PORT设定的情况下,UART单元1可以通过RX线来唤醒系统的停止模式。
在HC32F460.h文件中对中断序号定义如下(以USART1为例):
INT_USART1_EI = 278U,
INT_USART1_RI = 279U,
INT_USART1_TI = 280U,
INT_USART1_TCI = 281U,
INT_USART1_RTO = 282U,
INT_USART1_WUPI = 432U,
我们本节讨论发送器和接收器的四个中断。
为了简化,对于中断向量的定义,我们只定义RI的中断向量,而EI、TI、TCI依次叠加1的形式,以USART1为例进行如下配置。
此时:RI中断向量为0(Int000_IRQn);EI中断向量为1(Int001_IRQn)、TI中断向量为2(Int002_IRQn)、TCI中断向量为3(Int003_IRQn