MSP430单片机应用笔记注释

上传人:沈*** 文档编号:100902004 上传时间:2022-06-03 格式:DOC 页数:8 大小:73KB
收藏 版权申诉 举报 下载
MSP430单片机应用笔记注释_第1页
第1页 / 共8页
MSP430单片机应用笔记注释_第2页
第2页 / 共8页
MSP430单片机应用笔记注释_第3页
第3页 / 共8页
资源描述:

《MSP430单片机应用笔记注释》由会员分享,可在线阅读,更多相关《MSP430单片机应用笔记注释(8页珍藏版)》请在装配图网上搜索。

1、MSP430单片机硬件知识(1)MSP430单片机是TI公司1996年开始推向市场的超低功耗微处理器,另外他还集成了很多模块功能,从而使得用一片MSP430 芯片可以完成多片芯片才能完成的功能,大大缩小了产品的体积与成本。如今,MSP430单片机已经用于各个领域,尤其是仪器仪表、监测、医疗器械以及汽车电子等领域。 下面来说一下它的主要特点:(1)低电源电压围,1.83.6V。(2)超低功耗,拥有5种低功耗模式(以后会详细介绍)。(3)灵活的时钟使用模式。(4)高速的运算能力,16位RISC架构,125ns指令周期。(5)丰富的功能模块,这些功能模块包括:A:多通道1014位AD转换器;B:双路

2、12位DA转换器;C:比较器;D:液晶驱动器;E:电源电压检测;F:串行口USART(UART/SPI);G:硬件乘法器;H:看门狗定时器,多个16位、8位定时器(可进行捕获,比较,PWM输出);I:DMA控制器。(6)FLASH存储器,不需要额外的高电压就在运行种由程序控制写擦欧哦和段的擦除;(7)MSP430芯片上包括JTAG接口,仿真调试通过一个简单的JTAG接口转换器就可以方便的实现如设置断点、单步执行、读写寄存器等调试;(8)快速灵活的变成方式,可通过JTAG和BSL两种方式向CPU装在程序。 关于他的存器结构,在匠人的博客里已有详细的介绍,大家去看就是了。在这里我主要说说MSP43

3、0单片机的复位吧。 MSP430的复位信号有2种:上电复位信号(POR)、上电清除信号(PUC)。还有能够触发POR和PUC的信号:5种来在看门狗,1种来自复位管脚,1种来自写FLASH键值出现错误所产生的信号。 POR信号只在2种情况下发生:(1)微处理上电;(2)RST/NMI管脚上产生低电平时系统复位。 PUC信号产生的条件:(1)POR信号产生;(2)看门狗有效时,看门狗定时器溢出;(3)写看门狗定时器安全键值出现错误;(4)写FLASH存储器安全键值出现错误。 POR和PUC两者的关系:POR信号的产生会导致系统复位并产生PUC信号。而PUC信号不会引起POR信号的产生。 无论是PO

4、R信号还是PUC信号触发的复位,都会使MSP430从地址0xFFFE处读取复位中断向量,程序从中断向量所指的地址处开始执行。触发PUC信号的条件中,除了POR产生触发PUC信号外,其他的豆科一通过读取相应的中断向量来判断是何种原因引起的PUC信号,以便作出相应的处理。 系统复位(指POR)后的状态为:(1)RST/NMI管脚功能被设置为复位功能;(2)所有I/O管脚被设置为输入;(3)外围模块被初始化,其寄存器值为相关手册上的默认值;(4)状态寄存器SR复位;(5)看门狗激活,进入工作模式;(6)程序计数器PC载入0xFFFE处的地址,微处理器从此地址开始执行程序。 典型的复位电路有一下3种:

5、(1) 在RST/NMI管脚上接100K欧的上拉电阻。(2)在(1)的基础上再接0.1uf的电容,电容的一端接地,可以使复位更加可靠。(3)再(2)的基础上,再在电阻上并接一个型号为IN4008的二极管,可以可靠的实现系统断电后立即上电。典型复位电路图.rarMSP430vcc100K1MSP430RST100Kvcc0.1u2MSP430RSTvcc0.1u3MSP430单片机硬件知识(2)-MSP430单片机的时钟系统 MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为:(1)DCO 数控

