MSP430定时器 TIMER0_A1_VECTOR

发布者:科技狂人最新更新时间:2020-01-18 来源: eefocus关键字:MSP430  定时器  TIMER0 手机看文章 扫描二维码
随时随地手机看文章

msp430g2553有两个定时器,一个是Timer0,一个是Timer1。TIMER0_A1_VECTOR ,TIMER0_A0_VECTOR是Timer0的中断向量,在430中,CCR0中断与CCR1,CCR2,溢出中断没有在一个中断向量表中,两个是分开的。CCR0中断具有最高优先级,而其余三个在一个中断向量表中。Timer1也相同,所以就有4个中断向量。


MSP430中,不同的型号拥有不同的硬件配置,因此中断源也有所差别,TIMER1_A0_VECTOR表示定时器1 A0的中断源,1代表硬件上的定时器,有定时器0 定时器1等;A0代表定时器n内的A0寄存器,通常会有A0 A1等,他们都计数源都来自同一个定时器,但对计数源的数据可以进行不同的处理,从而产生不同的中断。


http://elitezhe.diandian.com/m430-ta-vector/


在M430G2553头文件中有如下定义


#define TIMER0_A1_VECTOR (8 * 2u) /* 0xFFF0 Timer0)A CC1, TA0 */

#define TIMER0_A0_VECTOR (9 * 2u) /* 0xFFF2 Timer0_A CC0 */

.

.

#define TIMER1_A1_VECTOR (12 * 2u) /* 0xFFF8 Timer1_A CC1-4, TA1 */

#define TIMER1_A0_VECTOR (13 * 2u) /* 0xFFFA Timer1_A CC0 */ 


可见,每个TimerA模块有两个中断向量


http://blog.lehu.shu.edu.cn/879836630/A450185.html


/*TIMER0_A0_VECTOR是计时器0的CCR0的中断寄存器,TIMER0_A1_VECTOR是计时器0的CCR1-CCR4、TA的寄存器*/


/*同理定时器TA1也是分为两个TIMER1_A0_VECTOR和TIMER1_A1_VECTOR*/


#pragma vector=TIMER0_A1_VECTOR


__interrupt void TimerA(void)


{


   switch(__even_in_range(TA0IV,14))


   /* 这句话的意思是:只有在TA0IV的值是在0--14内的偶数时才会执行switch函数内的语句


            其作用是提高switch语句的效率*/


   {


      case 2:P1OUT=BIT1;break; //TACCR1 CCIFG置位,表明计数值和设定的13107相等了,也就是说计了0.4S了


      case 4:P1OUT=BIT2;break; //TACCR2 CCIFG置位,表明计了0.8S了


      case 6:P1OUT=BIT3;break; //TACCR3 CCIFG置位,表明计了1.2S了


      case 8:P1OUT=BIT4;break; //TACCR4 CCIFG置位,表明计了1.6S了


      case 14:P1OUT=BIT5;break;   //TAIFG置位,表明计了2S了


      default:break;


   }


  


}


MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器)、Timer1_A(3个)、Timer2_A(3个)、Timer0_B(7个)。


这一章,我们讲定时器Timer0_A.(A类的都一样)


注意:下面所提到的所有寄存器,在TA后面插入0或1或2就分别表示Timer0_A、Timer1_A、Timer2_A(我这里省略了数字)


http://blog.sina.com.cn/s/blog_6cd2030b01017x71.html


定时器Timer_A


1,MSP430g2553具有两个16位的定时器:Timer0_A   Timer1_A。分别具有三个捕捉/比较寄存器,具有输入捕捉,输出比较功能。可以产生定时中断,也可以产生PWM。


http://wenku.baidu.com/link?url=SlZcpjkvyoopvl-N8GwqcVsz039iKhk0yqkEBNPMv0ch_PtBkiTUl9tXJ8jTBFHXY5n-soEXUGrYctYNSixAadGm7DQ2rJXftq3roJcbPRW


msp430 TIMER实验报告


http://wenku.baidu.com/link?url=u1hFOAHosUwk4LvR4M5tno77kb3aM8a_AKZ7bTKBGTkjizUPbcHjc7Ol-OQnoYtB99o1j-1Jha01z0g8U35lBKk8tgsszoVHb1_8pGOERf7


https://bbs.eeworld.com.cn/thread-339382-1-1.html


