本文介绍STM8L051F3的TIM2相关知识。内容分为以下几部分:
本文主要介绍STM8L051F3的TIM4,TIM4是基本定时器,由一个8位的自动重装载的向上计数器和一个可编程预分频器组成,功能简单,一般用于基本计时,定时器溢出时可产生一个定时器溢出中断,TIM4的板块图如下所示:
TIM4的主要性能如下:
TIM4是8位基本的基本定时器,时钟采用的是系统时钟。
本小节介绍如何配置TIM4每1ms更新(中断)一次,累计500次(500ms)则对LED1的状态进行取反。使用的例程:STM8L051F3_07_TIM4。TIM4配置步骤如下:
1)使能TIM4外设时钟
2)TIM4基本配置:时钟16分频、周期125(定时1ms)
3)清除TIM4更新标志位
4)使能更新中断
5)使能总中断
6)使能TIM4
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。
全部0条评论
快来发表一下你的评论吧 !