在前一讲里,简单了介绍了一下定时器的使用,这一讲,主要介绍跟定时器使用有关的库函数。
首先,在定时器库函数的头文件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)