MSP430基本外设.ppt

上传人:豆**** 文档编号:27183391 上传时间:2022-07-23 格式:PPT 页数:132 大小:9.15MB
返回 下载 相关 举报
MSP430基本外设.ppt_第1页
第1页 / 共132页
MSP430基本外设.ppt_第2页
第2页 / 共132页
点击查看更多>>
资源描述

《MSP430基本外设.ppt》由会员分享,可在线阅读,更多相关《MSP430基本外设.ppt(132页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、MSP430基本外设基本外设2 Copyright 2009 Texas Instruments All Rights Reservedwww.msp430.ubi.ptnMSP430系列微控制器的片内资源非常丰富,系列微控制器的片内资源非常丰富,外设外设模块模块通过数据总线、控制总线和地址总线与通过数据总线、控制总线和地址总线与CPU相相连连。n系统时钟n低功耗模式n通用输入输出端口n定时器nDMA控制器n比较器An模数转换器(ADC)n数模转换模块(DAC) nLCD液晶驱动模块n硬件乘法器nFlash编程3.1 系统时钟与控制系统时钟与控制3.1.1 系统复位系统复位MSP430单片机三

2、种复位信号:单片机三种复位信号:掉电复位(掉电复位(BOR)上电复位(上电复位(POR)上电清零(上电清零(PUC)3.1 MSP430基础时钟模块基础时钟模块一、时钟系统模块结构图及构成一、时钟系统模块结构图及构成F时钟信号是定时操作的基本信号,在时钟的作用下,各部件可以有条不紊地自动工作F基本时钟模块由高速晶体振荡器、低速高速晶体振荡器、低速晶体振荡器、数字控制振荡器晶体振荡器、数字控制振荡器DCO、锁、锁频环频环FLL等部分构成F多种时钟有利于实时应用系统对低功耗低功耗和快速响应外部事件快速响应外部事件要求F 不同系列单片机包含的时钟模块不完全相同2). MSP430F6xx时钟模块有5

3、 个时钟源:XT1CLK 低频或高频时钟源可使用32768Hz的低频晶振、或外接时钟,频率范围432MHz,可作为FLL基准时钟源VLOCLK 片内低功耗低频时钟源典型值为10KHz.REFOCLK 片内已整形的低频时钟源典型值为32768Hz,可作为FLL基准时钟源.DCOCLK 片内数字控制时钟源可通过FLL模块来稳定.DCOCLKDIV是DCOCLK分频得到的时钟XT2CLK 高频时钟源可接标准晶振、振荡器或外部时钟,频率范围在4MHz32MHz。ACLK 辅助时钟 ACLK一般用于低速外设模块.MCLK 系统主时钟 MCLK主要用于CPU和系统.SMCLK 子系统时钟 主要用于高速外设

4、模块.ACLK、MCLK、SMCLK均可通过软件从XT1CLK 、VLOCLK 、REFOCLK 、DCOCLK、DCOCLKDIV、XT2CLK这6个时钟源中选择,经1/2/4/8/16/32分频得到。3). 时钟系统模块提供时钟系统模块提供3种时钟信号种时钟信号当进入当进入MCU低功耗模式,某时钟被关闭,而外设选择了此时钟时低功耗模式,某时钟被关闭,而外设选择了此时钟时,外设发出时钟请求,激活该时钟,不受低功耗影响外设发出时钟请求,激活该时钟,不受低功耗影响当检测出振荡器失效当检测出振荡器失效, 系统会自动做出时钟切换,系统会自动做出时钟切换, 确保在振荡器失效的情况下,程序可以继续执行确

5、保在振荡器失效的情况下,程序可以继续执行五、时钟系统模块设置举例五、时钟系统模块设置举例#include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer P1DIR |= BIT0; / ACLK set out to pin P1SEL |= BIT0; P5SEL |= BIT4+BIT5; / Select XT1 while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= (XT1OFF); /

6、XT1 On UCSCTL6 |= XCAP_3; / Internal load cap / Loop until XT1 fault flag is cleared do UCSCTL7 &=(XT2OFFG + XT1LFOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag UCSCTL6 &= (XT1DRIVE_3); / Xtal is now stable, r

7、educe drive strength UCSCTL4 |= SELA_0; / ACLK = LFTX1 (by default) _bis_SR_register(LPM3_bits); / Enter LPM3 _no_operation(); / For debugger3.2 MSP430 的低功耗模式 (Low Power Modes)一、一、低功耗控制低功耗控制二、二、MSP430工作模式工作模式三、三、低功耗模式的进入与退出低功耗模式的进入与退出四、四、低功耗模式编程举例低功耗模式编程举例#define LPM0_bits (CPUOFF)#define LPM1_bits

8、(SCG0+CPUOFF)#define LPM2_bits (SCG1+CPUOFF)#define LPM3_bits (SCG1+SCG0+CPUOFF)#define LPM4_bits (SCG1+SCG0+OSCOFF+CPUOFF)#include in430.h#define LPM0 _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */#define LPM0_EXIT _BIC_SR_IRQ(LPM0_bits) /* Exit Low Power Mode 0 */#define LPM1 _BIS_SR(LPM1_bits) /

9、* Enter Low Power Mode 1 */#define LPM1_EXIT _BIC_SR_IRQ(LPM1_bits) /* Exit Low Power Mode 1 */#define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */#define LPM2_EXIT _BIC_SR_IRQ(LPM2_bits) /* Exit Low Power Mode 2 */#define LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */#define LPM3_EXIT

10、 _BIC_SR_IRQ(LPM3_bits) /* Exit Low Power Mode 3 */#define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */#define LPM4_EXIT _BIC_SR_IRQ(LPM4_bits) /* Exit Low Power Mode 4 */msp430F6638.h 进入低功耗模式编程举例进入低功耗模式编程举例 例如例如:进入低功耗模式:进入低功耗模式LPM0_bis_SR(LPM0_bits); 或或LPM0; 例如例如:从中断返回,退出低功耗模式从中断返回,退出低功耗模式L

11、PM0#pragma vector=xxxx /置P1中断向量_interrupt void port_int(void) /中断子程 LPM0_EXIT;四、低功耗模式举例四、低功耗模式举例例例1: 请用请用C语言编写程序语言编写程序,以中断方式响应以中断方式响应P2.3上的上的按键按键,每按下一次键,单片机由低功耗模式每按下一次键,单片机由低功耗模式LPM0进入进入活动模式,并改变一次活动模式,并改变一次4.5上的发光二极管状态。上的发光二极管状态。#include “msp430F6638.hvoid main( void ) WDTCTL = WDTPW + WDTHOLD; /关闭看

12、门狗P4DIR |= BIT5; /设置P4.5口方向为输出P2DIR &= BIT3; P2REN |= BIT3; /使能P2.3上拉电阻P2OUT |= BIT3; /P2.3口置高电平P2IES |= BIT3; /中断沿设置(下降沿触发)P2IFG &= BIT3; /清P2.3中断标志P2IE |= BIT3; /使能P2.3口中断_BIS_SR(LPM0_bits+GIE); /开中断开中断,进入低功耗模式进入低功耗模式LPM0while(1) ; /无限循环#pragma vector=PORT2_VECTOR / P2中断函数_interrupt void Port_2(vo

13、id) P4OUT = BIT5; /改变LED5灯状态P2IFG &= BIT3; /清P2.3中断标志位Interrupt Flag Registers P1IFG, P2IFG(中断标志寄存器中断标志寄存器)Each PxIFGx bit is the interrupt flag for its corresponding I/O pin and is set when the selected input signal edge occurs at the pin. All PxIFGx interrupt flags request an interrupt when their

14、corresponding PxIE bit and the GIE bit are set. Each PxIFG flag must be reset with software. Software can also set each PxIFG flag, providing a way to generate a software initiated interrupt.Bit = 0: No interrupt is pendingBit = 1: An interrupt is pendingInterrupt Edge Select Registers P1IES, P2IES(

15、中断触发沿选择寄存器中断触发沿选择寄存器)Each PxIES bit selects the interrupt edge for the corresponding I/O pin.Bit = 0: The PxIFGx flag is set with a low-to-high transitionBit = 1: The PxIFGx flag is set with a high-to-low transitionInterrupt Enable P1IE, P2IE(中断使能寄存器中断使能寄存器)Each PxIE bit enables the associated PxIFG

16、 interrupt flag.Bit = 0: The interrupt is disabledBit = 1: The interrupt is enabled 实验二实验二 按键输入与按键输入与LED一、实验内容一、实验内容 按下开发板上的按键,产生一个中断请求,在中断服务函数中,点亮对应的LED灯;二、实验原理二、实验原理 开发板上的按键和 MCU 的 IO 口对应关系如下: P4.2-KEY1 P4.3-KEY2 开发板上三个 LED 灯和 MCU 的 IO 口对应关系如下: LED_YELLOW-P4.6 LED_GREEN-P4.5 LED_RED - P4.4矩阵键盘矩阵键盘

17、三、参考程序代码三、参考程序代码#include unsigned char flag;void main(void) WDTCTL = WDTPW+WDTHOLD; / Stop WDT P4DIR &=(BIT2); P4DIR |= BIT4+BIT5+BIT6; / P4.4,P4.5,P4.6 set as output P4OUT &=(BIT4+BIT5+BIT6); / set led off P2IE |= BIT6; / enable P2.6 interrupt P2IFG &= (BIT6); / clean interrupt flag _enable_interru

18、pt(); / enable interrupt while(1) if(P4IN & 0 x04)=0) P2IFG |= BIT6; else P2IFG &=BIT6; / PORT2 interrupt service routine #pragma vector=PORT2_VECTOR_interrupt void port_2(void) P4OUT =(BIT4+BIT5+BIT6); / set led on P2IFG &=BIT6; / clean interrupt flag3.3 通用输入通用输入/输出端口输出端口3.3.1 通用输入通用输入/输出端口输出端口 MSP

19、430有丰富的端口资源,各产品因型号不同,所含端口资源不同 MSP430 x13x/14x/15x/16x有6个端口P1P6,共48根I/O引脚 MSP430 x1663x有10个端口P1P9,PJ,共74根I/O引脚 目前MSP430系列单片机的总线不对外开放, I/O端口的引脚是MCU对外进行输入/输出的重要通道 MSP430系统中操作I/O端口的方法与操作存储器单元相同,只是两者的地址不同 各基本输入/输出端口可通过控制寄存器设置方向、功能,且都可以位操作,即每位都可单独配置MSP430F663x 有P1P9, PJ共10个I/O 端口,共74根I/O引脚其中P1P6,P8,P9每个端口

20、8根引脚P7 有6根引脚,PJ有4根引脚与每个与每个I/O引脚输入引脚输入/输出功能有关的输出功能有关的I/O寄存器寄存器 PxSEL功能选择寄存器: P1SEL, P2SEL, , PJSEL PxDIR方向选择寄存器: P1DIR, P2DIR, , PJDIR PxOUT输出数据寄存器: P1OUT, P2OUT, , PJOUT PxIN输入数据寄存器: P1IN, P2IN, , PJIN PxREN拉电阻使能寄存器: P1REN, P2REN, , PJREN PxDS 输出增强寄存器:P1DS, P2DS, , PJDSx可为1J, 由具体的单片机确定 对于P1端口,有P1SEL

21、, P1DIR, P1OUT, P1IN均为8位寄存器端口的每根引脚可单独配置,相互之间不影响I/O端口端口x 基本输入基本输入/输出示意图输出示意图( 不考虑其他模块功能时不考虑其他模块功能时)General purpose digital I/O (PxSEL=00H时)P1 端口输入输出电路端口输入输出电路input/output schematicP1SEL.x=0P1SEL.x=0,不考虑中断功能不考虑中断功能P1SEL.xP1SEL.xP1DIR.xP1DIR.xP1OUT.xP1OUT.xP1IN.xP1IN.xP1.xP1.xx = 0 7P1SEL.x=0 , P1DIR.x

22、=1P1SEL.x=0 , P1DIR.x=1General-purpose digital I/OOutputGeneral-purpose digital I/OOutputP1SEL.x=0 , P1DIR.x=0P1SEL.x=0 , P1DIR.x=0General-purpose digital I/OInputGeneral-purpose digital I/OInputDirection Registers PxDIR(输入(输入/输出方向寄存器)输出方向寄存器)Each bit in each PxDIR register selects the direction of

23、the corresponding I/Opin, regardless of the selected function for the pin. PxDIR bits for I/O pins that are selected for other module functions must be set as required by the other function.Bit = 0: The port pin is switched to input directionBit = 1: The port pin is switched to output directionInput

24、 Register PxIN(输入寄存器)(输入寄存器)Each bit in each PxIN register reflects the value of the input signal at thecorresponding I/O pin when the pin is configured as I/O function.Bit = 0: The input is lowBit = 1: The input is highOutput Registers PxOUT(输出寄存器)(输出寄存器)Each bit in each PxOUT register is the value

25、 to be output on the correspondingI/O pin when the pin is configured as I/O function and output direction.Bit = 0: The output is lowBit = 1: The output is highFunction Select Registers PxSEL(功能选择寄存器)(功能选择寄存器)Port pins are often multiplexed with other peripheral module functions. See the device-speci

26、fic data sheet to determine pin functions. Each PxSEL bit is used to select the pin function I/O port or peripheral module function.Bit = 0: I/O Function is selected for the pinBit = 1: Peripheral module function is selected for the pinPxREN(上拉或下拉电阻使能寄存器)(上拉或下拉电阻使能寄存器)Bit = 0:禁用上拉禁用上拉/下拉电阻下拉电阻Bit =

27、1:使能上拉使能上拉/下拉电阻下拉电阻PxDS(输出驱动强度寄存器)(输出驱动强度寄存器)Bit = 0:低驱动强度低驱动强度Bit = 1:高驱动强度高驱动强度P4.3+3VLED例例1:使用软件定时周期性取反:使用软件定时周期性取反P4.3MSP430F1690: 亮亮; 1: 灭灭#include void main(void) volatile unsigned int i; WDTCTL=WDTPW|WDTHOLD; P4DIR|=0 x08; while(1) i=30000; do(i-); while(i!=0); P4OUT=0 x08; 程序程序例题例题2 利用按键改变利用

28、按键改变LED的亮灭,按键对应的引脚配置的亮灭,按键对应的引脚配置为中断方式为中断方式#include #pragma vector=PORT2_VECTOR_interrupt void Port_2(void) volatile unsigned int i; P4OUT=0 x08; i=1500; do(i-); while(i-); while(!(P2IN&0 x40); i=1500; do(i-); while(i!=0); P2IFG&=0 x40;void main(void) WDTCTL=WDTPW|WDTHOLD; P4DIR|=0 x08; P2DIR&=0 x40

29、; P2IE|=0 x40; P2IES|=0 x40; _BIS_SR(LPM3_bits+GIE);3.4 定时器3.4.2 定时器A 定时器A的特性 定时器A的结构 定时器A的工作原理定时器工作模式捕获/比较模块输出单元Timer_A中断 定时器A的典型应用 定时器A的特性 定时器 A 由一个16位定时器和多路捕获/比较通道组成。 MSP430X5XX / 6XX系列单片机的Timer _A有以下特性:带有 4 种操作模式的异步 16 位定时/计数器。多输入时钟,可以是慢时钟,快时钟以及外部时钟。7 个捕获/比较寄存器。可配置的PWM(脉宽调制)输出。异步输入和同步锁存。不仅能捕获外部事

30、件发生的时间还可锁定其发生时的高低电平。完善的中断服务功能。8种输出方式选择。可实现串行通信。3.4.2.1 Timer_A的结构的结构 从上图可以看出,Timer_A有以下部分组成:定时计数器:16 位定时/计数寄存器TAxR 时钟源的选择和分频 :定时器时钟 TACLK 可以选择 ACLK,SMCLK 或者来自外部的 TAxCLK。选择的时钟源,可以通过软件选择分频系数(2、3、4、5、6、7、8)。捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O 端口处理事务的能力和速度。 输出单元 :具有可选的8种输出模式,用于产生用户需要的输出信号,支持PW

31、M。 3.4.2.2 Timer_A的工作原理的工作原理定时器模块(定时器模块(Timer Block)Timer Clock 的上升沿触发的上升沿触发 16-bit 的定时的定时/计数寄存器计数寄存器(TAR)加)加 1 或减或减 1(取决于计数方式)。另外,(取决于计数方式)。另外,TAR 可以可以由程序读出,也可以由程序设置初值。由程序读出,也可以由程序设置初值。CCR0比较器输出比较器输出00: /101: /210: /411: /800: stop mode01: up mode10: continuous mode11: up/down mode1: TA interrupt e

32、nabled1: interrupt pending1: reset TAR ,clock divider and count direction for up/down mode.The TACLR bit is automatically reset and is always read as zero.定时器定时器 A 控制寄存器控制寄存器定时器 A 工作模式 MSP430X5XX / 6XX系列单片机的Timer_A共有4种计数模式,如下表所示:MCxMCx模式模式说明说明0000停止模式停止模式定时器停止定时器停止0101增计数模式增计数模式定时器重复从定时器重复从 0 0 计数到计

33、数到 TAxCCR0TAxCCR01010连续计数模式连续计数模式定时器器重复从定时器器重复从 0 0 计数到计数到 0FFFFh0FFFFh1111增增/ /减计数模式减计数模式 定时器重复从定时器重复从 0 0 增计数到增计数到 TAxCCR0 TAxCCR0 再减计数到再减计数到 0 0定时器 A 工作模式 停止模式 停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前,Timer_A工作于增/减计数模式并且处于下降计数方向,停止模式后,Timer_A仍然工作于增/减计

34、数模式。重新计数时,从暂停前的状态开始继续沿着下降方向开始计数。捕获/比较寄存器TAxCCR0用作Timer_A增计数模式的周期寄存器。计数器TAxR与TAxCCR0的值相等(或TAxR大于TAxCCR0的值)时,定时器 TAxR将立即重新从 0 开始计数。下图说明了增计数模式的计数过程。定时器 A 工作模式 增计数模式当定时器计数到 TAxCCR0 时,设置标志位TAxCCR0 CCIFG(捕获比较中断标志)为1,而当定时器从TAxCCR0计数到0时,设置标志位TAIFG(定时器溢出标志)位为1。中断标志位的设置过程,如下图所示。此模式下,定时器从当前值计数到0FFFFH后,又从0开始重新计

35、数。如下图所示,此时捕获/比较寄存器 TAxCCR0 和其它捕获/比较寄存器的工作方式相同。定时器定时器 A 工作模式工作模式 增计数模式增计数模式标志位的设置过程,如下图所示:当定时器从 0FFFFh 计数到 0 时,中断标志 TAIFG 置位。定时器 A 工作模式 增/减计数模式 该模式下,定时器先增计数到TAxCCR0的值,然后反向减计数到0。计数周期仍由TAxCCR0定义,它是TAxCCR0计数器数值的2倍。增/减计数模式时计数器中数值的变化情况如图4-35所示。定时器TAxR的值从TAxCCR01增计数到TAxCCR0时,中断标志TAxCCR0 CCIFG置位;当定时器从0001h减

36、计数到0000h时,中断标志TAIFG置位。标志位的设置情况如4-36图所示。定时器 A 捕获/比较模块Timer_A有多个相同的捕获/比较模块,为实时处理提供灵活的手段,每个模块都可用于捕获事件发生的时间或产生定时间隔。通过TACCTLx中的CAP位选择模式,该模块既可用于捕获模式,也可用于比较模式。当发生捕获事件或定时时间到都将引起中断。捕获/比较模块的结构,如下图所示。Capture/Compare Block捕捉捕捉/比较比较 控制寄存器控制寄存器 TACCTLx (x=0,1,2)capture/compare control registercapture mode00: no c

37、apture01: rising edge10: falling edge11: rising & falling edgecapture input00: CCIxA01: CCIxB10: GND11: Vcc0: 异步捕捉方式异步捕捉方式1: 同步捕捉方式同步捕捉方式0: 比较方式比较方式1: 捕捉方式捕捉方式输出方式,输出方式,8种种1: 中断允许中断允许中断标志中断标志1: 捕捉溢出捕捉溢出输出方式输出方式0的的直接输出编程位直接输出编程位 捕获模式当TACCTLx中的CAP = 1,该模块工作在捕获模式。每个捕获/比较寄存器可以用来记录时间事件,例如: 测量软件程序所用时间 测量硬

38、件事件之间的时间 测量系统频率用CM1和CM0 位选择捕获条件,可以选择禁止捕获、上升沿捕获、下降沿捕获或者上升沿下降沿都捕获。当捕获完成后,定时器的值被复制到 TAxCCRn 寄存器,并且中断标志 CCIFG 置位。如果总的中断允许位GIE允许,相应的中断允许位CCIE也允许,则将产生中断请求。如下图所示:捕获模式的信号 比较模式当TACCTLx中的CAP = 0,该模块工作在比较模式。比较方式主要用于为软件或应用硬件产生定时,还可为D/A转换功能或者马达控制等各种用途产生脉宽调制(PWM)输出信号。在计数器TAxR计数到TAxCCRn(n 代表具体的捕获比较寄存器)的值时: 中断标志 CC

39、IFG 置位 内部信号 EQUx=1 EQUx 根据输出模式影响输出 输入信号 CCI 被锁存在 SCCI定时器 A 输出单元每个捕获/比较模块都包含一个输出单元,用于产生输出信号。每个输出单元有8种工作模式,可产生基于EQUx的多种信号。除模式0外,其他模式的输出都在定时器时钟上升沿时发生变化。输出模式2,3,6,7不适合输出单元0,因为EQUx=EQU0。输出单元在输出控制位OUTMODx的控制下,有8种输出模式输出信号。这些模式与TAxR、TACCTLx、TAxCCR0的值有关,如下表所示。定时器 A 输出单元OUTMODxOUTMODx模式模式说明说明000000输出模式输出模式0 0

40、:输出输出输出信号取决与寄存器输出信号取决与寄存器 TACCTLx TACCTLx 中的中的 OUTOUT位。位。当当 OUTOUT位更新时,输出信号立即更新。位更新时,输出信号立即更新。001001输出模式输出模式1 1:置位置位输出信号在输出信号在TAxRTAxR等于等于TAxCCRnTAxCCRn时置位,并保持置时置位,并保持置位到定时器复位或选择另一种输出模式为止。位到定时器复位或选择另一种输出模式为止。010010输出模式输出模式2 2:翻转翻转/ /复位复位输出在输出在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时翻转,当时翻转,当TAxRTAxR的的值等于值等于T

41、AxCCR0TAxCCR0时复位。时复位。011011输出模式输出模式3 3:置位置位/ /复位复位输出在输出在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时置位,当时置位,当TAxRTAxR的的值等于值等于TAxCCR0TAxCCR0时复位。时复位。100100输出模式输出模式4 4:翻转翻转输出电平在输出电平在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时翻转,输出时翻转,输出周期是定时器周期的周期是定时器周期的2 2倍。倍。101101输出模式输出模式5 5:复位复位输出在输出在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时复位,并保持低时

42、复位,并保持低电平直到选择另一种输出模式。电平直到选择另一种输出模式。110110输出模式输出模式6 6:翻转翻转/ /置位置位输出电平在输出电平在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时翻转,当时翻转,当TAxRTAxR值等于值等于TAxCCR0TAxCCR0时置位。时置位。111111输出模式输出模式7 7:复位复位/ /置位置位输出电平在输出电平在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时复位,当时复位,当TAxRTAxR的值等于的值等于TAxCCR0TAxCCR0时置位。时置位。定时器 A 中断 Timer_A中断可由计数器溢出引起,也可以来自

43、捕获/比较寄存器。每个捕获/比较模块可独立编程,由捕获/比较外部信号以产生中断。 Timer_A模块使用两个中断向量:一个单独分配给捕获/比较寄存器TAxCCR0;另一个作为共用中断向量用于定时器和其他的捕获/比较寄存器。 TAxCCR0中断如下图所示:定时器 A 中断 TAxCCR1TAxCCRx和定时器按照优先次序结合共用一个中断向量,属于多源中断。中断向量寄存器用于确定哪个标志请求中断。 TAxCCR1TAxCCRx中断,如下图所示:定时器 A典型应用实现PWM PWM信号是一种具有固定周期不定占空比的数字信号,如下图所示: 如果Timer_A定时器的计数器工作在增计数方式,输出采用输出

44、模式7(复位/置位模式),则可利用寄存器TAxCCR0控制PWM波形的周期,用某个寄存器TAxCCRx控制占空比。这样Timer_A就可以产生出任意占空比的PWM波形。如下图所示: 可以随时间变化任意改变PWM信号的占空比,具体做法: 保持CCR0值(周期不变); 改变CCRx值(改变占空比)。如下图所示: 如果PWM信号占空比随时间变化,那么经过滤波之后的输出信号就是幅度变化的模拟信号,因此通过控制PWM信号的占空比,就可以产生不同的模拟信号,实现D/A转换。如下图所示: PWM不需要修改占空比和时间时,CPU在做完Timer_A初始化工作之后,Timer_A就能自动输出PWM,而不需利用中

45、断维持PWM输出,此时CPU就可以进入低功耗状态。 #include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= (XT1OFF); / XT1 On UCSCTL6 |= XCAP_3; / Internal load cap / Loop until XT1 fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1L

46、FOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag P4DIR |= BIT4+BIT5+BIT6; TA0CTL = TASSEL_1 + MC_2 + TACLR + TAIE; / ACLK, continue mode, clear TAR / enable interrupt _bis_SR_register(LPM3_bits + GIE); / Enter

47、LPM3, enable interrupts _no_operation(); / For debugger 例题例题1:编写程序,程序运行之后,开发板上的编写程序,程序运行之后,开发板上的3个个LED以以0.5Hz的的频率闪烁;频率闪烁;/ Timer0_A5 Interrupt Vector (TAIV) handler#pragma vector=TIMER0_A1_VECTOR_interrupt void TIMER0_A1_ISR(void) switch(_even_in_range(TA0IV,14) case 0: break; / No interrupt case 2:

48、 break; / CCR1 not used case 4: break; / CCR2 not used case 6: break; / reserved case 8: break; / reserved case 10: break; / reserved case 12: break; / reserved case 14:P4OUT = BIT4+BIT5+BIT6; /overflow break; default: break; #include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT while(BAKCTL

49、 & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= (XT1OFF); / XT1 On UCSCTL6 |= XCAP_3; / Internal load cap / Loop until XT1 fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG

50、1&OFIFG); / Test oscillator fault flag P1DIR |= BIT2+BIT3; / P1.2 and P1.3 output P1SEL |= BIT2+BIT3; / P1.2 and P1.3 options select例题例题2:产生占空比为产生占空比为75%的的PWM波形波形 TA0CCR0 = 512-1; / PWM Period TA0CCTL1 = OUTMOD_7; / CCR1 reset/set TA0CCR1 = 384; / CCR1 PWM duty cycle TA0CCTL2 = OUTMOD_7; / CCR2 rese

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com