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);	// 清中断
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值