实验目的和要求
1、实验目的
- 掌握STM32串口通信原理。
- 学习编程实现STM32的UART通信
- 掌握STM32中断程序设计流程。
- 熟悉STM32固件库的基本使用。
- 熟悉STM32定时器中断设计流程。
2、实验要求
设计一个家用计时器,其功能如下:
- 利用串口设置计时时间,格式:XX:XX:X 例如01:59:8(计时时间设置为1分59秒8, 8为0.8秒)
- 利用串口下发命令完成 启动计时、终止计时、暂停计时功能
- 当系统接收到启动命令后,运行灯LED0执行1秒频率的闪烁,同时发送给上位机格式为XX:XX:X计时时间,计时过程中每间隔10秒向上位机发送格式为XX:XX:X的剩余计时时间(计时器为倒计时器,从设定计时时间递减,直到00:00:0结束)
- 计时结束时LED0常亮,如设置新的计时时间,LED0熄灭;当通过终止计时命令提前终止计时后,系统向上位机输出“终止计时”,LED0熄灭
- 系统接收到暂停命令后,LED0常亮,向上位机发送剩余计时时间+暂停,系统停止计时,可以通过启动命令接着计时
说明:上位机为PC,系统指STM32;使用MDK、虚拟串口软件和串口调试助手完成软仿真,并以合适时间截图作为实验数据(证明完成以上功能的多个截图),串口调试助手软件应能显示时间戳,以便观察时间间隔;AB:CD:E格式的时间中CD为00~59,E为0~9。
硬件设计电路
1、本实验需要用到的硬件资源有:
1) 指示灯 DS0
2) 串口 1
2) 定时器 TIM3
本实验将通过串口1发送不同的命令控制TIM3 的中断来控制 DS0的亮灭和计时器的显示时间,DS0的电路在前面实验已经有体会了。而TIM3 属于 STM32 的内部资源,只需要软件设置即可正常工作。
2、串口和STM32通用定时器硬件原理概述:
Ⅰ、串口原理概述:
(1)串口硬件原理图
图 2.1 UART1 硬件原理图UART1 硬件原理图
图 2.2 串口引脚
PA9为STM32 UART1的输出线,PA10为 STM32 UART1的输入线。需要对这两个引脚进行初始化
(2)STM32 串口简介
串口通讯(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
串口通讯提供了一种灵活的方法来与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 UART 利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信。它也支持LAN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC 规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA 方式,可以实现高速数据通信。
接口通过三个引脚与其他设备连接在一起(见图2.2)。任何UART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。 RX:接收数据输入。通过采样技术来区别数据和噪音,从而恢复数据。 TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O 端口配置。当发送器被激活,并且没东西发送时,TX 引脚处于高电平。
UART模式的操作具有下列特点:
1)8位或9位负载数据
2)奇校验、偶校验或者无奇偶校验
3)配置起始位和停止位电平
4)独立收发中断
5)独立收发DMA触发
6)奇偶校验和帧校验出错状态
UART模式提供全双工传送,接收器中的位同步不影响发送功能。传送一个UART字节包含1个起始位、8个数据位、1个作为可选项的第9位数据或者奇偶校验位再加上1个或2个停止位。注意,虽然真实的数据包含8位或者9位,但是,数据传送只涉及一个字节。
Ⅱ、STM32通用定时器原理概述:
(1)STM32通用定时器硬件原理:
STM32的通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。
STM32有4个通用定时器(TIM2、TIM3、TIM4、TIM5),它们适用于多种场合,除了基本的定时,它主要用在测量输入脉冲的频率、脉冲宽与输出PWM脉冲的场合,还具有编码器的接口。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。