MSP430基本外设_第1页
MSP430基本外设_第2页
MSP430基本外设_第3页
MSP430基本外设_第4页
MSP430基本外设_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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时钟模块有

3、5 个时钟源: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 &=

6、 (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 (sfrifg1&ofifg); / test oscillator fault flag ucsctl6 &= (xt1driv

7、e_3); / xtal is now stable, reduce 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_bi

8、ts (cpuoff)#define lpm1_bits (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 */#def

9、ine lpm1 _bis_sr(lpm1_bits) /* 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 pow

10、er mode 3 */#define lpm3_exit _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; 例如例

11、如:从中断返回,退出低功耗模式从中断返回,退出低功耗模式lpm0#pragma vector=xxxx /置p1中断向量_interrupt void port_int(void) /中断子程 lpm0_exit;四、低功耗模式举例四、低功耗模式举例例例1: 请用请用c语言编写程序语言编写程序,以中断方式响应以中断方式响应p2.3上的上的按键按键,每按下一次键,单片机由低功耗模式每按下一次键,单片机由低功耗模式lpm0进入进入活动模式,并改变一次活动模式,并改变一次4.5上的发光二极管状态。上的发光二极管状态。#include “msp430f6638.hvoid main( void ) w

12、dtctl = wdtpw + wdthold; /关闭看门狗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_vec

13、tor / p2中断函数_interrupt void port_2(void) 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 interru

14、pt flags request an interrupt when their 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 pendinginte

15、rrupt edge select registers p1ies, p2ies(中断触发沿选择寄存器中断触发沿选择寄存器)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(中断使能寄存器中断使能寄存器)e

16、ach pxie bit enables the associated pxifg 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-p

17、4.6 led_green-p4.5 led_red - p4.4矩阵键盘矩阵键盘三、参考程序代码三、参考程序代码#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

18、&= (bit6); / clean interrupt flag _enable_interrupt(); / 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; / cle

19、an interrupt flag3.3 通用输入通用输入/输出端口输出端口3.3.1 通用输入通用输入/输出端口输出端口 msp430有丰富的端口资源,各产品因型号不同,所含端口资源不同 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端口的方法与操作存储器单元相同,只是两者的地址不同 各基本输入/输出端口可通过控制寄存器设置方向、功能,且都可以位操作,即

20、每位都可单独配置msp430f663x 有p1p9, pj共10个i/o 端口,共74根i/o引脚其中p1p6,p8,p9每个端口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, , pj

21、ren pxds 输出增强寄存器:p1ds, p2ds, , pjdsx可为1j, 由具体的单片机确定 对于p1端口,有p1sel, 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.xp1

22、dir.xp1out.xp1out.xp1in.xp1in.xp1.xp1.xx = 0 7p1sel.x=0 , p1dir.x=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(输入(输入/输出方向寄存器)

23、输出方向寄存器)each bit in each pxdir register selects the direction of 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 di

24、rectionbit = 1: the port pin is switched to output directioninput 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 register

25、s pxout(输出寄存器)(输出寄存器)each bit in each pxout register is the value 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 multipl

26、exed with other peripheral module functions. see the device-specific 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 pi

27、npxren(上拉或下拉电阻使能寄存器)(上拉或下拉电阻使能寄存器)bit = 0:禁用上拉禁用上拉/下拉电阻下拉电阻bit = 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

28、(1) i=30000; do(i-); while(i!=0); p4out=0 x08; 程序程序例题例题2 利用按键改变利用按键改变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&am

29、p;=0 x40;void main(void) wdtctl=wdtpw|wdthold; p4dir|=0 x08; p2dir&=0 x40; 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

30、位定时/计数器。多输入时钟,可以是慢时钟,快时钟以及外部时钟。7 个捕获/比较寄存器。可配置的pwm(脉宽调制)输出。异步输入和同步锁存。不仅能捕获外部事件发生的时间还可锁定其发生时的高低电平。完善的中断服务功能。8种输出方式选择。可实现串行通信。 timer_a的结构的结构 从上图可以看出,timer_a有以下部分组成:定时计数器:16 位定时/计数寄存器taxr 时钟源的选择和分频 :定时器时钟 taclk 可以选择 aclk,smclk 或者来自外部的 taxclk。选择的时钟源,可以通过软件选择分频系数(2、3、4、5、6、7、8)。捕获/比较器:用于捕获事件发生的时间或

31、产生时间间隔,捕获比较功能的引入主要是为了提高i/o 端口处理事务的能力和速度。 输出单元 :具有可选的8种输出模式,用于产生用户需要的输出信号,支持pwm。 timer_a的工作原理的工作原理定时器模块(定时器模块(timer block)timer clock 的上升沿触发的上升沿触发 16-bit 的定时的定时/计数寄存器计数寄存器(tar)加)加 1 或减或减 1(取决于计数方式)。另外,(取决于计数方式)。另外,tar 可以可以由程序读出,也可以由程序设置初值。由程序读出,也可以由程序设置初值。ccr0比较器输出比较器输出00: /101: /210: /411: /

32、800: stop mode01: up mode10: continuous mode11: up/down mode1: ta interrupt enabled1: 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种计数模式,

33、如下表所示:mcxmcx模式模式说明说明0000停止模式停止模式定时器停止定时器停止0101增计数模式增计数模式定时器重复从定时器重复从 0 0 计数到计数到 taxccr0taxccr01010连续计数模式连续计数模式定时器器重复从定时器器重复从 0 0 计数到计数到 0ffffh0ffffh1111增增/ /减计数模式减计数模式 定时器重复从定时器重复从 0 0 增计数到增计数到 taxccr0 taxccr0 再减计数到再减计数到 0 0定时器 a 工作模式 停止模式 停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂

34、停时的值开始以暂停前的计数方向计数。例如,停止模式前,timer_a工作于增/减计数模式并且处于下降计数方向,停止模式后,timer_a仍然工作于增/减计数模式。重新计数时,从暂停前的状态开始继续沿着下降方向开始计数。捕获/比较寄存器taxccr0用作timer_a增计数模式的周期寄存器。计数器taxr与taxccr0的值相等(或taxr大于taxccr0的值)时,定时器 taxr将立即重新从 0 开始计数。下图说明了增计数模式的计数过程。定时器 a 工作模式 增计数模式当定时器计数到 taxccr0 时,设置标志位taxccr0 ccifg(捕获比较中断标志)为1,而当定时器从taxccr0

35、计数到0时,设置标志位taifg(定时器溢出标志)位为1。中断标志位的设置过程,如下图所示。此模式下,定时器从当前值计数到0ffffh后,又从0开始重新计数。如下图所示,此时捕获/比较寄存器 taxccr0 和其它捕获/比较寄存器的工作方式相同。定时器定时器 a 工作模式工作模式 增计数模式增计数模式标志位的设置过程,如下图所示:当定时器从 0ffffh 计数到 0 时,中断标志 taifg 置位。定时器 a 工作模式 增/减计数模式 该模式下,定时器先增计数到taxccr0的值,然后反向减计数到0。计数周期仍由taxccr0定义,它是taxccr0计数器数值的2倍。增/减计数模式时计数器中数

36、值的变化情况如图4-35所示。定时器taxr的值从taxccr01增计数到taxccr0时,中断标志taxccr0 ccifg置位;当定时器从0001h减计数到0000h时,中断标志taifg置位。标志位的设置情况如4-36图所示。定时器 a 捕获/比较模块timer_a有多个相同的捕获/比较模块,为实时处理提供灵活的手段,每个模块都可用于捕获事件发生的时间或产生定时间隔。通过tacctlx中的cap位选择模式,该模块既可用于捕获模式,也可用于比较模式。当发生捕获事件或定时时间到都将引起中断。捕获/比较模块的结构,如下图所示。capture/compare block捕捉捕捉/比较比较 控制寄

37、存器控制寄存器 tacctlx (x=0,1,2)capture/compare control registercapture mode00: no capture01: rising edge10: falling edge11: rising & falling edgecapture input00: ccixa01: ccixb10: gnd11: vcc0: 异步捕捉方式异步捕捉方式1: 同步捕捉方式同步捕捉方式0: 比较方式比较方式1: 捕捉方式捕捉方式输出方式,输出方式,8种种1: 中断允许中断允许中断标志中断标志1: 捕捉溢出捕捉溢出输出方式输出方式0的的直接输出编程

38、位直接输出编程位 捕获模式当tacctlx中的cap = 1,该模块工作在捕获模式。每个捕获/比较寄存器可以用来记录时间事件,例如: 测量软件程序所用时间 测量硬件事件之间的时间 测量系统频率用cm1和cm0 位选择捕获条件,可以选择禁止捕获、上升沿捕获、下降沿捕获或者上升沿下降沿都捕获。当捕获完成后,定时器的值被复制到 taxccrn 寄存器,并且中断标志 ccifg 置位。如果总的中断允许位gie允许,相应的中断允许位ccie也允许,则将产生中断请求。如下图所示:捕获模式的信号 比较模式当tacctlx中的cap = 0,该模块工作在比较模式。比较方式主要用于为软件或应用硬件产生定时,还可

39、为d/a转换功能或者马达控制等各种用途产生脉宽调制(pwm)输出信号。在计数器taxr计数到taxccrn(n 代表具体的捕获比较寄存器)的值时: 中断标志 ccifg 置位 内部信号 equx=1 equx 根据输出模式影响输出 输入信号 cci 被锁存在 scci定时器 a 输出单元每个捕获/比较模块都包含一个输出单元,用于产生输出信号。每个输出单元有8种工作模式,可产生基于equx的多种信号。除模式0外,其他模式的输出都在定时器时钟上升沿时发生变化。输出模式2,3,6,7不适合输出单元0,因为equx=equ0。输出单元在输出控制位outmodx的控制下,有8种输出模式输出信号。这些模式

40、与taxr、tacctlx、taxccr0的值有关,如下表所示。定时器 a 输出单元outmodxoutmodx模式模式说明说明000000输出模式输出模式0 0:输出输出输出信号取决与寄存器输出信号取决与寄存器 tacctlxtacctlx 中的中的 outout位。位。当当 outout位更新时,输出信号立即更新。位更新时,输出信号立即更新。001001输出模式输出模式1 1:置位置位输出信号在输出信号在taxrtaxr等于等于taxccrntaxccrn时置位,并保持置时置位,并保持置位到定时器复位或选择另一种输出模式为止。位到定时器复位或选择另一种输出模式为止。010010输出模式输出

41、模式2 2:翻转翻转/ /复位复位输出在输出在taxrtaxr的值等于的值等于taxccrntaxccrn时翻转,当时翻转,当taxrtaxr的的值等于值等于taxccr0taxccr0时复位。时复位。011011输出模式输出模式3 3:置位置位/ /复位复位输出在输出在taxrtaxr的值等于的值等于taxccrntaxccrn时置位,当时置位,当taxrtaxr的的值等于值等于taxccr0taxccr0时复位。时复位。100100输出模式输出模式4 4:翻转翻转输出电平在输出电平在taxrtaxr的值等于的值等于taxccrntaxccrn时翻转,输出时翻转,输出周期是定时器周期的周期是

42、定时器周期的2 2倍。倍。101101输出模式输出模式5 5:复位复位输出在输出在taxrtaxr的值等于的值等于taxccrntaxccrn时复位,并保持低时复位,并保持低电平直到选择另一种输出模式。电平直到选择另一种输出模式。110110输出模式输出模式6 6:翻转翻转/ /置位置位输出电平在输出电平在taxrtaxr的值等于的值等于taxccrntaxccrn时翻转,当时翻转,当taxrtaxr值等于值等于taxccr0taxccr0时置位。时置位。111111输出模式输出模式7 7:复位复位/ /置位置位输出电平在输出电平在taxrtaxr的值等于的值等于taxccrntaxccrn时

43、复位,当时复位,当taxrtaxr的值等于的值等于taxccr0taxccr0时置位。时置位。定时器 a 中断 timer_a中断可由计数器溢出引起,也可以来自捕获/比较寄存器。每个捕获/比较模块可独立编程,由捕获/比较外部信号以产生中断。 timer_a模块使用两个中断向量:一个单独分配给捕获/比较寄存器taxccr0;另一个作为共用中断向量用于定时器和其他的捕获/比较寄存器。 taxccr0中断如下图所示:定时器 a 中断 taxccr1taxccrx和定时器按照优先次序结合共用一个中断向量,属于多源中断。中断向量寄存器用于确定哪个标志请求中断。 taxccr1taxccrx中断,如下图所

44、示:定时器 a典型应用实现pwm pwm信号是一种具有固定周期不定占空比的数字信号,如下图所示: 如果timer_a定时器的计数器工作在增计数方式,输出采用输出模式7(复位/置位模式),则可利用寄存器taxccr0控制pwm波形的周期,用某个寄存器taxccrx控制占空比。这样timer_a就可以产生出任意占空比的pwm波形。如下图所示: 可以随时间变化任意改变pwm信号的占空比,具体做法: 保持ccr0值(周期不变); 改变ccrx值(改变占空比)。如下图所示: 如果pwm信号占空比随时间变化,那么经过滤波之后的输出信号就是幅度变化的模拟信号,因此通过控制pwm信号的占空比,就可以产生不同的

45、模拟信号,实现d/a转换。如下图所示: pwm不需要修改占空比和时间时,cpu在做完timer_a初始化工作之后,timer_a就能自动输出pwm,而不需利用中断维持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

46、_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 p4dir |= bit4+bit5+bit6; ta0ctl = tassel_1 + mc_2 + taclr

47、 + taie; / aclk, continue mode, clear tar / enable interrupt _bis_sr_register(lpm3_bits + gie); / enter lpm3, enable interrupts _no_operation(); / for debugger 例题例题1:编写程序,程序运行之后,开发板上的编写程序,程序运行之后,开发板上的3个个led以以0.5hz的的频率闪烁;频率闪烁;/ timer0_a5 interrupt vector (taiv) handler#pragma vector=timer0_a1_vector_

48、interrupt void timer0_a1_isr(void) switch(_even_in_range(ta0iv,14) case 0: break; / no interrupt case 2: 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; /ov

49、erflow break; default: break; #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 &a

50、mp;= (xt2offg + xt1lfoffg + dcoffg); / clear xt2,xt1,dco fault flags sfrifg1 &= ofifg; / clear fault flags while (sfrifg1&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 =

51、 512-1; / pwm period ta0cctl1 = outmod_7; / ccr1 reset/set ta0ccr1 = 384; / ccr1 pwm duty cycle ta0cctl2 = outmod_7; / ccr2 reset/set ta0ccr2 = 128; / ccr2 pwm duty cycle ta0ctl = tassel_1 + mc_1 + taclr; / aclk, up mode, clear tar _bis_sr_register(lpm3_bits); / enter lpm3 _no_operation(); / for deb

52、ugger 看门狗定时器看门狗定时器(watch dog timer)例题:例题:使用看门狗定时器功能产生一个方波(周期性地使用看门狗定时器功能产生一个方波(周期性地取反取反p1.0)#include void main(void) /wdtctl = wdt_adly_1000; / set watchdog timer interval to 1000ms wdtctl =wdt_adly_250; /set watchdog timer interval to 250ms sfrie1 |= wdtie; / enable wdt interrupt p1dir |= 0

53、x01; / set p1.0 to output direction _bis_sr(lpm0_bits +gie); / enter lpm0 w/ interrupt/ watchdog timer interrupt service routine#pragma vector=wdt_vector_interrupt void watchdog_timer(void) p1out = 0 x01; / toggle p1.03.5 dma控制器控制器120 dma (direct memory access),直接存储器存,直接存储器存取:用硬件实现存储器与存储器之间或存储器与取:用硬件实现存储器与存储器之间或存储器与io设设备之间直接进行高速数据传送,不需要备之间直接进行高速数据传送,不需要cpu的干预。的干预。3.5.1 dma控制器的结构与特性控制器的结构与特性z数据传送不需要cpu介入,完全由dma控制器自行管理z在整个地址空间范围内传输数据z能够提高片内外设数据吞吐能力,实现高速传输z减少系统功耗z字节和字数据可以混合传送z4种传输寻址

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论