为IAR 8051增加结构体操作--简化ISR编写

2020-01-23 14:37发布

本帖最后由 renjun_EMbest 于 2013-12-29 00:27 编辑

前言:

    在学习CC2540芯片的时候,觉得某些开发板提供的例程不好
直接移位操作,就是所谓的Hard-Code,完全没有代码风格可言。
另外,写中断函数的时候,IAR的废话太多,比如要写T1的中断ISR
必须这样:

#pragma vector = T1_VECTOR
__interrupt void TimerISR(void)
{
    // 这里是你的代码
}

很蛋疼,所以花了一些时间,为IAR增加两个功能,简化编程


功能介绍:
1)直接使用结构体定义来操作某个位
   比如要置位IEN1寄存器的T1IE位,直接这么写就ok

   S_IEN1.T1IE = 1;
   
   在原有寄存器名字的基础上增加前缀S_,就是结构体类型的寄存器定义
   当你输完寄存器名字后,按下<.>符号,IAR会为你自动提示位名字,非常方便

2)简化中断函数的声明方式
   原有的方式,大家都知道,反人类,就不多说了,下面是更简便的方式
   比如,要写T1的中断函数
   ISR(T1, Timer1)
   其中,第一个参数是要定义中断的模块名(请查看头文件中的定义),第二个参数是你自己的中断函数名
   就这么多,好用吧

使用方法:
   将修改后的头文件复制到C:Program FilesIAR SystemsEmbedded Workbench 6.48051inc目录下
   直接覆盖掉IAR安装目录下的默认头文件
   注:如果您不放心,请先将默认头文件重命名,然后再复制


   ^_^ Enjoy Yourself ^_^


附件:
CC2540.zip (7.79 KB, 下载次数: 42) 2013-12-29 00:23 上传 点击文件名下载附件
CC2540自定义头文件和说明文档



------------------------------------------------------------------------
PS: 关于原理性的说明,后面我会专门开个帖子介绍
如果在使用中有任何疑问,欢迎讨论

QQ: 819280802
Email: xuesong5825718@gmail.com

Cedar@Wuhan
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。