打印

#TI校园故事#+TI—MSP430学习体会及新手建议

[复制链接]
5107|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 YSU_MSP430 于 2012-10-21 13:01 编辑

燕山大学 研究生学院_电气工程学院     
      我是21ic的常客,几天前看到网站倡导大家分享和TI的校园经历,在此我作为一个新手,分享下我对TI产品MSP430F413的一些见解,主要是关于I/O口应用方面,和论坛喜欢MSP430的网友相互学习。
      以前接触最多的MCU是51,这也是全中国学生学习单片机的启蒙老师,可以说本科时期对51的应用得心应手。今年小弟读研,研究方向是医疗电子仪器,在上课的时候金教授一直在讲授的是MSP430,我当时一头雾水,当时的不懂更加激发了我的求知欲望,再加上我相信金教授的眼光,他的很多设计都是基于MSP430的,因此在他的鼓励下我下定决心一定要要把MSP430搞明白。正好他的实验室是TI的联合实验室,趁着这个有利条件我申请了MSP430的开发板,由此进入了MSP430的内心世界,我真的很感激老师给我们提供的实验条件,感谢TI联合实验室。
     我拿着老师给的开发板爱不释手,虽然有了以前学习51的基础,但对这个16位的单片机还是怀着一种神圣的心情,我想这也是热爱单片机开发人员的心境。根据以往的经验学习单片机要从其功能寄存器入手,在现在看来我的想法是正确的。我去图书馆借了一本沈建华的关于MSP430原理的书,这本书是TI大学计划的教材很经典,按照书上的介绍,渐渐进入MSP430的内心世界。下面是我的一些体会:
    首先,我们要对MSP430总体有个了解,就拿MSP430F413这个名称来说我们就能得到很多信息:‘MSP’是混合信号处理器的意思,‘F’代表是FLASH型存储器,‘41’代表41系列,‘3’说明内部ROM是8KB的。为什么说是混合信号处理器呢?我们要从其时钟模块入手,其时钟的丰富性是其他单片机无法比拟的,它有3个时钟源分别是低频时钟源(LFXTICLK)、高频时钟源(XT2CLK)(注:MSP430F413没有高频时钟源其型号有无参考具体资料)、数控时钟源(DCOCLK),三个时钟源产生了单片机需要的4个时钟信号:辅助时钟(ACLK)、系统主时钟(MCLK)、子系统时钟(SMCLK)和供外部电路使用的由P1.5输出的ACLK/n。这些时钟信号为单片机的低功耗、系统运行和外围扩展提供了强大的支持,由此可见其强大性。时钟的控制以及是否分频可有其时钟模块的功能寄存器控制。这里只起到抛砖引玉的作用其他的模块例如看门狗模块、基本定时器模块、定时器A模块、比较器A模块、LCD模块和6个I/O模块均可按照此方法学习,只要感兴趣,肯钻研我们一定能把它学好。
    其次,我们入手时一般要先拿I/O口来做实验,在做/O口实验时要注意P1和P2不仅可以做普通I/O口还可做为中断来用,其他的4个I/O模块只作为普通输入输出口。这里面要用到几个重要的功能寄存器PXDIR、PXOUT、PXIN、PXIFG、PXIES、PXIE和PXSEL,其中PXIFG、PXIES和PXIE为P1和P2特有。编写程序时要考虑这几个寄存器的上电状态,是否上电清零和上电保持原来状态不变,这样编写程序时才会得心应手。下面就是小弟做的一个I/O口控制数码管的实验,其中用到连接芯片MAX7219,以供参考。
数码管显示“21-430”:

