历史上的今天
返回首页

历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2019年10月16日 | MSP430学习笔记-定时器A

2019-10-16 来源:eefocus

16 位定时器 A 模块寄存器

TACTL TIMER_A 控制寄存器

15-109-8
UnusedTASSELx
7-65-43210
IDxMCxUnusedTACLRTAIETAIFG

全部关于定时器及其操作的控制位都包含在定时器控制寄存器 TACTL 中。POR 信号后 TACTL 的所有位 
都自动复位,但在 PUC 信号后不受影响。TACTL 各位的定义如下: 
TASSELx:选择定时器进入输入分频器的时钟源 
0: TACLK 特定的外部引脚时钟 
1: ACLK 辅助时钟 
2: MCLK 系统时钟 
3: INCLK 器件特有时钟 
IDx:输入分频选择 
0: 不分频 
1: 2 分频 
2: 4 分频 
3: 8 分频 
MCx:计数模式控制位 
0: 停止模式 
1: 增计数模式 
2: 连续计数模式 
3: 增/减计数模式 
TACLR:定时器清除位 
POR 或 CLR 置位时定时器和输入分频器复位。CLR 由硬件自动复位,其读出始终为 0。定时器再下 
一个有效输入沿开始工作。如果不是被清除模式控制位暂停,则定时器以增计数模式开始工作。 
0: 无操作 
1: 清除 TAR,时钟分频,计数模式的设置。清除设置后自动清零(硬件复位) 
TAIE:定时器中断允许位 
0: 禁止定时器溢出中断 
1: 允许定时器溢出中断 
TAIFG:定时器溢出标志位 
增计数模式时:当定时器由 CCR0 计数到 0,TAIFG 置位; 
连续计数模式时:当定时器由 0FFFFH 计数到 0 时,TAIFG 置位 
增/减计数模式时:当定时器由 CCR0 减计数到 0 时,TAIFG 置位。 
0: 没有 TA 中断请求 
1: 有 TA 中断请求

TAR TIMER_A 计数器

15-8
TARx
7-0
TARx

该单元就是执行计数的单元,时计数器的主体,其内容可读可写。

TACCTLx TIMER_A 捕获/比较控制寄存器 x

15-1413-12111098
CMxCCISxSCSSCCIUnusedCAP
7-543210
OUTMODxCCIECCIOUTCOVCCIFG

TIMER_A 有多个捕获/比较模块,每个模块都有自己的控制字 TACCTLx,这里 x 为捕获/比较模块序号。 
该寄存器再 POR 信号后全部复位,但在 PUC 信号后不受影响。该寄存器中各位的定义如下: 
CMx:选择捕获模式 
0: 禁止捕获模式 
1: 上升沿捕获 
2: 下降沿捕获 
3: 上升沿和下降沿都捕获 
CCISx:在捕获模式中用来定义提供捕获事件的输入源 
0: 选择 CCIxA 
1: 选择 CCIxB 
2: 选择 GND 
3: 选择 Vcc 
SCS:选择捕获信号与定时时钟同步/异步关系 
异步捕获模式允许在请求时立即将 CCIFG 置位和捕获定时器值,适用于捕获信号的周期远大于定时 
器周期的情况。但是,如果定时器时钟和捕获信号发生时间竞争,则捕获寄存器的值可能出错。 
0: 异步捕获 
1: 同步捕获 
SCCI:同步比较/捕获输入 
比较相等信号 EQU 信号将选中的捕获/比较输入信号 CCI 进行锁存,然后可由 SCCI 读出。 
CAP:选择捕获模式/比较模式 
如果通过捕获/比较寄存器 TACCTLx 中的 CAP 使工作模式从比较模式变为捕获模式,那么不应同时 
进行捕获,否则,在捕获/比较寄存器中的值使不可预料的。 
推荐的指令顺序如下:(1)修改控制寄存器,由比较模式切换到捕获模式。(2)捕获 
0: 比较模式 
1: 捕获模式 
OUTMODx:选择输出模式 
0: 输出 
1: 置位 
2: PWM 翻转/复位 
3: 置位/复位 
4: 翻转 
5: 复位 
6: PWM 翻转/置位 
7: PWM 复位/置位 
CCIE:捕获/比较模块中断允许位 
0: 禁止中断(TACCRx) 
1: 允许中断(TACCRx) 
CCI:捕获/比较模块的输入信号 
捕获模式:由 CCIS0 和 CCIS1 选择的输入信号可通过该位读出 
比较模式:CCI 复位 
OUT:输出信号 
如果 OUTMODx 选择输出模式 0(输出),则该位对应于输入状态。 
0: 输出低电平 
1: 输出高电平 
COV:捕获溢出标志 
当 CAP=0 时,选择比较模式.捕获信号发生复位。没有使 COV 置位的捕获事件。 
当 CAP=1 时,选择捕获模式。如果捕获寄存器的值被读出前在此发生捕获事件,则 COV 置位。程 
序可检测 COV 来判断原值读出前是否又发生捕获事件。读捕获寄存器时不会使溢出标志复位,须用软件 
复位。 
0: 没有捕获溢出 
1: 发生捕获溢出 
CCIFG:捕获比较中断标志 
捕获模式:寄存器 CCRx 捕获了定时器 TAR 值时置位。 
比较模式:定时器 TAR 值等于寄存器 CCRx 值时置位。 
0: 没有中断请求(TACCRx) 
1: 有中断请求(TACCRx)

