LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)
msp430定时器部分

case 4:break;
case 10:P1OUT^=BIT0;break;
}
}
ห้องสมุดไป่ตู้
输出模式4主要是翻转:在TAR=CCRX的时候发生翻转。
输出模式主要是复位:在TAR=CCRX时发生复位,只有其他模式到来的时候才能变换。
输出模式6主要是PWM翻转和置位:在TAR=CCR0的时候,发生PWM翻转,在TAR=CCR0的时候,发生置位。
输出模式7主要是PWM复位和置位:在TAR=CCRX的时候,发生PWM复位,在TAR=CCR0的时候,发生复位。
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P6DIR|=BIT0;
CCTL0=CCIE;
CCR0=20000;
TACTL=TASSEL_2+MC_2;
_BIS_SR(GIE);
while(1);
例如:增计数模式下,使用定时器中断使接口发生翻转:
#include<msp430f149.h>
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P6DIR|=BIT0;
CCTL0=CCIE;
CCR0=20000-1;
TACTL=TASSEL_2+MC_1;
定时器的工作模式:
定时器的工作模式位由寄存器TACTL中的MC1和MC0两位控制。
1.停止模式:
定时器暂停计数,就是说当暂停结束后,重新开始计数的时候,计数的开始位是从暂停时候的数开始的。如果想重新计数就得对TACTL控制寄存器中的CLR位置位。
msp430的定时器

