当前位置:首页 > 技术心得 > 正文内容

OSAL系统如何写中断服务函数

xjtudll10年前 (2015-12-26)技术心得7200

参考资料;

http://bbs.21ic.com/icview-192248-1-1.html

问题:

OSAL添加中断服务程序的时候编译报错

3e15f11d43214a2f923f71e5f866d321

提示:Error[Pa045]: function "T4_ISR" has no prototype
但是定时器中断实验程序(裸机,无OSAL)就没这个问题

解答:

OSAL里中断进行了封装,不能直接写

#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
  ;
}

而应该类似于下面这个写法:

HAL_ISR_FUNCTION( halUart0RxIsr, URX0_VECTOR )
{

}

在hal_mcu.h里

#define _PRAGMA(x) _Pragma(#x)
#define HAL_ISR_FUNC_DECLARATION(f,v)   _PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNC_PROTOTYPE(f,v)     _PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNCTION(f,v)           HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/378/

标签: CC254xOSAL
分享给朋友:

“OSAL系统如何写中断服务函数” 的相关文章

“CrystalDecisions.ReportSource.ReportSourceFactory”的类型初始值设定项引发异常

“CrystalDecisions.ReportSource.ReportSourceFactory”的类型初始值设定项引发异常

VS2010 System.TypeInitializationException: “CrystalDecisions.ReportSource.ReportSourceFactory”的类型初始值设定项引发异常。 System.TypeInitializationExce...

C#将图片白色背景设置为透明

红色部分是关键 Image image = System.Drawing.Image.FromFile(@"C:\A.JPG"); Bitmap pbitmap = new Bitmap(image); pbitmap.MakeTransparent(Color.White);...

Android Studio: This version of the rendering library is more recent than your version of Android Studio

Android Studio: This version of the rendering library is more recent than your version of Android Studio

Android Studio预览xml布局时,提示: This version of the rendering library is more recent than your version of Android Studio. Please update Android Studio 如图所示...

Windows7画图调整橡皮擦大小

Windows7画图调整橡皮擦大小

Windows7自带的画图软件,如何调整橡皮擦大小呢? 方法1:选中橡皮擦 ,在菜单栏找到“粗细”,选中不同的宽度即可。如下图所示。但是这个方法有个缺点,如果要将橡皮擦调整到很小的宽度,则没法实现。 例如,想使用1px的橡皮擦,怎么办? 这个时候就要用到方法2了。 方法2:...

Altium过滤器(filter)使用

Altium过滤器(filter)使用

注:本文在写作过程中,参考了ourdev大牛“zcllom 星罗棋布”发布的帖子《将Altium Designer的PCB设计打造成利器》。 在设计或查看PCB的过程中,会陷入五彩斑斓的走线、元件、过孔、覆铜等迷宫中,经常找不到或看不清自己需要的东西,因此需要化繁为简,突出自己想要操作的部分。Al...

宏与子程序的区别

宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:1、在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;2、汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。