1

16 位定时器 A 模块头文件定义

/************************************************************ 
* Timer A3 
***********************************************************/ #define TAIV_ (0x012E) /* Timer A Interrupt Vector Word */READ_ONLY DEFW( TAIV , TAIV_) 
#define TACTL_ (0x0160) /* Timer A Control */DEFW( TACTL , TACTL_) 
#define TACCTL0_ (0x0162) /* Timer A Capture/Compare Control 0 */DEFW( TACCTL0 , TACCTL0_) 
#define TACCTL1_ (0x0164) /* Timer A Capture/Compare Control 1 */DEFW( TACCTL1 , TACCTL1_) 
#define TACCTL2_ (0x0166) /* Timer A Capture/Compare Control 2 */DEFW( TACCTL2 , TACCTL2_) 
#define TAR_ (0x0170) /* Timer A */DEFW( TAR , TAR_) 
#define TACCR0_ (0x0172) /* Timer A Capture/Compare 0 */DEFW( TACCR0 , TACCR0_) 
#define TACCR1_ (0x0174) /* Timer A Capture/Compare 1 */DEFW( TACCR1 , TACCR1_) 
#define TACCR2_ (0x0176) /* Timer A Capture/Compare 2 */DEFW( TACCR2 , TACCR2_) 
/* Alternate register names */ #define CCTL0 TACCTL0 /* Timer A Capture/Compare Control 0 */#define CCTL1 TACCTL1 /* Timer A Capture/Compare Control 1 */#define CCTL2 TACCTL2 /* Timer A Capture/Compare Control 2 */#define CCR0 TACCR0 /* Timer A Capture/Compare 0 */#define CCR1 TACCR1 /* Timer A Capture/Compare 1 */#define CCR2 TACCR2 /* Timer A Capture/Compare 2 */#define CCTL0_ TACCTL0_ /* Timer A Capture/Compare Control 0 */#define CCTL1_ TACCTL1_ /* Timer A Capture/Compare Control 1 */#define CCTL2_ TACCTL2_ /* Timer A Capture/Compare Control 2 */#define CCR0_ TACCR0_ /* Timer A Capture/Compare 0 */#define CCR1_ TACCR1_ /* Timer A Capture/Compare 1 */#define CCR2_ TACCR2_ /* Timer A Capture/Compare 2 */#define TASSEL2 (0x0400) /* unused */ /* to distinguish from USART SSELx */#define TASSEL1 (0x0200) /* Timer A clock source select 0 */#define TASSEL0 (0x0100) /* Timer A clock source select 1 */#define ID1 (0x0080) /* Timer A clock input devider 1 */#define ID0 (0x0040) /* Timer A clock input devider 0 */#define MC1 (0x0020) /* Timer A mode control 1 */#define MC0 (0x0010) /* Timer A mode control 0 */#define TACLR (0x0004) /* Timer A counter clear */#define TAIE (0x0002) /* Timer A counter interrupt enable */#define TAIFG (0x0001) /* Timer A counter interrupt flag */#define MC_0 (0*0x10u) /* Timer A mode control: 0 - Stop */#define MC_1 (1*0x10u) /* Timer A mode control: 1 - Up to CCR0 */#define MC_2 (2*0x10u) /* Timer A mode control: 2 - Continous up */#define MC_3 (3*0x10u) /* Timer A mode control: 3 - Up/Down */#define ID_0 (0*0x40u) /* Timer A input divider: 0 - /1 */#define ID_1 (1*0x40u) /* Timer A input divider: 1 - /2 */#define ID_2 (2*0x40u) /* Timer A input divider: 2 - /4 */#define ID_3 (3*0x40u) /* Timer A input divider: 3 - /8 */#define TASSEL_0 (0*0x100u) /* Timer A clock source select: 0 - TACLK */#define TASSEL_1 (1*0x100u) /* Timer A clock source select: 1 - ACLK */#define TASSEL_2 (2*0x100u) /* Timer A clock source select: 2 - SMCLK */#define TASSEL_3 (3*0x100u) /* Timer A clock source select: 3 - INCLK */#define CM1 (0x8000) /* Capture mode 1 */#define CM0 (0x4000) /* Capture mode 0 */#define CCIS1 (0x2000) /* Capture input select 1 */65#define CCIS0 (0x1000) /* Capture input select 0 */#define SCS (0x0800) /* Capture sychronize */#define SCCI (0x0400) /* Latched capture signal (read) */#define CAP (0x0100) /* Capture mode: 1 /Compare mode : 0 */#define OUTMOD2 (0x0080) /* Output mode 2 */#define OUTMOD1 (0x0040) /* Output mode 1 */#define OUTMOD0 (0x0020) /* Output mode 0 */#define CCIE (0x0010) /* Capture/compare interrupt enable */#define CCI (0x0008) /* Capture input signal (read) */#define OUT (0x0004) /* PWM Output signal if output mode 0 */#define COV (0x0002) /* Capture/compare overflow flag */#define CCIFG (0x0001) /* Capture/compare interrupt flag */#define OUTMOD_0 (0*0x20u) /* PWM output mode: 0 - output only */#define OUTMOD_1 (1*0x20u) /* PWM output mode: 1 - set */#define OUTMOD_2 (2*0x20u) /* PWM output mode: 2 - PWM toggle/reset */#define OUTMOD_3 (3*0x20u) /* PWM output mode: 3 - PWM set/reset */#define OUTMOD_4 (4*0x20u) /* PWM output mode: 4 - toggle */#define OUTMOD_5 (5*0x20u) /* PWM output mode: 5 - Reset */#define OUTMOD_6 (6*0x20u) /* PWM output mode: 6 - PWM toggle/set */#define OUTMOD_7 (7*0x20u) /* PWM output mode: 7 - PWM reset/set */#define CCIS_0 (0*0x1000u) /* Capture input select: 0 - CCIxA */#define CCIS_1 (1*0x1000u) /* Capture input select: 1 - CCIxB */#define CCIS_2 (2*0x1000u) /* Capture input select: 2 - GND */#define CCIS_3 (3*0x1000u) /* Capture input select: 3 - Vcc */#define CM_0 (0*0x4000u) /* Capture mode: 0 - disabled */#define CM_1 (1*0x4000u) /* Capture mode: 1 - pos. edge */#define CM_2 (2*0x4000u) /* Capture mode: 1 - neg. edge */#define CM_3 (3*0x4000u) /* Capture mode: 1 - both edges */


