文章目录
前言
之前实验中的延时功能都是通过循环、delay/Hal_delay函数等实现,本次作业通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。
一、STM32CubeMX上创建并配置项目
1.新建stm32f103c8项目
2.启动时钟
打开外部时钟,点击“System Core” ,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”.
选择调试接口,选择SYS。,在右侧弹出的菜单栏中选择“Serial Wire”
3.配置IO
配置PC15,并命名为D1。这里我们只使用一个LED。
4.配置定时器2,定时器3
这里我们使用定时器2来实现定时LED闪烁的功能。如图所示,依次点击位置1,选中定时器2;位置2,配置定时器2的时钟源为内部时钟;位置3,分频系数为71,向上计数模式,计数周期为5000,使能自动重载模式。
使用定时器3进行串口通信控制,配置同上
分频系数那里虽然写的是71,但系统处理的时候会自动加上1,所以实际进行的是72分频。由于时钟我们一般会配置为72MHZ,所以72分频后得到1MHZ的时钟。1MHZ的时钟,计数5000次,得到时间5000/1000000=0.005秒。也就是每隔0.005秒定时器2会产生一次定时中断。
5.配置中断。
如下图所示,开启定时器2,3的中断。
如下图