合泰HT66F2390----定时器中断学习笔记

本文介绍了如何使用STM单片机的TM定时器模块进行定时器初始化,配置比较器以实现1ms定时,并通过中断处理控制LED2的闪烁。具体涉及STMnC0和STMnC1寄存器设置以及中断函数的自定义。
摘要由CSDN通过智能技术生成

前言

无需多言 直接开始定时器中断 的学习

通过上次的PWM学习,上次用的是周期型TM定时器模块
这次使用标准型TM定时器模块(STM)

代码

#include <HT66F2390.h>

void Timer0_Init(void){
	_stm0c0 = 0b00001000;
	_stm0c1 = 0b11000001;
	
	_stm0al = 0xD0;
	_stm0ah = 0x07;
	
	_stm0ae = 1;
	_mf0e = 1;
	
	_emi = 1;
}
void LED2_Init(void){
	_phc0 = 0;
	_ph0 = 1;	
}

void main(){
	_wdtc=0b10101111;
	LED2_Init();
	Timer0_Init();
	while(1){
		
	}
}
unsigned int count=0;
DEFINE_ISR(abc,0x14)
{
	if(_stm0af == 1)
	{
		_stm0af = 0;
		if(++count > 1000){
			count = 0;
			_ph0 = ~_ph0;	
		}
	}	
} 


代码讲解

在这里插入图片描述
在这里插入图片描述
主要的还是
STMnC0 和 STMnC1寄存器

我们需要配置定时器和定时器中断主要就是配置这两个寄存器
在这里插入图片描述
根据自己的需求配置为_stm0c0 = 0b00001000;2MHz,开启计数器
在这里插入图片描述
这里因为要配置为定时器模式,并且注意一个点

在这里插入图片描述

如上图所示:比较器P是8位的,比较器A是16位的
根据自己的需求来配置,我选择的是16位的,比较器A
在这里插入图片描述
再由上图可以知道,比较器里面的数值和计数器相等时,会产生中断 ,那这个比较器的值我们也可以通过手册知道如何配置
因为我们的时钟是2MHz,一次计数是0.5us,然后我们的计数器也是从0开始计数的,所以我们如果要配置1ms就要2000次计数,所以我们配置为

	_stm0al = 0xD0;
	_stm0ah = 0x07;

这样子我们就配置好了定时器,接下来就是打开中断
在这里插入图片描述
我们需要看着这个图来配置这些中断选项
在这里插入图片描述
这个我们可以知道有些是需要我们自己清除中断标志位的
所以最后我们可以配置中断函数为:
下面的名字“abc”是自定义的
后面的地址需要看图配置

DEFINE_ISR(abc,0x14)
{
	if(_stm0af == 1)
	{
		_stm0af = 0;
		if(++count > 1000){
			count = 0;
		}
	}	
} 

结果演示

合泰单片机板子上的LED2每隔1S闪烁

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

送外卖的CV工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值