6、RC振荡器。它在芯片部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能,他的调节分为以下3步:a:选择BCSCTL1.RSELx确定时钟的标称频率;b:选择DCOCTL.DCOx在标称频率基础上分段粗调;c:选择DCOCTL.MODx的值进行细调。(2)LFXT1 接低频振荡器。典型为接32768HZ的时钟振荡器,此时振荡器不需要接负载电容。也可以接450KHZ8MHZ的标准晶体振荡器,此时需要接负载电容。(3)XT2 接450KHZ8MHZ的标准晶体振荡器。此时需要接负载电容,不用时可以关

7、闭。 低频振荡器主要用来降低能量消耗,如使用电池供电的系统,高频振荡器用来对事件做出快速反应或者供CPU进行大量运算。 MSP430的3种时钟信号:MCLK系统主时钟;SMCLK系统子时钟;ACLK辅助时钟。(1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。(2)SMCLK系统子时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。SMCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。(3)ACLK辅助时钟。供外围模块使用。并在使用前可以通过各

8、模块的寄存器实现分频。但ACLK只能由LFXT1进行1、2、4、8分频作为信号源。 PUC复位后,MCLK和SMCLK的信号源为DCO,DCO的振荡频率为800KHZ。ACLK的信号源为LFXT1。 MSP430部含有晶体振荡器失效监测电路,监测LFXT1(工作在高频模式)和XT2输出的时钟信号。当时钟信号丢失50us时,监测电路捕捉到振荡器失效。如果MCLK信号来自LFXT1或者XT2,那么MSP430自动把MCLK的信号切换为DCO,这样可以保证程序继续运行。但MSP430不对工作在低频模式的LFXT1进行监测。MSP430单片机硬件知识(3)-5种低功耗模式5种低功耗模式分别为LPM0L

9、PM4(LOW POWER MODE),CPU的活动状态称为AM(ACTVE MODE)模式。其中AM耗电最大,LPM4耗电最省,仅为0.1uA。另外工作电压对功耗的影响:电压越低功耗也越低。 系统PUC复位后,MSP430进入AM状态。在AM状态,程序可以选择进入任何一种低功耗模式,然后在适当的条件下,由外围模块的中断使CPU退出低功耗模式,返回AM模式,再由AM模式选择进入相应的低功耗模式,如此类推。 工作模式的选择由状态寄存器SR中的SCG1、SCG0、OSCOFF、CPUOFF位控制。由于在CPU的头文件中对CPU的各寄存器和模块的各种工作模式都作了详尽的定义,所以编程时尽可能的利用就

10、是了。如:要进入低功耗模式0,可在程序中直接写:LPM0; 。进入低功耗模式4,可以写:LMP4;就可以了。退出低功耗模式如下: LPM0_EXIT; /退出低功耗模式0 LPM4_EXIT; /退出低功耗模式4MSP430单片机硬件知识(4)中断 中断是MSP430微处理器的一大特色,有效地利用中断可以简化程序和提高执行效率。MSP430的几乎每个外围模块都能够产生中断,为MSP430针对事件(即外围模块产生的中断)进行的编程打下基础。MSP430在没有事件发生时进入低功耗模式,事件发生时,通过中断唤醒CPU,事件处理完毕后,CPU再次进入低功耗状态。由于CPU的运算速度和退出低功耗的速度很

11、快,所以在应用中,CPU大部分时间都处于低功耗状态。 MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断。 (1)系统复位的中断向量为0xFFFE。(2)不可屏蔽中断的中断向量为0xFFFC。响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVIE复位。软件首先判断中断源并复位中断标志,接着执行用户代码。退出中断之前需要置位OFIE、NMIE、ACCVIE,以便能够再次响应中断。需要特别注意点:置位OFIE、NMIE、ACCVIE后,必须立即退出中断相应程序,否则会再次触发中断,导致中断嵌套,从而导致堆栈溢出,致使程序执行结果的无法预料。 (3)可屏蔽中断的中断来源于具有中断

12、能力的外围模块,包括看门狗定时器工作在定时器模式时溢出产生的中断。每一个中断都可以被自己的中断控制位屏蔽,也可以由全局中断控制位屏蔽。 多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430会将不可屏蔽中断控制位SR.GIE复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断,去响应另外的中断。但SR.GIE复位不影响不可屏蔽中断,所以仍可以接受不可屏蔽中断的中断请求。 中断响应的过程:(1)如果CPU处于活动状态,则完成当前指令;(2)若CPU处于低功耗状态,则退出低功耗状态;(3)将下一条指令的PC值压入堆栈;(4)将状态寄存器SR压入堆栈;

13、(5)若有多个中断请求,响应最高优先级中断;(6)单中断源的中断请求标志位自动复位,多中断源的标志位不变,等待软件复位;(7)总中断允许位SR.GIE复位。SR状态寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位复位;(8)相应的中断向量值装入PC寄存器,程序从此地址开始执行。 中断返回的过程:(1)从堆栈中恢复PC值,若响应中断前CPU处于低功耗模式,则可屏蔽中断仍然恢复低功耗模式;(2)从堆栈中恢复PC值,若响应中断前CPU不处于低功耗模式,则从此地址继续执行程序。 MSP430各系列的中断向量表请查阅相关资料。MSP430单片机硬件知识(5)-MSP430单片机的端口介绍

14、MSP430的端口有P1、P2、P3、P4、P5、P6、S和COM(型号不同,包含的端口也不仅相同,如MSP430X11X系列只有P1,P2端口,而MSP430X4XX系列则包含全部上述端口),它们都可以直接用于输入/输出。MSP430系统中没有专门的输入/输出指令,输入/输出操作通过传送指令来实现。端口P1P6的每一位都可以独立用于输入/输出,即具有位寻址功能。常见的键盘接口可以直接用端口进行模拟,用查询或者中断方式控制。由于MSP430的端口只有数据口,没有状态口或控制口,在实际应用中,如在查询式输入/输出传送时,可以用端口的某一位或者几位来传送状态信息,通过查询对应位的状态来确定外设是否

15、处于“准备好”状态。 端口的功能。(1)P1,P2端口: I/O,中断功能,其他片外设功能如定时器、比较器;(2)P3,P4P5P6端口:I/O,其他片外设功能如SPI、UART模式,A/D转换等;(3)S,COM端口:I/O,驱动液晶。 MSP430各端口具有丰富的控制寄存器供用户实现相应的操作。其中P1,P2具有7个寄存器,P3P6具有4个寄存器。通过设置寄存器我们可以实现:(1)每个I/O位独立编程;(2)任意组合输入,输出和中断;(3)P1,P2所有8个位全部可以用作外部中断处理;(4)可以使用所以指令对寄存器操作;(5)可以按字节输入、输出,也可按位进行操作。 端口P1,P2的功能可

16、以通过它们的7个控制寄存器来实现。这里,Px代表P1或P2。(1)PxDIR:输入/输出方向寄存器。 8位相互独立,可以分别定义8个引脚的输入/输出方向。8位再PUC后都被复位。使用输入/输出功能时,应该先定义端口的方向。作为输入时只能读,作为输出时,可读可写。0:输入模式;1:输出模式。如:P1DIR|=BIT4; /P1.4输出 ,P2DIR=0XF0; /高4位输出,低4位输入。(2)PXIN:输入寄存器,为只读寄存器。用户不能对它进行写入,只能通过读取其寄存器的容来知道I/O口的输入信号。所以其引脚的方向要选为输入。如再键盘键盘扫描程序中经常要读取行线或者列线的端口寄存器值来判断案件情

17、况。例如:unsigned char key;P1DIR&=BIT4; /P1.4输入key=P1IN&0X10; /输出端口P1.4的值(3)PXOUT:输出寄存器。该寄存器为I/O端口的输出缓冲寄存器,再读取时输出缓存的容与引脚方向定义无关。改变方向寄存器的容,输出缓存的容不受影响。如:PIOUT|=0X01; /P1.0输出1 , PIOUT&=0X01; /P1.0输出0 。(4)PXIFG:中断标志寄存器。他的8个标志位标志相应引脚是否有中断请求有待处理。0:无中断请求, 1:有中断请求。其中断标志分别为PXIFG.0PXIFG.7。应该注意的是:PXIFG.0PXIFG.7共用一个

18、中断向量,为多源中断。当任一事件引起的中断进行处理时,PXIFG.0PXIFG.7不会自动复位,必须由软件来判断是对哪一个事件,并将相应的标志复位。另外,外部中断事件的时间必须保持不低于1.5倍的MCLK时间,以保证中断请求被接受,且使相应中断标志位置位。(5)PXIES:中断触发沿选择寄存器。如果允许PX口的某个引脚中断,还需定义该引脚的中断触发方式。0:上升沿触发使相应标志置位,1:下降沿触发相应标志置位。如:MOV.B #07H, &P1IES ;p1低3位下降沿触发中断。(6)PXIE:中断使能寄存器。PX口的每一个引脚都有一位用以控制该引脚是否允许中断。0:禁止中断,1:允许中断。M

19、OV.B #0E0H, &P2IE ;P2高3位允许中断。(7)PXSEL:功能选择寄存器。P1,P2两端口还具有其他片外设功能,将这些功能与芯片外的联系通过复用P1,P2引脚的方式来实现。PXSEL用来选择引脚的I/O端口功能与外围模块功能。0:选择引脚为I/O端口,1:选择引脚为外围模块功能。如:P1SEL|=0X10; /P1.4为外围模块功能。 端口P3、P4、P5、P6没有中断能力,其余功能同PI,P2。除掉端口P1,P2与中断相关的3个寄存器,端口P3,P4,P5,P6的4个寄存器(用法同P1,P2)分别为PXDIR,PXIN,PXOUT,PXSEL可供用户使用。 端口COM和S,

20、他们实现与液晶片的直接接口。COM为液晶片的公共端,S为液晶片的段码端。液晶片输出端也可经软件配置为数字输出端口。MSP430开发总结1.i nclude指要在编辑器设定目录下,i nclude指的是在当前工程目录下。2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。3.命名中不能有-,比如:byq-ee会认为是错误的,要用下划线。4.用IAR软件仿真时,可以加入变量,如果是查看I/O信息只需加入PXIN,PXOUT即可。5.IAR在处理字符时,要注意0,是字符处理结尾标志,他和其他编辑软件是不同的。比如我们长用字符处理回自动在结尾处加0,但IAR有些是

21、不加的,这就要十分注意。6.如果只用到LFX1的低速时钟,9600bit/s传输的话,接收会出现问题,原因是误差太大,可以设置到4800以下。7.在写FLASH时要注意其工作频率在257K476k之间,如果不是,则会出现错误。而且FLAGH只能写入0,这样就出现了必须先擦除在写入的模式。8.当IO口作为输入时,要根据平时的状态加电阻,平时为高时,加个上拉电阻,平时为低时加个下拉电阻以增加稳定性。9.在FLASH写时一定要关外部中断。10.MSP430一般是不要RC复位的,一般只要接个100K左右电阻就可以了,如果要加电容,它的大小要根据以下两个标准选择: 下载程序不会出现下载不了 程序上电会能

22、稳定复位11.用&表达式作为判断时,不要忘记加括号。12.不要使用中断嵌套。进入低功耗和退出低功耗“标志位”相信很多人在应用430的时候都喜欢吧进入低功耗和退出低功耗当做一个“标志位”来使用,譬如: 复制代码 void main(void) while(1) LPMx; #pragma vector=xxxxxxx _interrupt void xx(void) LPMx_EXIT; 在进入低功耗和退出低功耗,好些人喜欢_BIS_SR(CPUOFF)或_BIS_SR(LPM0_bits); 这样是可以的。 但是在中断里退出低功耗用_BIC_SR(CPUOFF)或_BIC_SR(LPM0_bi

23、ts);是不可以的。因为这个就相当于在中断里直接改SR,中断函数执行完毕后,SR出栈又进入了低功耗。 应该用LPMx_EXIT;或者_BIC_SR_IRQ(LPM0_bits);这个语句相当于汇编的bic.b #CPUOFF,(0)SP 之前用汇编很注意这个问题,可是用C的时候却疏忽了_BIC_SR(LPM0_bits);和LPMx_EXIT;或者_BIC_SR_IRQ(LPM0_bits);的区别。在刚开始使用低功耗的时候照葫芦画瓢(好像是LIERDA的一个技术支持工程师给我的例程),喜欢将低功耗的代码写成:for(;) _BIS_SR(LPM0_bits);_NOP(); 那个GG说这样才