#include<msp430f413.h>
/*7219控制寄存器地址宏定义*/
#define Decode_mode   0x09  //译码模式控制寄存器
#define Intensity     0x0A  //亮度控制寄存器
#define Scan_limit    0x0B  //扫描控制寄存器
#define Shut_down     0x0C  //掉电模式寄存器
#define Display_test  0x0F  //显示检测控制寄存器
/*IO 配  置 */
#define DIN_0  P2OUT&=~BIT0
#define DIN_1  P2OUT|=BIT0
#define CLK_0  P2OUT&=~BIT1
#define CLK_1  P2OUT|=BIT1
#define LOAD_0 P2OUT&=~BIT2
#define LOAD_1 P2OUT|=BIT2
/*写7219 子函数*/
void Write_7219(unsigned char add,unsigned char dat)
{
   unsigned char i,j;
   LOAD_0;
   for(i=0;i<8;i++)
   {
      CLK_0;
      if(add&0x80)
       DIN_1;
      else
       DIN_0;
      add<<=1;
      CLK_1;
   }
   for(j=0;j<8;j++)
   {
      CLK_0;
      if(dat&0x80)
       DIN_1;
      else
       DIN_0;
      dat<<=1;
       CLK_1;
   }
  
  LOAD_1;
  i=0;j=0;
}
/*控制寄存器初始化*/
void Init(void)
{
   Write_7219(Shut_down,0x01);//开启正常工作模式
   Write_7219(Display_test,0x00);//选择工作模式
   Write_7219(Decode_mode,0xff);//选用全译码模式
   Write_7219(Scan_limit,0x07);//8个数码管都用
   Write_7219(Intensity,0x04);//初始亮度
}
void Clear_7219(void)
{
   unsigned char k;
   for(k=1;k<9;k++)
   {
      Write_7219(k,0x7f);
   }
}
void main(void)
{
   WDTCTL=WDTPW+WDTHOLD;    //关闭看门狗
   P2DIR|=0x07;               
   Init();
   Clear_7219();
   while(1)
   {
      Write_7219(6,2);
      Write_7219(5,1);
      Write_7219(4,10);
      Write_7219(3,4);
      Write_7219(2,3);
      Write_7219(1,0);

  }
}
实验结果图片:
                           
     以上就是我的一点感悟,对于初学者也是一种帮助,作为一个初学者,我只希望更多的人都能热爱这款单片机,特别是在在便携仪器这块,以为它的低功耗特性是很多单片机所无法比拟的。另外介绍下实验平台:
1.MSP430最小系统板
2.编译环境IAR Embedded Workbench 5.30.1
3.ISP下载软件SF_BSL430
另外附加基本学习MSP430不可少的书籍:
1.MSP430X41X用户指南
MSP430F4xx User Guide.pdf (2.36 MB)
2.张晞编著的《MSP430系列单片机实用C语言程序设计》
MSP430系列单片机实用C语言程序设计_张晞_人民邮电出版社.pdf (8.84 MB)

相关帖子

沙发
elitezhe| | 2012-10-21 13:02 | 只看该作者
楼主为什么不直接用5系列呢 我觉得5系列最好用了

使用特权

评论回复
板凳
YSU_MSP430|  楼主 | 2012-10-21 13:07 | 只看该作者
初学板子是4系列的其实它们相差不多,只不过模块变化而已,触类旁通:)

使用特权

评论回复
地板
小马要努力| | 2012-10-21 13:17 | 只看该作者
不错!谢谢分享!

使用特权

评论回复
5
u880| | 2012-10-21 21:15 | 只看该作者
支持这个帖子 写的真好

使用特权

评论回复
6
huigoushang| | 2012-10-21 21:39 | 只看该作者
最近好帖子这么多

使用特权

评论回复
7
G21372| | 2012-10-21 21:54 | 只看该作者
实践出真知

使用特权

评论回复
8
yangguangaisha| | 2012-10-21 22:21 | 只看该作者
应用不错

使用特权

评论回复
9
gexingyouxian| | 2012-10-21 22:43 | 只看该作者
对新手很有感触吧

使用特权

评论回复
10
YSU_MSP430|  楼主 | 2012-10-22 15:40 | 只看该作者
5# u880
谢谢支持,相互分享!

使用特权

评论回复
11
YSU_MSP430|  楼主 | 2012-10-22 15:40 | 只看该作者
本帖最后由 YSU_MSP430 于 2012-10-22 15:48 编辑

5# u880

使用特权

评论回复
12
ji_dan| | 2012-10-25 19:03 | 只看该作者
有图有真相

使用特权

评论回复
13
forgot| | 2012-10-25 19:37 | 只看该作者
这个板子好简洁啊

使用特权

评论回复
14
YSU_MSP430|  楼主 | 2012-10-26 09:40 | 只看该作者
最小系统版,所有外围模块都是另做的,很方便! 13# forgot

使用特权

评论回复
15
sqcumt123| | 2012-10-26 15:58 | 只看该作者
这个板子不错呀,谢分享。

使用特权

评论回复
16
wdswds123| | 2012-11-17 09:46 | 只看该作者
我们用的是430F5529

使用特权

评论回复
17
无眠kevin| | 2012-11-17 14:17 | 只看该作者
支持

使用特权

评论回复
18
一览| | 2012-11-19 17:00 | 只看该作者
430 5系列的产品在低功耗上有些bug,需要一些处理。

使用特权

评论回复
19
yang256| | 2012-11-22 09:43 | 只看该作者
不错,很精彩

使用特权

评论回复
20
sgqzj520| | 2013-5-4 17:45 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

0

粉丝