I51开发板 第七讲:定时器之库函数

  • SingleYork
  • LV5工程师
  • |      2016-08-23 18:43:18
  • 浏览量 1883
  • 回复:17
本帖最后由 SingleYork 于 2016-8-29 20:26 编辑 bg7.pngI51开发板 第六讲:定时器之配置篇 https://bbs.icxbk.com/community/forum.php?mod=viewthread&tid=65517 (出处: ICKEY BBS)

在前一讲里,简单了介绍了一下定时器的使用,这一讲,主要介绍跟定时器使用有关的库函数。

首先,在定时器库函数的头文件timer.h里定义了一个定时器的结构体,结构体中定义了很多跟定时器相关的成员变量:

其中,TIM_Mode定时器的工作模式选择,对应的模式如下表所示:

TIM_Polity为中断优先级:

TIM_Interrupt为中断允许或禁止:

TIM_ClkSource为时钟源:

TIM_ClkOut为可编程时钟输出:

TIM_Value为一个16位的定时器初值;

TIM_Run为初始化后是否允许定时器:

那么,在程序应用的时候,纠结是怎么配置的呢?我们就拿前一讲的例程来简单讲解一下吧:

void        Timer_config(void)

{

        TIM_InitTypeDef                TIM_InitStructure; 

        

        TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload; 

        TIM_InitStructure.TIM_Polity    = PolityLow;

        TIM_InitStructure.TIM_Interrupt = ENABLE;

        TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;

        TIM_InitStructure.TIM_ClkOut    = DISABLE;

        TIM_InitStructure.TIM_Value     = 65536UL - (MAIN_Fosc / 1000UL); 

        TIM_InitStructure.TIM_Run       = ENABLE; 

        Timer_Inilize(Timer0,&TIM_InitStructure); 

}

在上面的代码中:

TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; 就是设置的定时器的工作模式为16为自动重载,即定时器工作方式0;

TIM_InitStructure.TIM_Polity = PolityLow;设定了定时器0的中断优先级为低优先级;

TIM_InitStructure.TIM_Interrupt = ENABLE;设定了是否允许定时器中断;

TIM_InitStructure.TIM_ClkSource= TIM_CLOCK_1T;指定时钟源,即1T还是12T;

TIM_InitStructure.TIM_ClkOut = DISABLE;是否允许输出高速脉冲,;

TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000UL);定时器初值;

TIM_InitStructure.TIM_Run = ENABLE;是否初始化后启动定时器;

Timer_Inilize(Timer0,&TIM_InitStructure);初始化定时器T0/T1/T2;

定时器的初始化也是通过结构体来实现的。那么,在一下将,本菜将会跟大家一起来详细学习一下结构体,敬请期待。

I51开发板 第八讲:结构体 https://bbs.icxbk.com/community/forum.php?mod=viewthread&tid=65650 (出处: ICKEY BBS)
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
我们都一样 2016-08-24
讲得不错,我会一直学习的
0   回复
举报
发布
SingleYork 回复 2016-08-24
感谢支持……
0   回复
举报
荣丰宇 回复 2016-08-24
感觉都跟着 ST的固件库 感觉走了
0   回复
举报
SingleYork 回复 2016-09-05
感谢支持,有时间记得多来逛论坛……
0   回复
举报
x
收藏成功!点击 我的收藏 查看收藏的全部帖子