24、能保证低功耗(当时对这个GG十分的佩服,居然比TI的程序员都厉害)。后来仿真才知道,这个循环完全是没有必要的。这是因为低功耗模式和中断唤醒CPU的工作过程是这样子滴:1)低功耗,CPU休眠;2)有中断标志位置位,唤醒CPU;3)执行中断服务程序,至完成;4)退出中断服务,MSP继续进入低功耗,CPU再次休眠,直到下次中断到来。所以MSP根本就没有执行这个循环过程。还是TI的程序是对的。即_BIS_SR(LPM0_bits);不过,这个循环还是在某些情况下有用处的,我们可以在中断的结束前加一个人工唤醒CPU的一个本征函数,比如_BIC_SR_IRQ(LPM0_bits);(查查.h文件看看,我记

25、得是这个函数)这让就可以让MSP在退出中断服务后继续执行下面的语句,直到再次循环到_BIS_SR();这条语句。这样还是很有用处的。比如可以使得我的键盘中断函数只处理得到键值的部分,而键盘的功能(其中要用到发送中断)的实现放在_BIS_SR();后面,这样能尽量减少中断的嵌套。for(;) _BIS_SR(LPM0_bits); key_deal();/* interrupt p1 */#pragma vector=PORT1_VECTOR_interrupt void getKeyValue(void) . . . _BIC_SR_IRQ(LPM0_bits);msp430里的标志位定义方法