推荐阅读

史海拾趣

CSR plc(剑桥硅晶无线电)公司的发展小趣事

随着技术的不断进步和市场需求的日益多样化,CSR plc意识到单一的业务领域已无法满足公司的长远发展。于是,公司开始寻求多元化的发展道路。2007年,CSR plc成功收购了Nordnav Technologies和Cambridge Positioning Systems,开始进军GPS市场。这一战略转型不仅让公司的业务范围得到了极大的拓展,也使其在GPS领域取得了显著的成就。

AXTAL公司的发展小趣事

创新是AXTAL公司不断发展的动力源泉。公司注重研发投入,持续推出具有竞争力的新产品和技术。同时,AXTAL还积极与高校、科研机构等合作,共同开展前沿技术的研发和应用。这些创新举措不仅提升了公司的技术实力和市场竞争力,也为整个电子行业的发展注入了新的活力。

这五个故事只是AXTAL公司发展起来历程中的一部分。它们从不同的角度展示了公司在创立、技术与品质追求、全球布局、应对市场挑战以及持续创新等方面所取得的成就和进步。未来,随着电子行业的不断发展和变革,相信AXTAL公司将继续保持其领先地位,为行业的进步和发展做出更大的贡献。

安谱隆(Ampleon)公司的发展小趣事

2015年,随着恩智浦和飞思卡尔的合并,恩智浦决定将其射频业务剥离出来。这一决策旨在使两家公司能够更专注于各自的核心业务,同时也为射频业务的发展打开新的篇章。安谱隆作为这一剥离业务的承接者,应运而生。此次剥离不仅为安谱隆带来了丰富的技术资源和市场基础,也为其未来的发展奠定了坚实的基础。

