STM8L051F3的TIM2相关知识

描述

本文介绍STM8L051F3的TIM2相关知识。内容分为以下几部分:

  • TIM4简介
  • TIM4基本定时

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。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_40110761 03-28
0 回复 举报
这个芯片能做us级别的定时吗 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分