26、msp430里没有位定义可下面结构体定义来代替struct flag_inf unsigned doc:1; unsigned m:1; unsigned up:1; unsigned down:1; unsigned a_v_d:1; unsigned id_set:1; unsigned chao_biao:1; unsigned tx_data:1; unsigned spi_rx_end:1; unsigned c_r_start:1; flag;使用时直接用flag.doc flag.m flag.up 这些标志位大家可以试试! MSP430提供了很好的低功耗能力,但是很多时候,一个

27、外围电路就花费了很多额外的电力,造成低功耗无法彻底实现。 现在很多电子设备都是使用电子开关控制设备是否工作的,大多教材上都是使用IO中断来实现,并且占用两个IO口,一个是电源开关钮,另一个是用来控制电源的,通过电阻接一个三极管。 个人认为,对于MCU来说,节省IO口对功能实现很有意义,只有这样才能在有限的IO口上设计更多的功能,特别是像F20XX的那种只有10个IO的片子,更是如此。所以我设计了一个利用NMI/RST来实现电源控制的方法。由于这个脚本来就是独立的,所以用它实现功能时就不会占用IO了。要运行以下程序,只需要板子上有一个标准的带RESET钮的上电复位电路即可。以下程序在MSP430

28、F135上运行通过,原理简单,就不多说了,大家看程序:#include msp430x13x.hvolatile unsigned short AFlag; / Active Flagvoid main(void) WDTCTL = WDTPW + WDTHOLD + WDTNMI; / Stop watchdog timer P1DIR = 0xFF; / P1置为输出方式 P1OUT = 0xFF; / P1输出全置为1 P1SEL = 0x00; / P1上的复用功能全部关闭 /其它IO没有使用到的也要这样初始化,不用的IO电路上应该悬空,不要接地。 _EINT(); AFlag = 0

