按照老规矩,罗列一下工具和平台:
- MSP-EXP430F5229 开发板,自带ez-FET仿真器
- TI Composer Code Studio v7.1.0 / IAR for MSP430 v7.1.0
- Windows 10 Pro 1703 64bits
- etc...
内部函数
在TI ToolChain和 GNU for MSP430这两种编译工具链中,都提供了相同的内部函数,用于对CPU进行特殊操作,这些函数定义在intrinsics.h头文件中,但在使用这些函数时不需要首先声明该头文件。
详细说明
MSP430系列单片机的内部函数分为以下两种:
- 内联函数
-
__bic_SR_register()
将CPU中SR寄存器中的某些位清零,括号内参数为寄存器位 -
__bis_SR_register()
将CPU中SR寄存器内的某些位置1,参数同上 -
__bic_SR_register_on_exit()
用于一个中断函数或不可中断函数(标志为__monitor)返回时,将CPU中SR寄存器的某些位清零 -
__bis_SR_register_on_exit()
用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中的某些位置1 -
__disable_interrupt()
或_DINT()
关闭总中断,无参数 -
__enable_interrupt()
或_EINT()
开启总中断,无参数 -
__even_in_range( , )
常被用在多源中断的查询中,如 switch(__even_in_range(TAIV,10),意思是:只有在TAIV的值是在0--1内的偶数时才会执行switch函数内的语句。其作用是提高switch语句的效率 -
__no_operation()
或_NOP()
空操作,无参数 -
__get_SP_register(void)
返回堆栈指针寄存器SP的值 -
__get_SR_register_on_exit(void)
用于一个中断函数或者不可中断函数(标志为__monitor)返回时,返回状态寄存器SR的值 -
__bcd_add_short(unsigned short,unsigned short)
两个16为BCD格式的数字相加,返回和 -
__bcd_add_long(unsigned long,unsigned long)
两个32位BCD格式的数字相加,返回和 -
__delay_cycles(x)
系统自带的精确延时。x必须是常量或常量表达式,如果是变量则编译报错!延时的时间为x乘以MCLK的时钟周期
-
- 特殊标志
-
__interrupt
放在函数前面,标志中断函数 -
__monitor
放在函数前面,功能是声明当这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响应 -
__no_init
放在全局变量前面,功能是使程序启动时不为变量赋初值
-
总结
这次的笔记到此为止啦,关于它们的具体用法,后续会有详细代码发布的,希望来看这篇文章的小伙伴,点个赞在走哦!学习愉快!