当前位置:首页 > 单片机 > 单片机
[导读]四年前学习的TI的Msp430g2553这款单片机,最近在整理学习记录的时候把当时的学习心得重新写下来。学习单片机最早是学习的51系列的,看的也是广为推崇的郭天祥郭老师的《十天学习单片机》,个人觉得单片机学习还是最先

四年前学习的TI的Msp430g2553这款单片机,最近在整理学习记录的时候把当时的学习心得重新写下来。学习单片机最早是学习的51系列的,看的也是广为推崇的郭天祥郭老师的《十天学习单片机》,个人觉得单片机学习还是最先攻克51的。学习好51之后,对单片机操作有了基本的认识,再学习其他款单片机自然是能融会贯通。

TI的430系列主打是低功耗,它的技术文档和Dome程序都非常详细,尤其是技术文档真让人有种膜拜的感觉,在每个模块的时候还有个框图,对理解模块内设置非常有帮助,我当时还特意打印了。当时它的User's Guide还没有中文版,如果实在看不懂,可以借鉴F149系列的(这款有人翻译了中文版本)。


个人觉得在学习g2553这款单片机中,主要注意的点:

(1)注意低功耗的使用,选用不同的模式。

(2)IO的设置,由于IO口比较少,复用的比较严重,当时一直纠结IO口的REN与OUT,DIR的问题,下面这个表概括详细,总结I/O 口配置时PxDIRx、PxRENx和PxOUTx寄存器的用法

PxDIRx PxRENx PxOUTx I/O 口配置
0 0 x 输入
0 1 0 置低
0 1 1 置高
1 x x 输出

其他具体的由于当时的笔记找不到,就不能一一说明了。

下面是比较实用的G2553框架程序:


#include

//函数声明

voidInitSys();

intmain(void)

{

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

InitSys();//初始化

start:

//以下填充用户代码

LPM3;//进入低功耗模式n,n:0~4。若不希望进入低功耗模式,屏蔽本句

gotostart;

}

/*****************************************************************************

系统初始化

******************************************************************************/

voidInitSys()

{

unsignedintiq0;

//使用XT2振荡器

BCSCTL1&=~XT2OFF;//打开XT2振荡器

do

{

IFG1&=~OFIFG;//清除振荡器失效标志

for(iq0=0xFF;iq0>0;iq0--);//延时,等待XT2起振

}

while((IFG1&OFIFG)!=0);//判断XT2是否起振

BCSCTL2=SELM_2+SELS;//选择MCLK、SMCLK为XT2

//以下填充用户代码,对各种模块、中断、外围设备等进行初始化

_EINT();//打开全局中断控制,若不需要打开,可以屏蔽本句

}

/*****************************************************************************

端口2中断函数

******************************************************************************/

#pragmavector=PORT2_VECTOR

__interruptvoidPort2()

{

//以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。

if((P2IFG&BIT0)==BIT0)

{

//处理P2IN.0中断

P2IFG&=~BIT0;//清除中断标志

//以下填充用户代码

}

elseif((P2IFG&BIT1)==BIT1)

{

//处理P2IN.1中断

P2IFG&=~BIT1;//清除中断标志

//以下填充用户代码

}

elseif((P2IFG&BIT2)==BIT2)

{

//处理P2IN.2中断

P2IFG&=~BIT2;//清除中断标志

//以下填充用户代码

}

elseif((P2IFG&BIT3)==BIT3)

{

//处理P2IN.3中断

P2IFG&=~BIT3;//清除中断标志

//以下填充用户代码

}

elseif((P2IFG&BIT4)==BIT4)

{

//处理P2IN.4中断

P2IFG&=~BIT4;//清除中断标志

//以下填充用户代码

}

elseif((P2IFG&BIT5)==BIT5)

{

//处理P2IN.5中断

P2IFG&=~BIT5;//清除中断标志

//以下填充用户代码

}

elseif((P2IFG&BIT6)==BIT6)

{

//处理P2IN.6

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