首先找选择合适的PWM输出引脚,比如第1路PWM想用TA0控制,第2路PWM用TA1控制

查器件手册(是针对具体型号的,不是UserGuide哦):


TA0支持的引脚有P1.1、P1.2、P1.5、P1.6、P2.6(P2.6一般不用,因为要接晶振哦)

TA1支持的引脚有P2.0 --> P2.5。

选择方便的,假设我选择了P1.6(TA0.1)和P2.2(TA1.1),且第1路由ACLK驱动输出4KHz方波,第2路也有ACLK驱动但是输出2KHz占空比25%的方波。


P1DIR |= BIT6; // 选择P1.6的第二功能,即TA0.1

P1SEL |= BIT6;

CCR0 = 7; // PWM 周期  = ACLK@32768/4KHz-1 = 8.192-1 = 7

CCTL1 = OUTMOD_6; // CCR1 reset/set

CCR1 = 3; // CCR1 PWM 占空比50% = 

8.192*50% - 1 = 3

TACTL = TASSEL_1 + MC_1; // ACLK, up mode


P2DIR |= BIT2; // 选择P2.2的第二功能,即TA1.1

P2SEL |= BIT2;

TA1CCR0 = 15; // PWM 周期= ACLK@32768/2KHz-1 = 16-1 = 15

TA1CCTL1 = OUTMOD_6; // CCR1 reset/set

TA1CCR1 = 3; // CCR1 PWM 

占空比25% = 16*25% - 1 = 3

TA1CTL = TASSEL_1 + MC_1; // ACLK, up mode


不复杂吧

ACLK最多支持32768Hz的PWM,如果要更高频率,需要换时钟源为SMCLK,即代码改为:

TACTL = TASSEL_2 + MC_1; // SMCLK, up mode


当然时钟源换了,控制频率的CCR0和CCR1的值要重新计算。

友情提示:如要进入LPM3,则PWM的时钟只能为ACLK,因为在LPM3下DCO(一般作为SMCLK的源)会关闭。

关键字:MSP430  定时器  TIMER0 引用地址:MSP430定时器 TIMER0_A1_VECTOR

上一篇:TI - MCU - MSP430使用指南13 -> Timer定时器模块
下一篇:MSP430F5529--------test1

推荐阅读最新更新时间:2024-11-13 13:58

