合泰单片机(HT66F3195)开发日记2-定时器定时中断

HT66F3195包含 3 个 TM,每个 TM 可被划分为一个特定的类型,即简易型 TM, 标准型 TM 或周期型 TM。虽然性质相似,但不同 TM 特性复杂度不同。本章 介绍简易型,标准型和周期型 TM 的共性,更多详细资料参见HT66F3195 Datasheet。三 种类型 TM 的特性和区别见下表

基本上我们常用的定时器功能主要是定时和PWM输出。在定时功能三种定时器模块用法配置基本没有区别,我们就以CTM为例。来介绍定时器定时中断如何使用。

CTM的计数方式是向上计数。其计数器的值与CCRA或CCRP的值匹配就会发生中断。CTM的寄存器如下图所示:

基本定时器包含两个控制寄存器CTMC0和CTMC1。一对8位计数寄存器(CTMDH:CTMDL);一对CCRA匹配值寄存器(CTMAH:CTMAL);以及一个8位CCRP(CTMRP)匹配值寄存器组成。

控制寄存器 CTMC0:主要控制定时器的时钟。计数器的使能。

控制寄存器 CTMC1:主要控制定时器工作模式。

计数寄存器 (CTMDH:CTMDL):只读寄存器。记载16位计数器的值。

CCRA匹配值寄存器(CTMAH:CTMAL):匹配值寄存器。计数器的值等于该值就会发生匹配中断。

CTMRP匹配值寄存器(CTMRP):匹配值寄存器。计数器的值等于该值就会发生匹配中断。

CCRA匹配与CCRP匹配说明:

CTM定时器可以通过CTMC1寄存器选择匹配方式。当选择CCRA匹配 计数器的值与(CTMAH:CTMAL)相等会发生匹配中断;当选择CCRP匹配 计数器的值与(CTMRP)*256相等会发生匹配中断(CTMRP=0,计数器与65535匹配)。

即定时器定时时间 = 定时器计数周期*(CTMAH:CTMAL)或 = (CTMRP)*256。

定时器匹配中断配置流程2mS(500Hz)

1、设置定时器的时钟和配置计数器使能

_ctmc0 = 0x38;		//Fctm = 16MHz/64=250K

2、设置定时器的模式为计数模式,并选择匹配方式

_ctmc1 = 0xc1;        //选择计数模式,CCRA匹配

3、设置匹配值(注意:低位寄存器在前)

_ctmal = 0xF4;		//500Hz = 250K/500
_ctmah = 0x01;

 4、开启定时器中断

_ctmae = 1;			//使能CTM中断

5、使能外设中断

_mf1e = 1;			//使能外设中断

6、开启总中断

_emi = 1;			//使能总中断

以上6步完成了CTM的初始化并开启了中断。中断服务函数如下

//CTM中断服务函数
void __attribute((interrupt(0x10))) CTM_ISR(void)
{
	if(_ctmaf)                    //判断ctm A匹配标志位
	{
		_ctmaf = 0;                //清除标志位
		
		_500mscnt ++;
		if(_500mscnt >= 250)
		{
			_500mscnt = 0;
			if(_500msflag)_500msflag = 0;
			else _500msflag = 1;
		}
	}
}

主函数调用

//LED1 每1秒闪烁1次
if(_500msflag)
{
    LED1 = 1;
}else
{
    LED1 = 0;
}

STM和PTM的配置也大致如此。CTM、STM、PTM的源码已上传:

合泰单片机HT66F3195定时器PWM例程资源-CSDN文库

代码在HT66F3195评估板上验证通过。有需要的可以自行购买:

合泰单片机开发板 评估板 测试板HT66F3195-淘宝网 (taobao.com)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值