历史上的今天
今天是:2025年03月08日(星期六)
2020年03月08日 | msp430内置函数总结 __bic_SR_register(),__delay_cycles(x)
2020-03-08 来源: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,从而使系统以最低功耗运行。
);
第三个方法就是降低工作时钟频率。
史海拾趣
|
我用vs2005C#在windows ce 5.0上做开发.一上来就遇到一个问题.设备与电脑连好后,activesync上也提示完成同步.呈绿色.但是当我用vs2005上的连接设备去连接该设备的时候去提示:\"连接失败,bootstrap未能加载\" 想请问这是怎么回事?… 查看全部问答> |
|
自己写了个嵌入式实时OS核,取名LOS,即Learn Operate System。LOS是应用于工业控制领域和车载设备中的可剪裁的嵌入式实时操作系统。 LOS具有的功能目录如下: 1 任 ...… 查看全部问答> |
|
replyreload += \',\' + 1109623; 这个是实物效果哦! 这个是仿真图哦! 这是仿真显示部分。 电路包括温度检测、时钟控制、闹铃报警、液晶显示等、、、、 粗糙的焊接工艺,望大家见谅啊! 带纽扣电池,可以给时钟芯片 ...… 查看全部问答> |
|
这几天做一个51项目,要用到RC-R01A这个RF接收模块,模块连接51单片机的RXD串口接收端,但是在实验的时候,却发现从RF接收模块收到的噪音太多了····以至于单片机不断的处理没用的噪音,我在无线这方面是个小白,请问有什么方法可以滤掉从RF接收 ...… 查看全部问答> |
|
从“低功耗特性图”可以足够让人感叹430在低功耗这方面的强项了。从数据手册中可以知道,MSP430低功耗模式共有5 种,为 LPM0~LPM4(LOW POWER MODE )。CPU 运行状态称为AM(ACTIVE MODE )模式。下图2显示出各种工作模式的耗电量,可以看出,AM ...… 查看全部问答> |
|
此应用报告讨论采用MSP430微处理器来设计RC型电容单触式传感器。MSP430具有一些独特的特性非常适合与电容式触摸传感器相连接。RC型方法无需专用外设且可通过MSP430产品系列中的所有器件实施。此方法本身还具有低功耗特性可实现超低功耗的应用。 此 ...… 查看全部问答> |