对于学习新的单片机来说,就我个人意见在知道基本功能后应该先掌握定时器的用法,可以能帮助你很快的掌握单片机的用法并尽快能进行单片机的应用,所以对于430我也同样先掌握定时器的用法。
msp430单片机一共有5种类型的定时器,看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit Timer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)。
但是这些模块不是所有msp430型号都具有的功能。
1、看门狗定时器(WDT)学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。
msp430中它是一个16位的定时器,有看门狗和定时器两种模式。
2、基本定时器(Basic Timer1)基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。
它可以只两个8位定时器,也可以是一个16位定时器。
3、8位定时器/计数器(8-bit Timer/Counter)如其名字所示,它是8位的定时器,主要应用在支持串行通信或数据交换,脉冲计数或累加以及定时器使用。
4、16位定时器A和B定时器A在所有msp430系列单片机中都有,而定时器B在msp430f13x/14x和msp430f43x/44x等器件中出现,基本的结构和定时器A是相同的,由于本人最先熟悉并应用的是定时器A所以在这里就主要谈一下自己对定时器A的了解和应用。
定时器A是16位定时器,有4种工作模式,时钟源可选,一般都会有3个可配置输入端的比较/捕获寄存器。
并且有8种输出模式。
通过8种输出模式很容易实现PWM波。
我先给出我的一个应用程序,然后通过程序来书名定时器A的基本用法。
程序如下:void init_TimerA ( void ){CCTL0 = CCIE; // 开启比较器0中断CCR0 = 32768; // 1S秒的定时CCTL1 = CCIE; // 开启比较器1中断CCR1 = 100; // 3.66mS显示延迟TACTL = TASSEL_1 + MC_1; // 开启定时器}#pragma vector = TIMERA0_VECTOR__interrupt void Timer_A0(void){time_flag = 1; // 时间变动标志if(time_stop == 1) // 设置模式标志time[0] ++; // 秒加1start_ADC12(); // 开启AD}#pragma vector = TIMERA1_VECTOR__interrupt void Timer_A1 ( void ){unsigned char tmp;tmp = TAIV;if ( tmp == 2 ) // 比较器1中断{led_flag = 1; // 刷新显示标志CCR1 += 100; // 3.35mSif ( CCR1 >= 32768 )CCR1 -= 32768;}if ( tmp == 4 ) // 比较器2中断{keyread_flag = 1; // 读取键值标志CCR2 += 5000; // 152.6mS长按键自加间隔if ( CCR2 >= 32768 )CCR2 -= 32768;}LPM3_EXIT; // 退出低功耗}定时器A大致可分为四个功能模块:计数器、比较/捕获寄存器0、比较/捕获寄存器1、比较/捕获寄存器2。
S.D.Lu的MSP430入门学习笔记(9):定时器TimerA(4)捕获功能

S.D.Lu的MSP430入门学习笔记(9):定时器TimerA(4)捕获功能本篇笔记介绍如何使用TimerA的捕获模式校准DCO、测量方波信号的频率/周期、脉宽和占空比。
对DCO时钟进行校准对信号脉宽、占空比等参数的测量要求高频时钟。
但是MSP430G2452的不支持外部高频时钟,所以不能使用外部高频晶振作为时钟源。
内部数控时钟DCO就成了唯一选择。
虽然TI在出厂时对MSP430的DCO进行了校准,保存了1MHz、8MHz、12MHz、16MHz这几个频率的校准值,但是由于工作环境的不同,会因为温度等因素的影响而产生较大的偏差。
所以,在对时钟要求较高的设计中,最好对其进行再次校准。
对DCO进行校准的基本原理是用TimerA定时器的捕获/比较功能,进行两个频率的比较,然后根据比较结果调整DCO的输出,直到得到指定频率。
具体方法是,使用外部的32768Hz晶振作为基准时钟源,使用TimerA的捕获功能对DCO的频率进行测量,然后通过DCOx、MODx和RSELx位来调节DCO的频率,直到其输出等于想要的频率。
请看例程:本例中,P1.4用于输出SMCLK,即DCOCLK,程序运行时,可以用示波器观察P1.4口的信号,以确认当前的DCOCLK频率。
同时,在不同DCO频率下,可以观察到P1.0上的LED闪烁频率不同。
在21~24行选择任意一行,屏蔽其它3行,可以得到16MHz、12MHz、8MHz、1MHz不同的DCOCLK频率。
函数void Set_DCO(unsigned int Delta);的作用就是设定DCO输出指定频率。
应该注意的是,参数Delta的单位是4069Hz。
下面对该函数的代码进行分析。
37行,对LFXT1CLK进行8分频作为ACLK,因为本例中LFXT1使用外部32768Hz 晶振,所以ACLK=32768Hz/8=4096Hz,这就是Delta的单位。
38行,将CCR0单元设置为捕获上升沿模式,信号输入为CCI0B,即ACLK=4096Hz。
MSP430单片机——定时器

MSP430单片机——定时器
昨天调了MSP430单片机的定时器,犯了个比较傻的错误。
定时器有四种模式,停止模式,增模式,连续模式,增减模式。
定时器中断也有四个,CCR0,CCR1,CCR2及溢出中断,四个。
在学习过程中,我想用下溢出中断,然后定时器又设置在了增模式,因为不希望产生比较/捕捉中断,就没有设置CCR0,原本的想法是不设置CCR0,那么定时器就会自动计数到0xFFFF后产生溢出重新计数。
结果程序没有这样想象的执行。
定时器进不了溢出中断。
最后才发现,如果定时器工作在了增模式,那么就一定要设置CCR0,因为不论是比较中断还是溢出中断,都是定时器的计数值与CCR0相关,此时的溢出中断,也是定时器计数到CCR0,然后产生溢出,又重新开始计数。
然而,如果设置在了连续模式,就不需要设置CCR0了,连续模式的计数,定时器会计数到0xFFFF后产生溢出。
虽然很简单的定时器操作,但是调试过程中,还是遇到了各种小问题。
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
MSP430简介(超详细·)

msp430简介MSP430是德州公司新开发的一类具有16位总线的带FLASH 的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化, MSP430系列将会得到越来越多人的喜爱.一、IO口(一)、P口端口寄存器:1、PxDIR 输入/输出方向寄存器(0:输入模式 1:输出模式)2、PxIN 输入寄存器输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。
3、PxOUT 输出寄存器寄存器内的内容不会受引脚方向改变的影响。
4、PxIFG 中断标志寄存器(0:没有中断请求 1:有中断请求)该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求;这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位;外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接受;5、PxIES 中断触发沿选择寄存器(0:上升沿中断 1:下降沿中断)6、PxSEL 功能选择寄存器(0:选择引脚为I/O端口 1:选择引脚为外围模块功能)7、PxREN 上拉/下拉电阻使能寄存器(0:禁止 1:使能)(二)、常用特殊P口:1、P1和P2口可作为外部中断口。
msp430 实验报告

msp430 实验报告MSP430 实验报告引言:MSP430是一款低功耗、高性能的微控制器,广泛应用于嵌入式系统开发领域。
本实验报告将介绍我对MSP430进行的一系列实验,包括基本的GPIO控制、定时器应用、模拟信号采集和通信接口应用等。
实验一:GPIO控制在本实验中,我使用MSP430的GPIO引脚控制LED灯的亮灭。
通过配置引脚的输入/输出模式以及设置引脚电平,我成功地实现了对LED灯的控制。
这为后续实验奠定了基础,也让我更加熟悉了MSP430的寄存器配置。
实验二:定时器应用在本实验中,我探索了MSP430的定时器功能。
通过配置定时器的时钟源和计数模式,我实现了定时器中断功能,并利用定时器中断实现了LED灯的闪烁。
这个实验让我更加深入地了解了MSP430的定时器模块,并学会了如何利用定时器进行时间控制。
实验三:模拟信号采集在本实验中,我使用MSP430的模拟信号输入引脚和模数转换模块,成功地将外部的模拟信号转换为数字信号。
通过配置ADC模块的采样速率和精度,我实现了对模拟信号的准确采集,并将采集到的数据通过串口输出。
这个实验让我对MSP430的模拟信号处理有了更深入的了解。
实验四:通信接口应用在本实验中,我使用MSP430的串口通信模块,实现了与外部设备的数据传输。
通过配置串口的波特率和数据格式,我成功地实现了与计算机的串口通信,并通过串口发送和接收数据。
这个实验让我掌握了MSP430与外部设备进行数据交互的方法。
结论:通过一系列的实验,我对MSP430的基本功能和应用有了更深入的了解。
MSP430作为一款低功耗、高性能的微控制器,具备丰富的外设和强大的处理能力,适用于各种嵌入式系统的开发。
通过学习和实践,我掌握了MSP430的GPIO控制、定时器应用、模拟信号采集和通信接口应用等基本技能,为以后的嵌入式系统开发打下了坚实的基础。
未来展望:MSP430作为一款成熟的微控制器,具备广阔的应用前景。
msp430定时器AD模块以及其他笔记

定时器A用到CCR0定时器A的中断可由定时器溢出引起,也可由捕获/比较器模块产生。
每个捕获/比较模块可以独立编程,由捕获/比较外部信号产生中断。
定时器A使用两个中断向量,一个单独分配给捕获/比较寄存器CCR0;另一个作为共用中断向量用于定时器和其他的捕获/比较寄存器。
捕获/比较寄存器CCR0中断向量具有最高优先级,因为CCR0主要用来定义定时器的工作模式,而这是定时器A其他功能的基础,需要最快速的服务。
开启定时器应该在修改定时器工作频率之前。
CCR1,CCR2和定时器共用另一个中断向量,属于多源中断。
由向量中断寄存器TAIV决定由哪个中断标志来触发中断。
中断标志产生数据表:中断优先级中断源缩写 TAIV 的内容最高捕获/比较器1 CCIFG1 2捕获/比较器2 CCIFG2 4定时器溢出 TAIFG 10最低没有中断将挂起 0PxDIR输入/输出方向寄存器0:I/O引脚切换成输入模式 PxIN1:I/O引脚切换成输出模式 PxOUTPxIE中断使能寄存器0:禁止该中断 1:允许该中断PxIES中断触发沿选择寄存器如果允许Px口的某个引脚中断,还需要定义该引脚的中断触发沿。
0:上升沿使相应标志置位 1:下降沿使相应标志置位PxSEL功能选择寄存器0:选择引脚为I/O端口 1:选择引脚为外围模块功能上电复位信号:POR(power-on reset)上电清除复位信号:PUC(power-up clear)POR信号的产生总会产生PUC信号,但是PUC信号的发生不一定会产生POR信号。
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
TACTL是最为主要的控制寄存器,它决定了TA的输入时钟信号、TA的工作模式、TA的开启与停止、中断的申请等工作。
MSP430单片机定时器

MSP430单片机定时器在MSP430 系列单片机中带有功能强大的定时器资源,这定时器在单片机应用系统中起到重要的作用。
在F11X,F11X1 中是不带定时器B 资源的。
430 的定时模块:看门狗定时器,定时器A,定时器B。
定时器A 主要资源特点有16 位定时计数器,其计数模式有4 种。
多种计数时钟信号供输入的捕获/比较功能寄存器和8 种输出模式的3 个可配置输出单片。
定时器资源功能说明(1)看门狗定时器(WDT):主要用于程序在生错误时用作单片机系统复位重起的。
另外,也可作为一个基本定时器使用。
(2)定时器A:作基本定时器使用,结合捕获/比较功能模块可实现时序控制,可编程波形信号发生输出。
可作串口波特率(3)定时器B:作基本定时器使用,与定时器A基本相同,但是功能方面有某些功能会比A 增强些。
定时器A-实现P1.0 方波输出。
#include{WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。
P1DIR |= 0x01; //设置P1.0 口方向为输出。
CCTL0 = CCIE; // 设置捕获/比较控制寄存器中CCIE 位为1,CCR0 捕获/比较功能中断为允许。
CCR0 = 50000; //捕获/比较控制寄存器CCR0 初值为5000。
TACTL = TASSEL_2 + MC_2; //设置定时器A 控制寄存器TACTL,使时钟源选择为SMCLK 辅助时钟。
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0 和开中断}//定时器A 中断服务程序区#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A (void){P1OUT –0x01; //P1.0 取反输出CCR0 += 50000; //重新载入CCR0 捕获/比较数据寄存器数据} tips:感谢大家的阅读,本文由我司收集整编。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)Version 1.2文先,介绍几个英文缩写的意思以及一些注意的地方。
1.Timer0/1 定时器0/1,在User's Guide中用的是TimerA/B,所指的也是Timer0/1 。
G2553Datasheet中用的是Timer0/1 ,本文以G2553Datasheet为准。
全文以Timer0为例,Timer1类同。
2.TAxR(x = 0/1)定时器x对应的计数器,这是一个只读寄存器。
硬件自动驱动计数。
3.EQUy(y = 0/1/2)计数事件发生寄存器,当TAxR = TAxCCRy时EQUy置1。
4.定时器简介MSPG2553共有两个定时器,Timer0、Timer1,他们都是十六位的定时、计数器,内含三个捕获、比较寄存器。
两个定时器均支持多个捕获、PWM输出、间歇性计时,定时器包含多个中断源,可以是计数溢出中断、捕获中断等等。
定时器包含:●同步十六位定时、计数器运行模式。
●时钟源可从MCLK、SMCLK、ACLK任意选择。
●三个比较、捕获寄存器。
●中断向量寄存器能快速解码的所有定时器中断本文以Timer0为例详细介绍430的定时器模块,下图是Timer0组成框图0-1定时器0组成框图下面简要介绍一下该硬件框图的意思,从左上角看,首先是一个时钟源选择寄存器TASSELx,通过该寄存器选择定时器的时钟源,选择了时钟源后有一个分频器Divider,相应的设置寄存器是IDx,再过来就到一个定时器的核心部分,一个16位的定时器TAR。
其右侧有一个定时器的计数模块,MCx寄存器用来设置计数模式。
接下来,TAR正下方有三个横线,右侧标有CCR0、CCR1、CCR2,意思是CCR1、CCR0的框图和下方CCR2的框图是一样的。
此处省略不写。
在CCR中,左上角为一个捕获源选择寄存器。
可以从CCI2A、CCI2B、GND或者VCC选择捕获源,选择捕获源后有一个选择捕获模式寄存器Capture Mode,然后过来有一个捕获溢出状态寄存器COV,SCS同步/异步捕获模式选择位,然后连接到捕获比较寄存器。
下方为模式选择寄存器,具体设置可以查看相应的寄存器设置。
这里仅是大概介绍一下Timer0的寄存器,具体的设置使用还看参考相应的寄存器并结合例程慢慢学习理解。
定时器运行方式下面简要重点介绍定时器计数模块的四种模式以及7种输出模式。
Timer0有一个在不断计数的只读寄存器TA0R。
计数器的计数模式共有四种,停止模式(Stop mode)、连续增计数模式(Up mode)、递增计数模式(continuous mode)、增减计数模式(Up/down mode)。
由上图可知,这四种模式可以通过MCx寄存器进行设置。
以上四种模式可以由下图可以很好理解。
0-2四种计数模式1.Stop模式计数器不工作。
2.连续计数模式为计数器从零开始连续增计数一直到0xFFFF即65535,然后又重新从零开始计数。
3.递增计数模式与连续计数模式仅有一点点区别,递增模式为计数器连续增加到TA0CCR0(即图中的CCR0)中的值后又重新从零开始计数。
TA0CCR0的值时可以在程序中直接赋值的。
4.递增递减模式也很好理解,计数器从零开始计数到CCR0后又自动减数,到零后又增计数,就像三角波一样。
每一个捕获比较模块都有一个输出单元,这个输出单元专门用来产生以下如PWM的波形信号,每一个输出单元都可以通过配置OUTMOD寄存器的值来设定八种信号输出模式,引脚输出,还要看相应的数据手册Datasheet。
下面再用几张图片详细介绍在不同计数模式下的输出态。
1.增计数模式下的输出0-3增计数模式2.递增计数模式下的输出0-4递增计数模式3.第增/第减计数模式下的输出0-5递增计数模式以上几种输出模式一般用于PWM信号的发生。
具体的使用在讲完寄存器后再举一个输出PWM信号的程序。
接下来再介绍一下定时器的捕获/比较功能,具体应查看技术手册。
●捕获模式捕获模式可以用于速度计算或时间测量。
CCIxA、CCIxB的捕获源可以连接到外部引脚或者内部信号,可以通过设定CCISx、CMx位让寄存器捕获上升、下降,或者两个输入信号的边沿。
输入信号的电平可以通过CCI位读取。
当设置寄存器CAP = 1时,使能捕获模块,●比较模式比较模式设置在CAP = 0的情况向,比较模式用于产生PWM信号。
或者在指定时间里输出终端信号,当TAxR计数到TACCRx时⏹建立起CCIFG位⏹中断事件发生标志位EQUx = 1⏹EQUx的隐含改变将影响输出模式⏹输入信号CCI被锁上入SCCI定时器中断这里以定时器0为例,定时器1同。
定时器的中断可有定时器TA0CCR0溢出产生,也可由TA0CCRx(x =1/2)溢出产生、捕获/比较事件发生引起的中断,前者有一个专用的中断向量,TIMER0_A0_VECTOR,而后者用的TIMER0_A1_VECTOR,至于是哪一个中断时间发生,还要根据标志位来判断。
定时器寄存器1.TA0CTL ,Timer0 Control Register1.1TASSELx 定时器时钟选择位,该位的值为00选择时钟源TACLK01选择时钟源ACLK10 SMCLK11INCLK(指定器件该位可选,详见指定装置Datasheet)1.2 IDx 输入时钟分频选择位,该位的值为00 /101 /210 /411 /81.3 MCx模式控制位,00 停止模式:定时器停止01 Up mode:定时器增计数到TA0CCR0的值10 Continuous mode:定时器计数到0FFFFh11 增减计数模式:定时器计数到TA0CCR0的值后减计数到01.4 TACLR 定时器清除位,该位置1,清除计数器的值归零、初始化时钟分频位、计数分频位,该位置1后自动清零。
1.5 TAIE 定时器中断使能位0 禁止中断1 使能中断1.6 TAIFG 定时器中断发生标志位0 没有发生中断事件1 发生了中断事件2.TA0R Timer0 Register定时器计数器是一个16位计数器。
该寄存器专门为定时器计数。
3.TA0CCRx Timer0 Capture/Compare Register(x = 0/1/2)定时器0捕获/比较寄存器,工作在一下两种模式下时,该位的意思为●比较模式:TACCRx保持定时比较结果数据●捕获模式:当捕获事件发生时,TA0R的值将写入该寄存器。
4.TA0CCTLx , Capture/Compare Control Register(x =0/1/2)4.1CMx Capture mode捕获模式00不捕获01捕获上升沿10 捕获下降沿11 上升、下降沿均捕获4.2CCISx 捕获/比较输入选择位,该位选择TA0CCRx的输入信号,至于是信号从哪里输入,请查看Datasheet00CCIxA01CCIxB10 GND11 Vcc4.3SCS 同步捕获源,该位用于设置输入信号与时钟源是否同步捕获0异步捕获1同步捕获4.4SCCI 同步的捕获/比较输入,所选择的 CCI 输入信号由 EQUx 信号锁存,并可通过该位读取4.5CAP 捕获/比较模式选择位0比较模式1捕获模式4.6OUTMODx 输出模式选择位,模式2,3,6,7不支持TA0CCR0,因为EQUx = EQU0000 输出模式001 置位模式010 翻转/复位模式011 置位/复位模式100 翻转模式101 复位模式110 翻转/置位模式111 复位/置位模式4.7CCIE 捕获/比较中断使能位,该位使能中断和中断标志位0禁止中断1使能中断4.8CCI 捕获/比较输入,输入信号可以通过该位读取。
4.9OUT 输出,用于输出模式0,该位用于控制输出状态0输出低电平1输出高电平4.10COV 捕获溢出,该位用于说明一个捕获事件的发生。
COV必须通过软件清零0没有捕获溢出事件发生1发生了捕获溢出事件4.11CCIFG 捕获/比较中断标志位0没有中断事件1发生了中断事件地方啊5.TA0IV Timer0 Interrupt Vector Register该中断向量列表寄存中断事件是哪一件发生。
当TA0IVx =1 捕获比较寄存器1发生了中断事件2 捕获比较寄存器2发生了中断事件5 发生了定时器事件定时器1各个寄存器的设置与定时器0大同小异,大多情况下将寄存器的名字中的0改为1即可。
此处不再赘述,如有需要,请参阅技术文档。
例程下面结合寄存器的描述即物理硬件框图,简要解释三个例程。
1.Example 1程序一开始关闭看门狗,if语句作为时钟校准的范例,可以删去。
LFXT1S_2; 选择超低频时钟源。
然后设定输出口,清除中断标志,时钟源分频设定,接下里组建定时器A,即定时器0,在详细介绍代码之前,首先看头文件关于好地兼容。
所以,在代码的编写里可以用标准模式写TA0CCR0,也可以用精简模式编写CCR0。
这样,在上述代码中,就可以很用以理解CCR0 = 5100; 等价于 TA0CCR0 = 5100;给定时器赋初值。
CCR1 = 2000; 等价于 TA0CCR1 = 2000;给定时器赋初值。
接下来到CCTL0 = CCIE; 等价于TA0CCTL0 = CCIE;使能CCR0中断。
CCTL1 = CCIE; 等价于TA0CCTL1 = CCIE;使能CCR1中断。
然后到两个中断服务函数,Timer_A0、Timer_A1。
注意TIMER0_A0_VECTOR是CCR0专用的中断向量。
而TIMER0_A1_VECTOR是其他中断向量的服务函数。
需要根据TA0IV 判断,结合寄存器的内容,Timer_A1()函数也很好理解了。
2.Example 2下面举一个无需中断服务函数、硬件自动实现产生两路PWM的例子。
初始化时钟后直接调用该函数即可。
我这里使用的是定时器B(即Timer1)。
详细的介绍见以上备注。
You’re done.桂电二院科协出品,版权所有,转载不究。
maswell_xiao@2012/7/31。