MSP430F5529学习笔记(一)
MSP430F5529作为一款TI公司推出的16位嵌入式控制芯片,相比于传统的51单片机,有着更加丰富外设资源。但是他不具有32等ARM-M架构嵌入式芯片的强大计算能力。 MSP430系列的单片机主张的是超低功耗,例如在使用电池长期供电的设备中,430的超低功耗可以有效延长产品的使用时间。 在学习430之前建议先学习8051系列的单片机,对51有一个充分的认识之后在进一步学习430。这两款处理器都有相似的地方,从最简单的编程开始,他们都是直接操作寄存器,完成各种外设的配置。 一、430与51做一个简单的对比 指令集不同 51内核单片机是8 位单片机。其指令是采用的被称为“ CISC ”的复杂指令集,共具有111 条指令
[单片机]
<font color='red'>MSP430</font>F5529学习笔记(一)
MSP430升级程序
MSP430升级程序的几点注意事项 1、这几天测试写好的IAP升级程序,真是一个糟,能将程序下载进去,但无法运行。 经过各种测试,修改终于找到了问题的原因,现在大致总结下我在写IAP程序的时候 遇到的问题和解决方案。首先要实现单片机的IAP升级程序,我们要知道自己的IDE如何能 将程序的函数或者变量的编译地址固定,因为对于bootload程序,我们要固定它的地址, 还有从bootload跳转到的程序运行的地址。   对于MSP430,在测试中我程序复位时跳转到rts430x.lib:boot.obj (.text:_isr: _c_int00_noexit)这样一个启动函数,之后执行_syatem_pre_int- _auto
[单片机]
PIC16位单片机CAN(7)定时器
定时器相对来说是最简单的了,也没有什么说的, 每个定时器模块都是 16 位定时器 / 计数器,由以下可读 / 写寄存器组成: ? TMRx:16 位定时器计数寄存器 ? PRx:与定时器相关的 16 位定时器周期寄存器 ? TxCON:与定时器相关的 16 位定时器控制寄存器 需要注意的是: 1:定时器是16位了,也可以配置为32位的,具体看文档,这里使用16位的定时器。 2:PRx:与定时器相关的 16 位定时器周期寄存器。也就是TMRx的值和PRx值相等时产生中断。】 下面看程序: /***********************************************************
[单片机]
MSP430单片机在电源控制中的应用
MSP430系列单片机是美国 TI 公司生产的新一代16位单片机,是一种超低功耗的混合信号处理器(MixedSignal Processor),它具有低电压、超低功耗、强大的处理能力、系统工作稳定、丰富的片内外设、方便开发等优点,具有很高的性价比,在工程控制等领域有着极其广泛的应用范围。开关Boost稳压电源利用开关器件控制、无源磁性元件及电容元件的能量存储特性,从输入电压源获取分离的能量,暂时把能量以磁场的形式存储在电感器中,或以电场的形式存储在电容器中,然后将能量转换到负载。对DC—DC主回路采用Boost升压斩波电路。 2 系统结构和总设计方案 本开关稳压电源是以MSP430F449为主控制器件,它是 TI 公司生产的
[单片机]
<font color='red'>MSP430</font>单片机在电源控制中的应用
MSP430F5529火箭板 --> 按键中断控制LED实验
实验目的:   测试评估板上的按键和LED 实验内容:   1、按下s1一次红灯亮1s后熄灭   2、快速按下s1两次绿灯亮1s后熄灭 bsp_led.h #ifndef _BSP_LED_H #define _BSP_LED_H #include msp430.h #define Set_Bit(val,bitn) (val |= (/*1 */(bitn))) #define Clr_Bit(val,bitn) (val &= ~(/*1 */(bitn))) #define Get_Bit(val,bitn) (val & (1 bitn)) //LED1 #define LED1_RED_DIR
[单片机]
<font color='red'>MSP430</font>F5529火箭板 --> 按键中断控制LED实验
STM32普通定时器(TIM2-7)的时钟源疑问
【问题】 STM32F103的APB1最大总线时钟是AHB总线时钟的1/2,最大为36MHz,在用ST的库函数(v2.0)的时候,TIM2(普通定时器)的时钟频率为72MHz,不知道原因何在? 【问题分析】 STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。 下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图: 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。 下面以定时器2~7的时钟说明这
[单片机]
STM32普通<font color='red'>定时器</font>(TIM2-7)的时钟源疑问
MSP430F2272 IO口中断使用的几点总结
这几天调试430,要求用IO中断唤醒系统。总结了以下几点经验,在使用IO口中断时应该注意。 一、多源中断中断标志需要软件清零。 在TI数据手册指出多源中断中断标志需要由软件清理。但是我在线仿真发现定时器的时钟中断和捕获中断好像会自动清零。不过最好还是加上软件清零。而IO口中断必须使用软件清零。 二、在中断关闭的情况下中断标志仍然会被置位。 当IO口配置为中断功能后,不管是否开启中断允许(PxIE.n),当中断条件满足时,相应的中断标志PxIFG.n都会由硬件自动置1。这样能最大限度的减少丢失中断。如果在程序中要经常开关中断,建议在每次开中断之前先清零对应的中断标志位。不然可能会有问题。例如,在我的项目中需要用输入脉
[单片机]
简仪计数器/定时器模块满足严格的工业标准和安全要求
应用 在电气开关柜的控制模组中,精确的时延控制对于确保高电压设备的安全运行至关重要。控制模组需要输出固定时延的脉冲信号,以控制外部的高电压设备。这种应用场景要求脉冲信号的时延精度达到10 ns级别,以满足严格的工业标准和安全要求。 挑战 传统的脉冲边沿检测方法通常采用示波器或时间间隔计时器等仪表进行测量,但这些方法存在精度不够高、测量速度慢、操作繁琐等弊端,难以满足高压控制模组测试的苛刻要求。 解决方案 针对这一挑战,简仪提供的PCIe-5211计数器/定时器模块成为了理想的解决方案。该模块具备8通道定时器,每个通道都能独立进行双边沿测量,完美契合了客户的测试需求。内部搭载的100 MHz高精度时钟,确保了每次测量都能达到
[嵌入式]
简仪计数器/<font color='red'>定时器</font>模块满足严格的工业标准和安全要求
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved