一、用定时器控制小灯周期性闪烁
1、定时器介绍
基本定时器
基本定时器是一个简单的定时器,通常用于生成精确的时间延迟。它具有单个16位计数器,可以通过设置预分频系数实现不同的计数速度。基本定时器通常用于简单的定时任务。
通用定时器
通用定时器是一种更为复杂和功能强大的定时器,通常用于更复杂的定时和计数任务。STM32系列微控制器通常配备了多个通用定时器,如TIM1、TIM2等。通用定时器具有多个16位或32位计数器,可以通过设置预分频系数和计数周期来实现不同的计数速度和定时精度。
定时器配置
为了配置和控制STM32定时器,我们可以使用相应的库函数或直接操作寄存器。以下是一些常用的配置参数:
-
预分频系数:用于设置定时器的计数速度,可以根据需要进行调整。
-
计数周期:用于设置定时器的计数周期,决定定时器溢出的时间间隔。
-
工作模式:定时器可以工作在不同的模式下,如定时器模式、计数器模式、PWM模式等。
-
中断使能:可以选择是否使能定时器的中断功能,用于触发中断任务。
定时器的数学公式
在定时器的配置和应用过程中,我们可以使用一些数学公式来计算和调整定时器的参数。以下是一些常用的数学公式:
- 计数频率:计数频率 = 主时钟频率 / (预分频系数 * 计数周期)
- PWM占空比:PWM占空比 = (比较值 / 计数周期) * 100%
2、环境搭建
选择用库函数的方式来建立工程
3、代码编写
main.c文件:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "PWM.h"
uint8_t i;
int main(void)
{
OLED_Init();
PWM_Init();
while (1)
{
PWM_SetCompare1(0);
Delay_ms(2000);
PWM_SetCompare1(100);
Delay_ms(2000