使用定时器发送hello windows 以及控制LED灯闪烁
一、需求分析
之前作业中的延时功能都是通过循环、delay/Hal_delay函数等实现,本次作业通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。请设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。
二、软件配置
2.1新建工程,进行基本配置。
通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:
芯片选择“STM32F103C8”
打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。
选择调试接口,点击“System Core”,选择SYS。,在右侧弹出的菜单栏中选择“Serial Wire”。
2.2配置IO输出口
点击PA2,选择GPIO_Output
2.3 配置定时器
在目录Timers下点击TIM2和TIM3,将Clock Source时钟源选择为Internal Clock内部时钟,设置分频系数为71,向上计数模式,计数周期为5000。
TIM3同上设置
注意:分频系数虽然是71,但系统处理的时候会自动加上1,所以实际进行的是72分频。由于时钟一般会配置为72MHZ,所以72分频后得到1MHZ的时钟;1MHZ的时钟,计数5000次,得到时间5000/1000000=0.005秒;也就是每隔0.005秒定时器2会产生一次定时中断
2.4 配置中断
点击NVIC,勾选TIM2的中断
然后点击Code generation,勾选TIM2的中断优先级
在目录Connectivity下点击USART1,将Mode改为异步通信Asynchronous
2.5 配置时钟
点击Clock,将HCLK改为72,点击回车
2.6项目配置
参照之前实验步骤进行配置
https://blog.csdn.net/Porpoise_/article/details/127303667?spm=1001.2014.3001.5501
三、代码修改
3.1定时器启动代码
将代码放在主函数ma