目录
1.实验目标
本实验在实验11的基础上,增加TIMEOUT中断功能,实现USART串口收发数据;指定时间没有接收到数据点亮LED灯。
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以供用户使用,现将源文件关键定义及函数做说明。
【TIMEOUT定时定义】
UART接收数据停止位被检测时TIMEOUT计数器启动,经过设定的TIMEOUT时间(设定单位为接收位数)后未检测到下一帧接收数据时,发生TIMEOUT,如果此时CR1.RE=1,则TIMEOUT状态位USARTn_SR.RTOF置位,如果此时USARTn_CR1.RE=0,则等待USARTn_CR1.RE=1后TIMEOUT状态位USARTn_SR.RTOF置位。
TIMEOUT计数器采用Timer0模块的计数器,具体对应关系如下:
- USART1:Timer0 Unit1 A通道
- USART2:Timer0 Unit1 B通道
- USART3:Timer0 Unit2 A通道
- USART4:Timer0 Unit2 B通道
Timer更多详细用法详见第五章,这里以U