目录
一、定时器的工作原理
二、定时器功能的实现
(a)官方提供的定时器4的例程
(b)修改官方提供的例程,使其更加符合我们的需求
(c)代码分析
(d)代码汇总
三、利用定时器4完成一个systick
(1)修改定时器4的参数
(2)参数的简单计算
(3)在上面的基础上修改代码,实现systick
一、定时器的工作原理
定时器:定时器的作用主要就是用来精准定时的。
定时器的本质就是一个计数器,这里涉及两个关键参数
● 单位计数周期:
● 定时器计数的个数:
举例: 如果我们要做一个2分钟的定时,如果单位是秒,计数的个数:120;如果单位是分钟,计数的个数:2
二、定时器功能的实现
首先,我们通过STM8L101单片机的规格书查看,STM8L101单片机有TIM2和TIM3(16bit)、TIM4(8bit)
我们通过官方的例程来查看官方提供的例程。本节课我们用定时器4来实现LED灯的反转。
(a)官方提供的定时器4的例程
(b)修改官方提供的例程,使其更加符合我们的需求
● 修改定时器4的分频
TIM4_TimeBaseInit(TIM4_Prescaler_16384, 0xFF);
● //将测试的IO口配置成PA3
GPIO_Init(GPIOA, GPIO_Pin_0, GPIO_Mode_Out_PP_Low_Fast);
● 配置系统主时钟 (重要)
CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv1);
系统时钟: 内部16M
(c)代码分析
实际 工作中,外设部分的代码,我们先移植别人的代码,实现对应功能,然后再分析代码。
(d)代码汇总
三、利用定时器4完成一个systick
因为STM8单片机是一个资源相对较少的单片机,所以我们自己做一个简单的系统tick。系统tick的周期为1ms,这1ms我们用定时器4来实现。
(1)修改定时器4的参数
(2)参数的简单计算
STM8L单片机的内部时钟是16MHZ,如果64分频后就是250k,相当于周期是4us。
计数的个数是4us*250=1ms
(3)在上面的基础上修改代码,实现systick
● 新建hal_tim4.c 和hal_tim4.h 文件,并加载到标准工程中:
hal_tim4.c
hal_tim4.h
main.c