合泰社区论坛

 找回密码
 立即注册-HOLTEK

QQ登录

只需一步,快速开始

搜索
查看: 17315|回复: 4

关于合泰中断及中断函数的一些注意事项

[复制链接]

88

主题

170

帖子

3131

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3131
QQ
发表于 2018-7-2 16:39:27 | 显示全部楼层 |阅读模式
合泰开发板


一、V3版本编译器的 中断函数写法如下格式:

void __attribute((interrupt(0x0c))) ISR_tmr0 (void)
{
tick++ ;
}
中断服务函数必须遵守下列规定:
→ 返回的数据类型必须是 void
→ 不能有参数
→ 必须使用__attribute__((interrupt(0x0c))) 设定中断向量值 (interrupt vector)
→ 中断入口会自动保存寄存器(ACC, BP, STATUS, MP/TBLP),并在中断出口
时恢复。
→ 既可以被中断服务程序访问也可以被其他函数访问的全局变量应定义为
volatile。


二、中断服务函数的使用注意事项:

1、C Compiler V3 支持中断内部调用函数,但不同中断与main 之间不能调用同一
个函数,会造成RAM 重叠,对此现象linker 将侦测出并报warning ( 若被调用
的函数无声明及使用任何的local 变量可忽略此warning),如下例子:
void fun1(){}
void fun2(){fun1();}
void main()
{
fun1();
}
void __attribute((interrupt(0x04))) isr1(void)
{
fun1();
}
void __attribute((interrupt(0x08))) isr2(void)
{
fun2();
}


2、一般,如果两个函数没有调用关系,那它们的局部变量是可以分配到同样的地
址,但中断服务程序不会与主函数共享局部变量的地址,所以,为了减少RAM
的使用,中断程序可以尽量简单,不宜写得太过复杂。

3、虽然不同的中断事件可以嵌套发生,但是同一个中断事件不可以嵌套发生,必须等候
前一个发生被处理完成后,才能认可下一个中断事件。针对不具有中断可嵌套
发生的微控制器,则在中断服务函数内不可开启中断功能。

4、禁止在打开中断情况下,不写中断服务函数,这样可能会导致单片机出现异常状态或者死机。






上一篇:关于合泰中断及中断函数的注意事项
下一篇:分享些合泰学习资料
回复

使用道具 举报

0

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2018-11-28 13:15:40 | 显示全部楼层
合泰开发板
谢谢分享,不错,有用处。
回复

使用道具 举报

0

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2018-11-28 13:24:36 | 显示全部楼层
合泰开发板
新疆社区阿g 发表于 2018-11-13 16:43
**** 作者被禁止或删除 内容自动屏蔽 ****

谢谢分享,不错,有用处。
回复

使用道具 举报

0

主题

4

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2020-11-5 16:03:36 | 显示全部楼层
合泰开发板
感谢楼主分享
回复

使用道具 举报

0

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2021-1-21 16:57:04 | 显示全部楼层
合泰开发板
请问“禁止在打开中断情况下,不写中断服务函数”这句话什么意思?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册-HOLTEK

本版积分规则

公告:

Archiver|手机版|黑名单|合泰论坛 合泰在线业务 合泰在线技术

GMT+8, 2024-11-24 12:15 , Processed in 0.228508 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表