历史上的今天
返回首页

历史上的今天

今天是:2025年01月12日(星期日)

2021年01月12日 | MSP430F5529 常用内置函数和一些说明

2021-01-12 来源:eefocus

  (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,从而使系统以最低功耗运行。);

  第三个方法就是降低工作时钟频率。


推荐阅读

史海拾趣

FREESCALE (NXP)公司的发展小趣事

FREESCALE (NXP) 公司发展的五个故事

故事一:从摩托罗拉剥离到独立上市

FREESCALE的前身可以追溯到摩托罗拉的半导体部门。2002年,面对半导体业务的持续亏损,摩托罗拉集团决定剥离该部门。2004年,摩托罗拉半导体产品事业部正式更名为FREESCALE半导体公司,并在次年成功上市。这一剥离与上市过程标志着FREESCALE作为一个独立实体的诞生,为其后续的发展奠定了基础。独立后的FREESCALE迅速调整战略,专注于嵌入式电子解决方案,特别是在汽车电子、工业控制等领域取得了显著成就。

故事二:与恩智浦(NXP)的合并

2015年,FREESCALE与另一家半导体巨头恩智浦(NXP)达成合并协议,这是半导体行业内的一次重大整合。合并后的公司成为全球最大的汽车半导体供应商之一,并在多个关键技术领域占据领先地位。此次合并不仅增强了双方的市场竞争力,还促进了资源共享和技术创新,为未来的增长开辟了更广阔的空间。合并后的公司在全球范围内拥有更强大的研发和销售网络,能够更好地服务于全球客户。

故事三:从亏损到盈利的转型

在成为独立公司之前,FREESCALE的前身——摩托罗拉的半导体部门曾长期面临亏损困境。然而,在剥离并独立运营后,FREESCALE通过一系列战略调整和市场拓展措施,成功实现了从亏损到盈利的转型。公司注重技术创新和产品研发,不断推出符合市场需求的新产品,同时加强与客户和合作伙伴的合作,共同推动行业发展。这些努力使得FREESCALE在激烈的市场竞争中脱颖而出,成为半导体行业的佼佼者。

故事四:技术创新的引领者

FREESCALE一直致力于技术创新,不断推动半导体技术的进步。公司在嵌入式处理器、模拟芯片、射频芯片等多个领域拥有深厚的技术积累和丰富的产品线。例如,FREESCALE推出的基于Arm Cortex-M系列的微控制器在智能家居、智能穿戴等领域得到了广泛应用;其汽车半导体产品更是广泛应用于高级驾驶员辅助系统、车载网络等领域,为汽车行业的智能化转型提供了有力支持。FREESCALE的技术创新不仅提升了自身产品的竞争力,也为整个行业的发展注入了新的活力。

故事五:全球布局与本地化服务

为了更好地服务全球客户,FREESCALE(及合并后的NXP)在全球范围内进行了广泛的布局。公司在多个国家和地区设立了研发中心、生产基地和销售网络,能够快速响应客户需求并提供本地化服务。同时,FREESCALE还积极与全球各地的合作伙伴建立紧密关系,共同推动技术创新和市场拓展。这种全球布局与本地化服务的策略使得FREESCALE能够更好地融入当地市场,为客户提供更加贴心和高效的服务。

AAT [Advanced Analog Technology, Inc.]公司的发展小趣事

由于版权和实时数据的限制,我无法直接为您提供关于AAT(Advanced Analog Technology, Inc.)公司的5个具体的发展故事。但是,我可以提供一个通用的框架,您可以根据这个框架来查找或编写相关故事。


AAT公司发展故事框架

  1. 创业初期与技术创新

在电子行业的初期,AAT公司由一群富有远见和技术的工程师创立。他们瞄准了模拟技术领域的巨大潜力,决心开发出一系列高性能的模拟芯片。初期,公司面临资金短缺和技术挑战,但通过不断的技术创新和市场调研,AAT成功研发出了一款具有竞争力的模拟芯片,并获得了市场的认可。

  1. 市场拓展与国际合作

随着技术的成熟和产品的完善,AAT开始积极拓展市场。他们与全球多家知名电子企业建立了合作关系,共同推动模拟芯片在各个领域的应用。同时,AAT也积极参与国际技术交流活动,与全球同行分享经验和技术成果,进一步提升了公司的国际影响力。

  1. 应对行业变革与战略调整

随着电子行业的快速发展和变革,AAT也面临着新的挑战和机遇。为了应对这些变化,公司进行了战略调整,加大了对新兴技术的研发投入,并优化了产品结构和市场布局。这些举措使得AAT在激烈的市场竞争中保持了领先地位。

  1. 人才培养与团队建设

AAT深知人才是企业发展的核心。因此,公司一直注重人才培养和团队建设。他们通过提供丰富的培训和发展机会,吸引和留住了一批优秀的工程师和管理人才。这些人才为公司的技术创新和市场拓展提供了有力支持。

  1. 社会责任与可持续发展

