STM32F4定时器中断
设计实现简单计时和秒表
硬件资源:
1) 定时器 TIM3
2)按键key(1,2,3……)
//tim3中断服务函数
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断
{
usecond++;//秒的下一级
//usecond==?根据初始化设置及自己的需要赋值
if(usecond==100){
second++;//秒自加1
usecond=0;//置零重新计时
}if(second==60){
min++;//分自加1
second=0;//置零重新计时
}
if(min==60){
hour++;//时自加1
min=0;//置零重新计时
}
if(hour==24){
//hour满24,hour,min,second,usecond全部置零重新计时
hour=0;
min=0;
usecond=0;
second=0;
}
printf("%d:%d:%d:%d\r\n",hour,min,second,usecond);
到此打开串口助手会看到计时输出
/加如下判断及key实现秒表功能
// KEY_Scan(0):0表示不支持连续按键;1表示支持;(建议不支持)
//KEY_Scan(0)函数开发板自带资源的Key.c中有
//KEY_Scan(0) == 1,2,3,4不同的值表示不同的按键,这里用的是key1
//每按key1一次串口助手显示一个时间
复位键重新计时
/添加如下代码使用需注释上面的printf("%d:%d:%d:%d\r\n",hour,min,second,usecond);输出,方便查看结果
if( KEY_Scan(0) == 1){
printf("%d:%d:%d:%d\r\n",hour,min,second,usecond);
}
//复位键重新计时,
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清楚中断标志位
}