原创 MSP430学习笔记(1)

2011-7-20 15:09 4312 9 15 分类: MCU/ 嵌入式

    刚刚算是学了点STM32,由于项目开发的需要,又要学MSP430。做技术的真是命苦啊,,,,没有办法,在这个多MCU的时代,客户也多了很多选择。再说了,430实在是一个很有特色的芯片,某些领域真没有什么取代的,PIC不行,STM32也不行。

    这次学习,采取点特殊的方法,跟着买来的板子上的例程,根据自己的理解,不懂的就上网搜,看一看以前学过51,PIC,STM32的知识到底起帮助作用还是反作用。不过,这法子是否行得通还难说得很。这里面用笔记记下学习过程,其中可能会有很多错误的地方,然后在下一篇再又纠正,体现了哲学关于学习的“螺旋式上升”的理论,但看的人可千万小心了,不要以为写出来就是对的,我可不负这个责任^_^。  

    闲言少叙,下面正式开始。

----------------------------------------------------------------

MSP430 学习笔记

一、开发环境建立

1.硬件 CPUMSP430F149 仿真器:MSP430-FET

2.软件:IAR

3.实验板 LT-1C

二、第一个练习

 

1.生成新工作空间

File->New->WorkSpace

出现一个新的工作空间,没有要求保存,这和我用的PCB软件AD9WorkSpace工作空间的概念一样。

这时用File->Save WorkSpace

没有任何变化.

----------------------------------------------------------------------------------------------------------------

       Project->Creat New Project

20110719160619001.gif

自动生成如下一个文件:

#include "io430.h"

 

int main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

 

  return 0;

}

这时再用:

File->Save WorkSpace

保存,则要求保存为一个eww文件。

 

2.工程设置

  单击Project->Option打开设置对话框

20110719160619002.gif

生成带调试的文件

20110719160620003.jpg

生成TXT格式输出文件

如果在进入调试时看到下面的提示:

20110719160620004.gif

说明选错了生成方式

 

20110719160620005.gif

设置调试方式,选择Debugger,选择FET Debug

 

20110719160622006.gif

再次单击左侧框中的FET Debugger,在右侧对话框中单击Connect,选择Elprotronic USB-FPA

 

三、讨论2个知识点

LT-1C给出的例子程序如下所示:

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

程序功能:控制8LED闪烁,用于测试下载功能是否正常

---------------------------------------------------

测试说明:观察LED闪烁

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

#include  <msp430x14x.h>

#include  "BoardConfig.h"

 

/****************主函数****************/

void main(void)

{ 

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

    BoardConfig(0xf0);                    //关闭数码管和电平转换,打开流水灯

    /*这两行不必理会*/

    CCTL0 = CCIE;                   //使能CCR0中断

    CCR0 = 2047;                    //设定周期0.5S               

    TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式

    P2DIR = 0xff;                   //设置P2口方向为输出

    P2OUT = 0xff;

    _EINT();                        //使能全局中断

LPM3;                           //CPU进入LPM3模式

/*这里使用了LPM3直接进入LPM3模式*/

}

1.    LPM3

关于LPM3有很多介绍,不过我最能理解的是这样一句:MSP430的低功耗事件驱动模式。

MSP430系列单片机的各个模块都可以独立运行,如定时器、输入/输出端口、A/D转换、看门狗、液晶显示器等都可以在CPU休眠的状态下独立工作。若需要主CPU工作,任何一个模块都可以通过中断唤醒CPU,从而使系统以最低功耗运行。

CPU工作于突发状态可以充分利用CPU的低功耗性能。通常,使用软件将CPU设定到某一低功耗模式,在需要时使用中断将CPU从休眠状态中唤醒,完成工作后又可以进入相应的休眠状态。如:让CPU工作在LPM3状态,通过中断事件转换到AM活动模式,根据运行需要,又可以从AM状态进入相应的低功耗模式:LPM0/LPM3LPM4

于是想要查找LPM3这个符号表示什么,习惯性地按下F12keil中的查找方式),发现IARkeil居然一样。找到msp430x14x.h文件中有两处,其中一处是:

20110719160625007.jpg

而另一处是:

20110719160626008.jpg

显然,应该是执行的这一处指令,,,不过,两个符号会冲突吗?

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

函数名称:Timer_A

    能:定时器A的中断服务函数

    数:无

返回值  :无

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

/*

#pragma vector = TIMERA0_VECTOR

__interrupt void Timer_A (void)

{ 

    P2OUT ^= 0xff;                  //P2口输出取反

}

*/

2.TMR A

TMRA是一个16位的定时器/计数器,有3"捕获/比较寄存器",定时器(TA)"捕获/比较寄存器"(CCRx)工作是相对独立的.

其中CCR0是捕获、比较通道0,我关心为何CCR0设定为2047就是定时0.5s?

先看这一行:

TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式

20110719160626009.jpg

20110719160626010.jpg

而查找符号TASSEL_1则有这样的定义:

20110719160627011.jpg

查找ID_3则得到下面的定义:

#define ID_3                (3*0x40u)  /* Timer A input divider: 3 - /8 */

查找MC_1得到下面的定义:

#define MC_1                (1*0x10u)  /* Timer A mode control: 1 - Up to CCR0 */

    这个是关键。它是定义Timer A的模式控制增量到CCR0也就是计数器每增加到CCR0中的值就从头开始了。

    所以每计2048次就是一次循环。至于2048次为何是0.5s,那肯定和时钟有关了,但这个暂且放一放吧。

 

 

文章评论6条评论)

登录后参与讨论

用户1739160 2014-3-9 11:29

谢谢!32个赞!!

用户311125 2011-7-31 00:02

一般aclk是32768Hz,用ID_3所以计数频率32768/8=4096Hz,计数2048,所以中断频率2Hz,也就是0.5s了

teach51_109853927 2011-7-29 19:41

谢谢各位朋友支持!

用户359363 2011-7-26 16:57

不错 受益匪浅

用户468654 2011-7-19 23:17

很不错的。我当初学习MSP430都没这么认真!受教了!

用户412852 2011-7-19 20:34

STM8现在推出了L系列,不知道能不能拼过430,之前是柠檬电池,现在又来了个土豆电池……
相关推荐阅读
teach51_109853927 2015-10-25 22:37
带“锁定输出”的数控稳压电源(二)
3.控制程序编写        硬件电路设计完成后,就要编写软件了。软件基本上可以分为键盘驱动,PWM生成,功能实现等部分。 3.1 键盘处理程序        STC单片机的引脚可以...
teach51_109853927 2014-03-02 12:17
带“锁定输出”的数控稳压电源(一)
本文是探索“开源培训”思想的作品。 所谓“开源培训”是指在某个社区,各志愿者提供有一定实用价值和教学价值的作品,同时详细说明制作过程,并提供制作所需的各类资源,帮助入门者快速找到适合自己的项目...
teach51_109853927 2014-02-22 21:15
《单片机项目教程》、《单片机项目教程C语言版》电子课件
《单片机项目教程》电子课件 http://pan.baidu.com/s/1kT2Yb6f 《单片机项目教程C语言版》电子课件 http://pan.baidu.com/s/1gd5O...
teach51_109853927 2014-02-22 21:05
《单片机应用与接口技术》相关资源
单片机应用与接口技术    机械工业出版社出版,江苏省教育厅推荐教材 《单片机应用与接口技术》课件 http://pan.baidu.com/s/1c0kpzUg 《单片机应用与接...
teach51_109853927 2014-02-22 15:25
便携式无线抢答器
本产品专门为开展活动时需要用到抢答器的场合设计,已制作成品,读者可以参考作为练手之用。 如图1所示左边为信号接收装置(主持人用),右边两个为发射装置(比赛选手用)。都只需要使用干电池供电即可。...
teach51_109853927 2014-02-22 15:22
Modbus通讯协议
Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协...
我要评论
6
9
关闭 站长推荐上一条 /2 下一条