msp430简介(超详细·).doc

上传人:F****n 文档编号:97999387 上传时间:2019-09-07 格式:DOCX 页数:15 大小:1.12MB
返回 下载 相关 举报
msp430简介(超详细·).doc_第1页
第1页 / 共15页
msp430简介(超详细·).doc_第2页
第2页 / 共15页
msp430简介(超详细·).doc_第3页
第3页 / 共15页
msp430简介(超详细·).doc_第4页
第4页 / 共15页
msp430简介(超详细·).doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《msp430简介(超详细·).doc》由会员分享,可在线阅读,更多相关《msp430简介(超详细·).doc(15页珍藏版)》请在金锄头文库上搜索。

1、msp430简介MSP430是德州公司新开发的一类具有16位总线的带FLASH 的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,

2、方便实用,而且,可以在超低功耗模式下工作对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化, MSP430系列将会得到越来越多人的喜爱.一、IO口(一)、P口端口寄存器:1、PxDIR 输入/输出方向寄存器(0:输入模式 1:输出模式)2、PxIN 输入寄存器输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。3、Px

3、OUT 输出寄存器寄存器内的内容不会受引脚方向改变的影响。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口可作为外部中

4、断口。 2、P6可作为A/D输入口。 3、P1.2和P2.0可作为PWM波输出口。 4、P1.1:MCLK P1.5:ACLK 5、串口通信时:P2.4、 P4.0为发送TXD, P2.5 、P4.1为接收RXD。(三)、基本操作:1、所有P口都可作为通用IO口使用2、所有P口都可进行字节操作和位操作 按字节操作: 例: P1DIR=0xff; /将P1口作为输出口 PIOUT=0x20; / P1口输出0x20 P1DIR=0x00; /将P1口作为输入口 data=P1IN /读取P1口外部输入值 按位操作: 例: P1DIR=BIT0; /将P1.0作为输出口 P1OUT|=BIT0;

5、/P1.0输出1 P1OUT&=BIT0; /P1.0输出0 P1DIR&=BIT0 /将P1.0口作为输入 data=P1IN&BIT0 /读取P1.0口外部输入值二、时钟(一)、三个时钟源:1、LFXT1CLK:低频时钟(32768HZ)2、XT2CLK:高频时钟(8MHZ)3、DCOCLK:片内数控振荡器最高46MHZ,但不稳定(不能作为定时用)(二)、时钟模块结构图:(三)、时钟模块可提供的四种时钟信号:1、ACLK:辅助时钟,来自LFXT1CLK低频时钟,可有软件选作各外围模块的时钟信号,一般用于低速外设。2、ACLK/n:ACLK经过1、2、4、8分频后由P1.5输出,仅供外部电路

6、使用。3、MCLK:系统主时钟,可有软件选择来自LFXT1CLK、XT2CLK或DCOCLK的时钟,然后经1、2、4、8分频得到。可由P1.1输出(主要用于cpu)4、SMCLK:子系统时钟,可有软件选择来自XT2CLK或DCOCLK的时钟。(主要用于高速外设)(四)、MCLK应用举例:1、在默认情况下,MCLK来自于DCOCLK其频率为1.MHZ其计算方法:MCLK=(31+1)*327682、如何选择ACLK作为MCLK:void clk_initial()doIFG1&=OFIFG; /清除振荡器的失效标志_ delay_cycles(200);while(IFG1&OFIFG)!=0)

7、; /如果振荡器的失效标志存在FLL_CTL1=SELM1+SELM0; /选择ACLK作为MCLK3、如何选择 XT2CLK作为MCLK:void clk_initial()doIFG1&=OFIFG; /清除振荡器的失效标志_delay_cycles(200);while(IFG1&OFIFG)!=0); /如果振荡器的失效标志存在FLL_CTL1=SELM1; /选择XT2CLK作为MCLK 4、如何选择 DCOCLK作为MCLK:计算(121+1) *2*32768=7.995MHZvoid CLK_initial()SCFI0|=FN_4; /选择DCO频率调整范围为2.826.6M

8、HZSCFQCTL=249; /倍频倍数,最高位为DCO+调制器的控制位FLL_CTL0=DCOPLUS+OSCCAP_1; /选择DCO作为MCLK前分频 三、中断(一)、中断源:1、外部中断:P1、P2 2、定时器中断。3、看门狗定时器中断。 4、串口中断。5、A/D 转换中断。 6、比较器中断。(二)、中断的一般设置:1、打开、关闭局部中断:打开局部中断一般是给想关的特殊功能寄存器相关位置1以P1口外部中断为例:打开局部中断:P1IE|=BIT0;/打开P1.0外部中断关闭局部中断一般是给想关的特殊功能寄存器相关位置0同样以P1口外部中断为例:关闭局部中断:P1IE&=BIT0;/关闭P

9、1.0外部中断2、打开、关闭全局中断:_EINT();/打开总中断,相当于51的EA=1;_DINT();/关闭总中断,相当于51的EA=0;3、各中断向量Interrupt Vectors:#define BASICTIMER_VECTOR (0 * 2u) /* 0xFFE0 Basic Timer */#define PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */#define USART1TX_VECTOR (2 * 2u) /* 0xFFE4 USART 1 Transmit */#define USART1RX_VECTOR (3 * 2u) /

10、* 0xFFE6 USART 1 Receive */#define PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */#define TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CC1-2, TA */#define TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CC0 */#define ADC12_VECTOR (7 * 2u) /* 0xFFEE ADC */#define USART0TX_VECTOR (8 * 2u) /* 0xFFF0 USART 0 Transmit

11、*/#define USART0RX_VECTOR (9 * 2u) /* 0xFFF2 USART 0 Receive */#define WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */#define COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */#define TIMERB1_VECTOR (12 * 2u) /* 0xFFF8 Timer B CC1-6, TB */#define TIMERB0_VECTOR (13 * 2u) /* 0xFFFA Timer B CC0 *

12、/#define NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maskable */#define RESET_VECTOR (15 * 2u) /* 0xFFFE Reset Highest Priority */4、中断优先级:优先级顺序从高到低为:PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CC1-2, TA */TIMERA0_VECTOR (6 * 2u)

13、/* 0xFFEC Timer A CC0 */ADC_VECTOR (7 * 2u) /* 0xFFEE ADC */USART0TX_VECTOR (8 * 2u) /* 0xFFF0 USART 0 Transmit */USART0RX_VECTOR (9 * 2u) /* 0xFFF2 USART 0 Receive */WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */TIMERB1_VECTOR (12 * 2u) /* 0xF

14、FF8 Timer B CC1-2, TB */TIMERB0_VECTOR (13 * 2u) /* 0xFFFA Timer B CC0 */NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maskae */RESET_VECTOR (15 * 2u) /* 0xFFFE Reset Highest Priority */5、中断的嵌套:当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)实现中断嵌套需要注意以下几点:1)430默认的是关闭中断嵌套的,一定要中断嵌套的话,就必须在中断服务程序中打开总中断msp430的指令中,_DINT()和_EINT()分别指关和开总中断。2)当进入中断服务程序时,只要不在中断服务程序中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;3)若在中断服务程序A中开了总中断,则可以响应后来的中断B(不管B的优先级比

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

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号