本文章只讲如何使用STM8的普通定时器,原理以及其他知识点可以网上查阅相关的资料。废话不多说,直奔主题。
第一步:了解TIM4的时钟来源
查阅书册可以知道TIM4的时钟来源系统的主时钟
第二步:初始化相关寄存器:
从ST官方手册可以知道,TIM4有7个寄存器。
TIM4_CR1 |
控制寄存器 |
TIM4_IER |
中断使能寄存器 |
TIM4_SR |
状态寄存器 |
TIM4_EGR |
事件产生寄存器 |
TIM4_CNTR |
计数器 |
TIM4_PSCR |
预分频寄存器 |
TIM4_ARR |
自动重装载寄存器 |
void Tim4_Init(void)//T=1/2M/128/250
{
TIM4_PSCR = 0x07;//预分频 PSC[2:0]=1:128
TIM4_ARR = 250;//自动重装载值
//TIM4_EGR = 0x01;//更新事件产生(可人为产生更新事件)
TIM4_IER = 0x01;//更新中断使能
TIM4_CNTR = 0;//计数器初值
TIM4_CR1 = 0x01;//[0]CEN定时器使能
}
第三步:编写中断函数
#pragma vector=TIM4_OVR_UIF_vector //定义中断服务函数入口地址
__interrupt void TIM4_OVR_UIF__IRQHandler(void)//16ms
{
TIM4_SR=0x00; //清除中断标志
i++;
if(i>=62)
{ //翻转 LED 接口的输出状态
PE_ODR_ODR5^=1;
i=0;
}
}
第四步:开全局中断
asm("rim");
到此,简简单单的四部就对STM8的定时器4就完成了配置,当然在中断函数中使用了PE5这个IO,实际使用还需要进行相应的IO配置。