本文介绍STM8L051F3的TIM2相关知识。内容分为以下几部分:
1、TIM4简介本文主要介绍STM8L051F3的TIM4,TIM4是基本定时器,由一个8位的自动重装载的向上计数器和一个可编程预分频器组成,功能简单,一般用于基本计时,定时器溢出时可产生一个定时器溢出中断,TIM4的板块图如下所示:
TIM4的主要性能如下:
- 8位自动重装载向上计数器
- 4位可编程预分频器
- 中断产生:
- DMA请求产生:
TIM4是8位基本的基本定时器,时钟采用的是系统时钟。
2、TIM4基本定时2.1 TIM4定时器配置本小节介绍如何配置TIM4每1ms更新(中断)一次,累计500次(500ms)则对LED1的状态进行取反。使用的例程:STM8L051F3_07_TIM4。TIM4配置步骤如下:
1)使能TIM4外设时钟
2)TIM4基本配置:时钟16分频、周期125(定时1ms)
3)清除TIM4更新标志位
4)使能更新中断
5)使能总中断
6)使能TIM4
2.2 例程介绍TIM4的配置在tim4.c文件中实现:
void TIM4_Config(void)
{
/* TIM4配置: - TIM4时钟为系统时钟,也就是HSI/8 = 2MHz,配置每1ms更新一次应如下设置 2M / (16 * 125) = 1000Hz = 1ms;16为预分频值,125为周期值 */ /* 使能 TIM4 C时钟 */ CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE); /* Time4基本配置 */ TIM4_TimeBaseInit(TIM4_Prescaler_16,(125-1)); /* 清除TIM4更新标志位 */ TIM4_ClearFlag(TIM4_FLAG_Update); /* 使能更新中断 */ TIM4_ITConfig(TIM4_IT_Update, ENABLE); /* 使能总中断 */ enableInterrupts(); /* 使能 TIM4 */ TIM4_Cmd(ENABLE); }
中断函数在stm8l15x_it.c文件下实现(Counts在main.c文件定义,stm8l15x_it.c文件引用):
INTERRUPT_HANDLER(TIM4_UPD_OVF_TRG_IRQHandler,25)
{
/* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ /* 计数值加一 */ Counts++; /* 清除中断标志位 */ TIM4_ClearITPendingBit(TIM4_IT_Update); }
主函数如下所示:
void main(void)
{
LED_Init(); //初始化LED
TIM4_Config();//TIM4配置
while(1) { if(Counts == 500) { GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS); Counts = 0; } } }
使用ST-LINK把程序下载到开发板中,可以看到LED1闪烁,频率2Hz。
|