1464|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

初学MSP430F5529 常用内置函数和一些说明 [复制链接]

(1) MSP430F5529支持最高工作频率为25MHZ,也就是说你通过
                锁相环倍频来提高系统运行速度是有一个限制的,
                最高只能到25MHZ(再高没意思了)。
  2几个重要的内联函数
                      (内联函数定义在intrinsics.h中,但是这几个函数使用的时候不需要事先声明该文件头)
                        __bic_SR_register();
                                      将CPU中SR寄存器中的某些位清零。即将括号内的位清零。
                                      例:__bic_SR_register(GIE);//将GIE位清零,即关闭总中断
                        __bis_SR_register();
                                      将CPU中SR寄存器中的某些位置1。即将括号内的位置1。
                         __interrupt
  放在函数前面,标志中断函数。下面这段程序是看门狗WDT的中断服务函数。WDT_VECTOR为看门狗的中断向量。举例:
   #pragma vector=WDT_VECTOR
  __interrupt void WatchDog(void)
  {… }
                 __monitor
  放在函数前面,功能是声明当这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响应。
                 __bic_SR_register_on_exit();
  功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中的某些位清0.
    ⑥ __bis_SR_register_on_exit();
  功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中的某些位置1.
    ⑦ __no_init
  放在全局变量前面,功能是使程序启动时不为变量赋初值
    ⑧ __disable_interrupt
          关闭总中断,另外一个相同作用的表达为:    _DINT()
    ⑨__enable_interrupt
                     开启总中断,另外一个相同作用的表达为:    _EINT()
    ⑩__even_in_range(  ,  );
    常被用在多源中断的查询中,如switch( __even_in_range(TAIV,10)
    意思是:只有在TAIV的值是在0--10内的偶数时才会执行
  switch函数内的语句。其作用是提高switch语句的效率
  A.        _NOP()
  空操作,等价于__no_operation指令
  B. __get_SP_register(void)
  功能:返回堆栈指针寄存器SP的值。
  C.__get_SR_register_on_exit(void)
  功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,返回状态寄存器SR的值。
   D. __bcd_add_short(unsigned short,unsigned short);
  功能:两个16为BCD格式的数字相加,返回和。
   E.__bcd_add_long(unsigned long,unsigned long);
  功能:两个32位BCD格式的数字相加,返回和。
  F. __delay_cycles(x);
          系统自带的精确延时。x必须是常量或则是常量表达式,如果是变量则编译报错!延时的时间为x乘以MCLK的时钟周期
  (3关于MSP430大量寄存器如何处理的问题:
            MSP430寄存器太多了,把每一个都记住实在太难。所以,我的建议是,学习的时候,把重要的常用的寄存器记住。
       至于其它众多寄存器,大家只需要有一个印象,知道这些寄存器可以控制那些设置。到具体用的时候,再查找技术手册;
  4)头文件msp430f5529.h
  里面不仅定义了对各个寄存器的声明,还定义了很多很方便的东东。
  比如你要进入低功耗模式1:LPM1;
  比如你要把定时器A0的时钟选为SMCLK:
         最原始的做法是TA0CTL=0x0200,但现在有更清晰的做法TA0CTL=TASSEL_2;//时钟源选择模式2
  所以说要不断发掘不断积累!
  (5中断寄存器的名字
         大家都知道中断函数是怎么写的,模式为:
  #pragma vector=中断向量地址(名)
  __interrupt void 自定义中断函数名(void)
  {… }
         但是想要写出来,你首先得知道中断向量叫什么名字吧
  到目前,我们已经遇到了看门狗中断WDT_VECTOR、引脚P2的外部中断PORT2_VECTOR、定时器A0(CCR1-CCR4和TAIFG)中断TIMER0_A1_VECTOR
  还有大量的中断向量,我们目前还不知道名字该怎么办。
  打开msp430f5529.h,拉到该文件底部,就展示了定义的各种中断向量名,还有解释。
  (6)MSP430的最大特色就是低功耗,这个是体现在各个方面的。在整体层次上,MSP430可以设置整个系统的工作模式以达到适应工作要求且降低功耗的目的。
  为了降低功耗,处理器有几个考虑:一个是降低工作电压(F5529为3.3V很低了吧,而且内部核心电压VCORE更低);
  第二个就是把暂时不用的模块功能关闭掉(F5529各个模块都可以独立运行,如定时器、A/D转换、看门狗等都可以在CPU休眠的状态下独立工作。若需要主CPU工作,任何一个模块都可以通过中断唤醒CPU,从而使系统以最低功耗运行。);
  第三个方法就是降低工作时钟频率。

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表