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 篇原創文章 · 獲贊 65 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章