STM8-TIMER实现系统嘀嗒计时器


 STM8中没有系统嘀嗒计时器,所以用timer实现系统嘀嗒计时器的功能,每1ms产生一个中断。本次使用的是高速内部时钟,时钟频率是2Mhz

1. timer.c

#include "timer.h"

void systic_init(void)	// TIMER2_CH1 -> PB0
{
	CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);			// 使能时钟

	TIM2_DeInit();			// 恢复寄存器到默认值
	TIM2_TimeBaseInit(TIM2_Prescaler_2, TIM2_CounterMode_Up, 1000); // 2Mhz/2*1000
	TIM2_ITConfig(TIM2_IT_Update, ENABLE);	// 中断处理函数要清除中断,并jiffers自加1
	TIM2_ARRPreloadConfig(ENABLE);			// 自动加载
	//TIM2_SetCounter();
	
	TIM2_Cmd(ENABLE);		// 使能TIM2
	enableInterrupts();		// 使能全局中断
}

2. timer.h

#ifndef _TIMER_H_
#define _TIMER_H_

void systic_init(void);

#endif	/* timer.h */

3. 中断处理函数

 在中断处理函数中将定义的变量自加1

extern volatile long long int my_TickCounter;
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler,19)
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
  	my_TickCounter++;
  	TIM2_ClearITPendingBit(TIM2_IT_Update);	// 清中断
}
发布了57 篇原创文章 · 获赞 64 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_36310253/article/details/103314874