Dialog公司的发展小趣事

Dialog公司最初可以追溯到1972年,当时它是由美国洛克希德导弹航空公司所属的一个情报科学实验室负责建立的。这个实验室的初衷是探索和开发新的通信技术,以支持军事和情报领域的需求。随着时间的推移,这个实验室逐渐积累了丰富的技术经验和研发实力。

DLP Design公司的发展小趣事

DLP创新设计公司,一家专注于DLP技术应用的企业,通过精准的市场定位和灵活的市场策略,成功在电子行业中脱颖而出。公司深入了解消费者需求,针对不同市场推出差异化产品。同时,DLP创新积极寻求合作伙伴,通过渠道拓展和品牌建设,逐渐提高了市场占有率。其独特的商业模式和敏锐的市场洞察力,使DLP创新在激烈的市场竞争中保持了稳健的发展。

BROTHER公司的发展小趣事

随着全球市场的不断扩大,BROTHER意识到要实现持续发展,必须走国际化道路。因此,公司在上世纪五十年代开始积极实施国际化战略。首先,BROTHER在美国纽约建立了销售总部,以更好地服务北美市场。随后,公司又在欧洲等地建立生产基地和销售网络,进一步拓展国际市场。通过国际化战略的实施,BROTHER不仅提升了品牌知名度和市场份额,还积累了丰富的跨国经营经验。

问答坊 | AI 解惑

用好ThinkPad电源管理软件

ThinkPad笔记本一直备受企业和个人用户的青睐,除了其良好的稳定性、耐用性和舒适性之外,一些个性化的硬件设计及与之相配套的软件亦是其中一个重要因素。下面,就让我们通过ThinkPad电源管理软件来感受一下“黑砖头”中蕴藏的个性化风格,让你能够 ...…

查看全部问答>

怎样自制电路板

我想自己执着电路,点有没有电路板,不知道大家是怎样制作电路板的,请指教!本人将不胜感激…

查看全部问答>

PCB工程师需要注意的地方

较多的PCB工程师,他们经常画电脑主板,对Allegro等优秀的工具非常的熟练,但是,非常可惜的是,他们居然很少知道如何进行阻抗控制,如何使用工具进行信号完整性分析.如何使用IBIS模型我觉得真正的PCB高手应该还是信号完整性专家,而不仅仅停留在连连线,过 ...…

查看全部问答>

输入十六进制数的问题

        printf(\"input a 4 hexadecimal:\\n\");        scanf(\"%.2X %.2X %.2X %.2X\",&bb[0],&bb[1],&bb[2],&bb[3]);       printf(\"\\n%.2X %.2X %.2X %.2X\\n\",& ...…

查看全部问答>

WINCE中的微软拼音输入法问题

定制系统时加入了微软拼音中文输入法,结果运行时,只出声母,不出韵母,打不出中文来,请问有人遇到过没,怎么解决?…

查看全部问答>

谁能说说笔记本上的Fn+Fx的实现么

我只知道Fn+Fx会生成一个Scancode,但是如果ScanCode在不同键盘下是同定义的,如何才能知道按下Fn+Fx是发送了哪个ScanCode? 环境:XP Sp2/Vista Sp1 English ,Visual Studio 2008 机器:Thinkpad 备注:查过很多资料,用Hook 的方式是抓不到Message(比 ...…

查看全部问答>

为什么没结果?

dsp的c语言编程,为什么没结果?编译,链接都没错 #include \\"stdio.h\\" void main()      {      int a;    a=4;    printf(\\"%d\\",a);    } ...…

查看全部问答>

adi,TI ,maxin,linear样片申请

本帖最后由 paulhyde 于 2014-9-15 03:36 编辑 …

查看全部问答>

函数信号发生器设计的思想与实现

  函数信号发生器设计目的   为进一步掌握电路的基本理论及实验调试技术,熟练应用所学的电路设计原理知识,根据各种电子元件设计一个能够可以产生多种波形的函数信号发生器。   函数信号发生器设计原理框图如下所示:     函 ...…

查看全部问答>

stm32 usart不能发数,使用查询方法

公司的板子是,485 通讯,使用stm32f103re,USART1通讯,485使用端口GPIOA PIN11,USART_RX对应GPIOA PIN10,USART_TX 对应GPIOA PIN9 不知为什么,我现在只是做了一个要放数据的程序,可是就是无法下发数据。可以保证连线等硬件没有任何问题。& ...…

查看全部问答>