OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8539|回复: 4

当发生中断时程序怎么就会直接进入中段服务函数?求解

[复制链接]

27

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2012-12-4
在线时间
0 小时
发表于 2012-12-4 18:38:00 | 显示全部楼层 |阅读模式
 stm32f10x_vector.c文件里的中断程序名称都是普通的函数名,并没有什么关键字,当发生中断时程序怎么就会直接进入这个函数里面?以前定义51单片机的中断函数时是利用关键字interrupt+中断向量号的,当发生中断时会根据这个向量号进入特定的中断函数的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-4 21:09:19 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

27

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2012-12-4
在线时间
0 小时
 楼主| 发表于 2012-12-4 23:48:46 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,此话怎讲?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-5 00:00:42 | 显示全部楼层
你看.s文件,就知道了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2012-12-5 09:20:45 | 显示全部楼层
发生中断时,单片机硬件会自动将r0至r3,lr,sp入栈,同时查询中断向量表,自动跳转到向量表指定的地址执行程序。以上,都是中断发生时cortex-m3单片机硬件自动处理的。

51需要加interrupt 关键字,是因为硬件没有自动入栈功能,需要该关键字提示编译器加入入栈代码。普通函数不需要入栈代码,是因为编译器在你调用前帮你入栈了,而中断函数发生时间不确定,编译器无法在调用前帮你入栈,只能在中断发生后再处理。以上,见cortexm3指南。

另,keil51的 interrupt关键字可以防止编译器将未直接调用的函数优化掉。而arm mdk汇编代码里面的week关键字照理也应该有相同的功能。
业余程序玩家。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 04:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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