微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430 工作笔记一(转)

MSP430 工作笔记一(转)

时间:11-13 来源:互联网 点击:
一,MSP430G2553单片机的各个功能模块

(一),IO口模块,

1,我们所用的MSP430G2553有两组IO口,P1和P2。

2,IO口的寄存器有:方向选择寄存器PxDIR,输出寄存器PxOUT,输入寄存器PxIN,IO口内部上拉或下拉电阻使能寄存器PxREN,IO口功能选择寄存器PxSEL和PxSEL2,IO口中断使能寄存器PxIE,中断沿选择寄存器PxIES,IO口中断标志寄存器PxIFG。

3,所有的IO都带有中断,其中所有的P1口公用一个中断向量,所有的P2口公用一个中断向量。所以在使用中断时,当进入中断后,还要判断到底是哪一个IO口产生的中断,判断方法可以是判断各个IO口的电平。

4,中断标志PxIFG需要软件清除,也可以用软件置位,从而用软件触发一个中断。

注意:在设置PxIESx时根据PxINx有可能会引起相应的PxIFGx置位(具体的情况见用户指南),所以在初始化完IO口中断以后,正式使用IO中断前要先将对应的PxIFGx清零。程序如下:

voidIO_interrupt_init()//IO中断初始化函数

{

P1REN|=BIT4+BIT5+BIT6+BIT7;//pullup内部上拉电阻使能

//使用中断时,使能内部的上拉电阻这样当该脚悬空是,电平不会跳变,防止悬空时电平跳变不停的触发中断

P1OUT=BIT4+BIT5+BIT6+BIT7;//当引脚上的上拉或下拉电阻使能时,PxOUT选择是上拉还是下来

//0:下拉,1:上拉

P1IE|=BIT4+BIT5+BIT6+BIT7;//interruptenabledP13中断使能

P1IES|=BIT4+BIT5+BIT6+BIT7;//Hi/loedge下降沿中断

//P1IES&=~BIT3;//上升沿触发中断

P1IFG&=~(BIT4+BIT5+BIT6+BIT7);//中断标志位清零

}

5,PxOUT:如果引脚选择了内部的上拉或下拉电阻使能,则PxOUT设定电阻是上拉还是下拉,0:下拉,1:上拉

6,当IO口不用时,最好不要设为输入,且为浮动状态(这是IO口的默认状态),因为当输入为浮动时,输入电压有可能会在VIL和VIH之间,这样会产生击穿电流。所以不用的IO口可以设为输出状态,或设为输入状态但通过外围电路接至VCC或GND,或接一个上拉/下拉电阻。

7,当使用msp430g2553的IO口时要注意,因为g2553的IO口寄存器的操作,不像51,它不能单独针对某一位进行操作,必须对整个寄存器进行操作。所以就不像51,g2553不可以定义bit型的数据。所以在使用msp的IO口时要注意对需要位的操作,而不要影响其他无关的位,可以用|&^等按位操作的符号。在使用IO都控制其他外围模块时也要注意要使用的IO口的定义,可以用如下的定义方法:

#defineCLR_RSP2OUT&=~BIT0;//RS=P2.0

#defineSET_RSP2OUT|=BIT0;

#defineCLR_RWP2OUT&=~BIT1;//RW=P2.1

#defineSET_RWP2OUT|=BIT1;

#defineCLR_ENP2OUT&=~BIT2;//EN=P2.2

#defineSET_ENP2OUT|=BIT2;

#defineDataPortP1OUT

8,g2553的P27和P26脚分别接外部晶体的输出和输入脚XOUT和XIN,默认是自动设为了晶振管脚功能,但是当想把它们用为普通的IO时,也可以,设置对应的SEL设为普通的IO即可,如下:

P2DIR|=BIT6+BIT7;//把P26和P27配置为普通IO并为输出脚默认为晶振的输入和输出引脚作为dac0832

P2SEL&=~(BIT6+BIT7);//cs和wr控制端

P2SEL2&=~(BIT6+BIT7);

(二),时钟系统

1,msp430能做到超低功耗,合理的时钟模块是功不可没的。但是功能强大的时钟模块设置起来也相对复杂一些。

2,msp430的时钟源有:

(1),外接低频晶振LFXT1CLK:低频模式接手表晶体32768Hz,高频模式450KHz~8MHz;

(2),外接高速晶振XT2CLK:8MHz;

(3),内部数字控制振荡器DCO:是一个可控的RC振荡器,频率在0~16MHz;

(4),超低功耗低频振荡器VLO:不可控,4~20KHz典型值为12KHz;

3,时钟模块:430的时钟模块有MCLKSMCLKACLK:

(1),主系统时钟MCLK:提供给MSP430的CPU时钟。可以来自LFXT1CLKXT2CLKDCOVLO可选,默认为DCO。

(2),子系统时钟SMCLK:提供给高速外设。可以来自LFXT1CLKXT2CLKDCOVLO可选,默认为DCO。

(3),辅助系统时钟ACLK:提供给低速外设。可来自LFXT1CLKVLO。

4,内部的振荡器DCO和VLO提供的时钟频率不是很精确,随外部环境变化较大。

DCO默认的频率大概为800KHz,但我用示波器观察的为1.086MHz左右,当DCO设置的过高时,用示波器可以看到波形不再是方波,而是类似于正弦波。DCO可以用CCS提供的宏定义进行相对比较精确的设置,如下:

DCOCTL=CALDCO_12MHZ;//DCO设为12MHz这种方法设DCO频率比较精确,实际测得为12.08MHz左右正弦波

BCSCTL1=CALBC1_12MHZ;

用这种方法可以设置1,8,12,16MHz

宏定义如下:

#ifndef__DisableCalData

SFR_8BIT(CALDCO_16MHZ);

SFR_8BIT(CALBC1_16MHZ);

SFR_8BIT(CALDCO_12MHZ);

SFR_8BIT(CALBC1_12MHZ);

SFR_8BIT(CALDCO_8MHZ);

SFR_8BI

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top