打印

【连载】STM8L051F3_07_TIM4应用

[复制链接]
1089|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caijie001|  楼主 | 2018-5-24 17:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文介绍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。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:21ic公开课专区:http://open.21ic.com/ 21ic资料下载中心:http://dl.21ic.com/ 21ic项目外包中心:http://project.21ic.com/ 杰杰欢迎大家有空常来赛事专区逛逛

131

主题

3790

帖子

63

粉丝