在追求经济效益的同时,AAT也积极履行社会责任。他们关注环境保护和可持续发展,通过采用环保材料和节能技术,降低产品对环境的影响。此外,AAT还积极参与公益事业,为社会做出积极贡献。


以上只是一个通用的框架,您可以根据这个框架来查找或编写关于AAT公司的具体发展故事。在编写时,请确保只描述事实,避免加入个人主观评价或褒贬色彩。同时,由于电子行业和AAT公司的发展是一个持续的过程,建议您查阅最新的行业资讯和公司报告,以确保故事的时效性和准确性。

Harwin公司的发展小趣事

Harbour Industries成立于1965年,起初主要专注于电缆的生产与销售。在20世纪60年代末和70年代初期,随着全球航空航天市场的迅速增长,Harbour敏锐地捕捉到了这一机遇。为了服务这一市场,公司进行了大规模的工厂扩建,并引入了先进的生产设备和技术。这一举措不仅提升了公司的产能,还确保了产品质量能够满足航空领域的高标准。通过不懈努力,Harbour逐渐在航空电缆市场中占据了一席之地。

AMICC [AMIC TECHNOLOGY]公司的发展小趣事

作为一家具有社会责任感的企业,AMICC始终关注环境保护和可持续发展。公司在生产过程中积极采用环保材料和技术,降低能耗和排放。同时,AMICC还积极参与公益事业,为社会做出贡献。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

这五个故事只是AMICC发展历程中的一部分,但它们足以展现出这家企业在电子行业中的拼搏和成长。AMICC以其坚定的信念、不懈的努力和持续的创新精神,在激烈的市场竞争中脱颖而出,成为了一家备受瞩目的优秀企业。

ESTEK公司的发展小趣事

ESTEK公司深知产品质量对于企业发展的重要性。因此,公司从源头上把控原材料的质量,并在生产过程中严格执行质量管理体系标准。通过一系列严格的质量管控措施,ESTEK公司的产品质量得到了有效保障。在市场上,ESTEK公司的产品以高质量、高可靠性著称,赢得了广大客户的信赖和好评。

Abbotec Incorporated公司的发展小趣事

在追求经济效益的同时,Abbotec也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,Abbotec还积极参与社会公益活动,为社会的发展做出贡献。

这五个故事都是基于电子行业发展的常见模式而虚构的,旨在展示一个电子企业可能经历的发展过程。请注意,这些故事并非针对任何真实存在的企业,也不涉及任何具体的褒贬评价。

问答坊 | AI 解惑

组装好仪器后液晶屏花屏

我的仪器组装好后,就是把板子和液晶装到外壳后,液晶在过一段时间后就会花屏,不装到外壳里就没事,弄了好长时间了也不知道怎么回事,请大家帮忙。…

查看全部问答>

WinCE5.0挂接IDE硬盘的疑惑?

WinCE5.0挂接IDE硬盘的疑惑? 有个项目,想使用IDE44pin接口挂接最少64GB的外部存储器,现有如下问题和大家讨论: 1.工作电压: 现在手头上的IDE电路是直接从S3C2440上IO口引出,鉴于3.3V的IO电压,似乎不能正常驱 ...…

查看全部问答>

本人大四学生

已经学习了c51单片机,想问下各位老师,如果以后要从事单片机开发的话,需要再学习哪些大学未传授的知识,谢谢…

查看全部问答>

求binArrayStart和binArrayEnd的定义的线索

问题描述:         大家好。我最近在修改Boot程序。在bootinit.c文件中有如下定义: IMPORT UCHAR        binArrayStart [];                    & ...…

查看全部问答>

问个mfc应用的问题??

在dialog中有个tab control,在每个tab的dialog中有个group box, group box中有个按钮。 现在的现实结果是tab control和group box都显示正常,按钮没有显示,什么原因? app方面菜鸟一个,期待大家指点…

查看全部问答>

单片机的问题

提高单片机 WR,RD 驱动能力一般用什么芯片啊…

查看全部问答>

【芯币兑换】AVR单片机学习板及编程器最详细元器件清单

一、USB型51/AVR单片机编程器元器件清单   二、AVR ATmega16单片机学习板元器件清单           [ 本帖最后由 tiankai001 于 2010-8-8 15:35 编辑 ]…

查看全部问答>

一个2407产生对称PWM的问题````

因为刚学DSP,做的是用2407产生6路3对对称PWM,一开始摸索的时候程序老是编译有问题,今天才把程序搞好``却发现我的板子出了问题,因为编的第一个程序所以没有把挖想放上来大家帮我看看这样写是不是能产生6路3对对称PWM``` 主程序如下 #include \\" ...…

查看全部问答>

求一可用的串口通讯程序

折腾了好几天,实在弄不出来了,哪位有好使的串口程序赏一个,谢谢了。…

查看全部问答>

基于LED点阵显示屏9路抢答器的设计制作程序

基于LED点阵显示屏9路抢答器的设计制作程序…

查看全部问答>