29、; IE1 |= NMIIE; / Enable WDT interrupt while(1) if(AFlag=1) WDTCTL = WDTPW + WDTNMI + WDTTMSEL + WDTSSEL + WDTCNTCL; / Start watchdog timer IE1 |= WDTIE; / Enable WDT interrupt /这里写自己的程序,把程序做在一个有限的循环里,这样做完之后就可以自动结束并关机。 LPM3; /如需定时,上边这个LPM3要被包括在那个有循环的循环体中,这样才能实现类似便携式仪表5分钟自动关机的效果。如果不使用定时也可以不要LPM3这句话。

30、WDTCTL = WDTPW + WDTHOLD + WDTNMI; / Stop watchdog timer AFlag=0; else /如果周边设备在关机时有需要复位的或是关闭的在这里处理 LPM4; #pragma vector=WDT_VECTOR /看门狗定时中断服务_interrupt void wdt_timer(void) LPM3_EXIT; / Cleat LPM3 bits from 0(SR)#pragma vector=NMI_VECTOR /非屏蔽中断服务_interrupt void nmi_button(void) if(AFlag=1) /AFlag=0; WDTCTL = 0x5B00; /以上两种写法都可以实现关机功能,但是第二个会引起复位,第一个不会,对要求现场一直保留的系统建议第一个语句写法。 else AFlag=1; IFG1 &= NMIIFG; IE1 |= NMIIE; LPM4_EXIT; 另外,如果希望保留复位功能的话,其实可以在标志为1时就把NMI还回RST的,这样按下去就复位,系统一启动就直接睡着,又会变成关机状态了,功能是一样的。不过这种方法不能保留现场了,所以我才写成现在的样子。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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