HT66F70A使用总结之定时器


HT66F70A芯片的定时器与51的定时器有很大的不同,我花费了很大的功夫才把HT66F70A的定时器弄清楚,下面是总结。


HT66F70A单片机包含 6 个TM,分别命名为TM0~TM5。每个TM 可被划分为一个特定的类型,即简易型CTM,标准型STM 或增强型ETM。此单片机的定时器除了有定时功能以外,还有其他的功能,具体见下表


TM功能
功能CTMSTMETM
定时/计数器
捕捉输入-
比较匹配输出
PWM通道数112
单脉冲输出-11
PWM对齐方式边沿对齐边沿对齐边沿& 中心对齐
PWM 调节周期& 占空比
占空比或周期
占空比或周期
占空比或周期


TM 名称/ 类型参考
TM0TM1TM2TM3TM4TM5
10-bit CTM10-bit ETM16-bit STM10-bit CTM16-bit STM
16-bit STM

下面以简易TM寄存器为例总结此单片机定时器的特点,只要弄清楚了定时器的特点,后面的标准TM和增强TM也都会操作了。


简易型TM 寄存器列表(n=0 或3)
Name
D7
D6D5D4D3D2D1D0
TMnC0
TnPAU
TnCK2
TnCK1
TnCK0
TnON
TnRP2
TnRP1
TnRP0
TMnC1
TnM1
TnM0
TnIO1
TnIO0
TnOC
TnPOL
TnDPX
TnCCLR
TMnDL
D7D6D5D4D3D2D1D0
TMnDH
------D9D8
TMnAL
D7D6D5
D4D3D2D1D0
TMnAH
------D9D8

其中,TMnDL和TMnDH这两个寄存器属性为只读,其他的寄存器为可读可写。下面简单说明各个标志位的作用,如想看详细资料请查芯片手册。


TnPAU:TMn 计数器暂停控制位
通过设置此位为高可使计数器暂停,清零此位恢复正常计数器操作。


TnCK2~TnCK0:选择TMn 计数时钟位

此三位用于选择TM 的时钟源。


TnON:TMn 计数器On/Off 控制位

此位控制TM 的总开关功能


TnRP2~TnRP0:TMn CCRP 3-bit 寄存器,对应于TMn 计数器bit 9~bit 7 比较器P 匹配周期

此三位设定内部CCRP 3-bit 寄存器的值,然后与内部计数器的高三位进行比较。


TnM1~TnM0:选择TMn 工作模式位


TnIO1~TnIO0:选择TPn,TPnB 输出功能位

TnOC:TPn,TPnB 输出控制位

TnPOL:TPn,TPnB 输出极性控制位

TnDPX:TMn PWM 周期/ 占空比控制位

在使用定时器功能的时候,以上五个标志位不起作用,所以可以暂时忽视。


TnCCLR:选择TMn 计数器清零条件位

此位用于选择清除计数器的方法:

TnCCLR 位设为高,计数器在比较器A 比较匹配发生时被清除;

此位设为低,计数器在比较器P 比较匹配发生或计数器溢出时被清除。


TM0初始化程序

void Tm0Init(void)
{
	uint16 time0 = 200;	//设置为200个周期,time0为中间变量
	_t0ae = 1;		//使能比较器A中断
//	_t0pe = 1;<span style="white-space:pre">		</span>//使能比较器P中断,这里用不到

	_mf0e = 1;	//使能多功能中断
	_emi = 1;	 //开总中断

	_tm0al = time0 & 0xff;	//给比较器A的低8位(D7~D0)赋值
	_tm0ah = time0 >>8;	//给比较器A的高8位(D9~D8)赋值

	_tm0c0 = TnCK_fsys4 | TnON_ON;	//选择系统时钟/4作为时钟源,并打开TM控制位
	_tm0c1 = TnM_TIMER | TnCCLR_A;	//定时器功能设置,选择与比较器A匹配

	_t0pau = 0;	//运行
}

下面简单说明这个初始化后发生的事情,当定时运行的时候,TMnDL(n=0,1,2...)和TMnDH会从0开始自动加1,直到和比较器A(TMnAL寄存器和TMnAH寄存器)所设置的数值相等的时候,就会产生中断,最后进入中断服务程序。





2017年4月5日补充:

由于博主很久不碰合泰芯片,很多细节已经忘记,所以如果调试不成功博主也已经帮不上忙了,本文评论博主不再回复。

另外根据以往评论,调试合泰芯片请留意以下细节,说不准就debug了。

1、看门狗是否除能;

2、编译器优化是否关闭;

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值