使用STM32F103C8T6定时器实现精确时间控制
文章目录
1.STM32CubeMX新建工程
芯片选择STM32F103C8
2.配置RCC
3.配置SYS
4.设置io
C15设置为GPIO_Output
User Label设置为D1
5.配置定时器2
Clock Source设置为Internal Clock
分频系数设为71,系统在处理时会自动加1,所以实际上分频是72。
由于时钟我们一般会配置为72MHZ,所以72分频后得到1MHZ的时钟。
1MHZ的时钟,计数5000次,得到时间5000/1000000=0.005秒。也就是每隔0.005秒定时器2会产生一次定时中断。
6.设置中断
7.配置时钟
8.USART
Model选择Asynchronous
9.代码添加
1.在创建的项目main.c中添加
HAL_TIM_Base_Start_IT(&htim2);
- 5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。
该函数为定时器的中断回调函数,当产生定时中断的时候,会自动调用这个函数。在函数内部定义了一个静态变量:time_cnt和time_call。当它大于等于400的时候,才会执行if里面的代码。也就是说需要发生400次中断,才会让LED的状态翻转。前面已经算过了,一次定时中断的时间是0.005秒,所以400次中断的时间是0.005*400=2秒。也就是说每隔2秒,LED的状态翻转一次。
3.构建,烧录,上电
10.参考
http://www.mcublog.cn/stm32/2021_01/stm32cubemx-dingshiqi-led/