历史上的今天
今天是:2025年07月11日(星期五)
2018年07月11日 | msp430学习笔记之定时器A
2018-07-11 来源:eefocus
1 相关知识
1 定时器a图解
图 1 定时器A图解
2 定时器A的四种计数模式
1. 停止模式。
2. 增计数模式。(产生两个中断标志)
当计数到跟TACCR0一样的时候,就返回0,重新计数。当计数到TACCR0的同时产生一个中断标志CCIFG,而当计数器溢出返回零的同时又同时产生一个中断标志TAIFG。如图:
图 2 增计数模式的时序图
3.连续计数模式(产生一个中断标志)
计数器将直接计数到计数器所能计数的最大值0FFFFH之后重新返回零,再次计数。返回零的同时产生一个TAIFG中断标志。如图
图3 连续技术模式的时序图
如果相应中断位允许,每当一个定时间隔到都会产生中断请求,在连续计数模式下,须将下一事件发生的时间在当前中断程序中加到CCRx中,如图4,下次发生中断的时间等于在CCR0a发生中断时刻,CCR0 = CCR0a + Δt
图 4 连续计数模式下中断与CCRx关系
4 增减计数模式(产生两个中断标志)
当计数器计数到跟TACCR0一样的之后,然后从TACCR0开始又减少,直到为零,然后又开始增。当计数跟TACCR0一样的时候产生一个中断标志CCIFG,当减到为零的时候又产生一个中断标志TAIFG。如图:
图 5 增减计数模式时序图
相关寄存器这里就不一一介绍了,可以翻阅数据手册
2 代码实现
//本平台 msp430f149
#include
volatile unsigned char count = 0,flag = 0;
void P2_config(){
P2DIR = 0x80;
P2OUT = 0xff;
}
void select_xt2(void){
unsigned char i;
/*------选择系统主时钟为8MHz-------*/
BCSCTL1 &= ~XT2OFF;
do{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}while ((IFG1 & OFIFG));
BCSCTL2 |= SELM_2 + SELS ; //MCLK和SMCLK选择高频晶振
}
void main(){
WDTCTL = WDTPW + WDTHOLD; // 关狗
select_xt2(); //8MHz晶振
P2_config();
CCTL0 = CCIE; // CCR0 中断使能
CCR0 = 10000;
TACTL = TASSEL_2 + MC_2 + ID_3; // SMCLK = 1MHz, 连续计数模式
_EINT(); // 开启全局中断
while(1){
if(count == 50){
count = 0;
P2OUT ^= BIT7 ;
}
}
}
// Timer A0 中断服务函数
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
count ++;
CCR0 += 10000; // 下次中断时间装入CCR0中
}
3 实验结果
led灯间隔0.5s变化一次,说明使用定时器比较模式成功
史海拾趣
|
由于工作原因,将原XP下的NDIS中间层驱动移植到WinCE下面。目前已经完成,并能够成功运行起来,但遇到如下问题: 跑一会TCP数据后,TCP传输变得非常慢,但是ICMP报文传输正常,所以不太可能是网卡驱动的原因,并且其它程序一切正常,仅仅是所有的T ...… 查看全部问答> |
|
想用STM32F105VC的USB OTG,准备用主模式,USBDM和USBDP初始化时GPIO_InitStructure.GPIO_Mode的模式需要选择为哪种模式 typedef enum { GPIO_Mode_AIN = 0x0, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0 ...… 查看全部问答> |
|
看430FR5739系列的视频介绍手工焊接如果温度过高是可能导致数据丢失或者有效时间变短还是损坏不能用了? 视频介绍要求机器焊接以后在烧写,手工焊要求低于波峰焊温度260度,但是好像没听到明晰地说如果手工焊温度超过了是会损坏了不能再烧写使用了 ...… 查看全部问答> |
|
请教一问题,我现在有一功放输出100W,但是输出S22有点点不达标,主要是带宽过太大了,我在非饱和输出的情况下用电阻尝试了下3dB衰减,发现效果很好,但是输出用电阻做衰减在饱和状态下一下就会烧掉,所以想请教各位有没有什么好的办法,用电感和电 ...… 查看全部问答> |
|
这学期学校把电表换了,多了什么智能限电,洗完澡开吹风就跳闸,烧壶水也跳闸,很是郁闷,又不甘心花钱去买小功率的吹风和电热壶。不知大伙寝室是不是也有这样的限电,呵呵。开始把壶插在走廊的消防应急灯插座上煮板栗,被逮个正着,更是郁闷。于是 ...… 查看全部问答> |
|
无线手表开发工具 eZ430-Chronos™ 开发工具用户指南 (Rev. D) eZ430-Chronos 是运动手表中基于 CC430 的高度集成的无线开发系统。它可用作手表系统的参考平台、个人局域网的个人显示器或远程数据收集的无线传感器节点。 无线手表开发 ...… 查看全部问答> |
|
引用回复别人的帖子,记得以前好像光标会自动在引用部分的下方,不知道何故,我现在发现默认光标在引用框里,这样,如果点击引用回复以后直接敲字的话敲出的字会落在引用框里末尾,这时如果想把光标调整到引用框下面还找不到方法。我的浏览器是谷歌 ...… 查看全部问答> |
|
请问各位本人已经用Sensortag与蓝牙4.0模块连接成功,现在能够获取RSSI..但不知道怎么获取sensortag的传感器数据。。。。请问要用蓝牙模块获取sensortag的数据,现在不知道从何下手… 查看全部问答> |
|
本帖最后由 chenbingjy 于 2016-9-19 13:28 编辑 有一个工程的文件列表如下。工程中共有5个文件,在add目录中有add_int.c和add_float.c,两个文件分别计算整形和浮点型的相加;在sub目录下有文件 sub_int.c和sub_float.c,分别计算整形和浮点型的 ...… 查看全部问答> |




