您现在的位置: 主页 > MCU > 单片机应用 > 神舟IV学习笔记(七)定时器中断流水灯 -
本文所属标签:
为本文创立个标签吧:

神舟IV学习笔记(七)定时器中断流水灯 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]通用定时器的功能非常强大,能够测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM),也能够用于定时中断任务。其实系统滴答和实时时钟功能类似于定时器。51单片机也有定时器,可以使用软件的方式

通用定时器的功能非常强大,能够测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM),也能够用于定时中断任务。其实系统滴答和实时时钟功能类似于定时器。51单片机也有定时器,可以使用软件的方式实现实时时钟的功能,就是断电后会到初始状态了。

本文引用地址: http://www.21ic.com/app/mcu/201808/781888.htm

神舟IV开发板采用的是STM32F107VCT,内部含有多达10个定时器,其中TIM1和TIM8是高级控制定时器在APB2总线上,TIM2—TIM7是挂在APB1上的,所以使用起来要注意的是,开启不同的时钟。

我们就用通用定时器TIM2实现LED以1s速度流水灯的功能。首先我们看看时钟,TIM2挂在APB1总线上,而APB1的最大时钟速度为36MHZ。由于系统初始化将APB1的分频比设置为2,所以TIM2的时钟就是APB1时钟的2倍,等于系统时钟。TIM2具有16位可编程预分频器,范围可以从1到65536之间。这里我们设置分频比为7200,得到10KHZ的计数时钟。再设置自动装载的计数值为10000,这样就得到1s的定时器间隔,最后使能中断,配置中断函数。


主要代码为:

static void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

/* Set the Vector Table base address at 0x08000000 */

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);

/* Enable the TIM5 gloabal Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

int main(void)

{

/* Setup STM32 system (clock, PLL and Flash configuration) */

SystemInit();

/* Add your application code here

*/

LED_Configuration();//LED时钟和端口配置

TIM2_Configuration();//TIM2时钟和端口配置

NVIC_Configuration();//中断配置

/* Infinite loop */

while (1)

{

}

}

void TIM2_IRQHandler(void)//定时器中断函数

{

if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)

{

TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

LED_Spark();//led流水灯

}

}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > 神舟IV学习笔记(七)定时器中断流水灯 -
 

"神舟IV学习笔记(七)定时器中断流水灯 -"的相关文章

网站地图

围观()