STM8的TIM4定时器1ms进入中断
TIM4 — 8位基本定时器
● 8位自动装载可调整的预分频器,比例可选为1~128之间任意的2的幂
● 时钟源: CPU时钟
● 中断源: 1个溢出/更新中断
需要实现1ms进入一次中断,可作为系统定时器
TIM4初始化
void Tim4_Init(void)
{
TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_PRESCALER_64,250-1);//64分频,向上计数,16M/64/250 = 1ms计数完了触发中断
TIM4_ARRPreloadConfig(ENABLE);//使能自动重装
TIM4_ITConfig(TIM4_IT_UPDATE , ENABLE);//数据更新中断
TIM4_Cmd(ENABLE);//开定时器
__enable_interrupt();
}
系统内部时钟16M,经过64分频,然后除以250就得到1ms
中断程序
__interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
Sys_Timer++;
TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
主函数
#include "stm8s.h"
int main(void)
{
Tim4_Init(); //系统定时器初始化
while (1)
{
if(Sys_Timer >= 10) //10ms
{
Sys_Timer = 0;
LedTimer++;
}
if(LedTimer >= 50) //0.5s
{
LedTimer = 0;
}
}
}