嵌入式开发者社区

标题: GPIO_KEY例程 [打印本页]

作者: shayingzhe    时间: 2020-12-16 16:24
标题: GPIO_KEY例程
工程师好,刚刚看了这个按键中断控制led灯的裸机例程,因为先前一至在学习基于sysbios的编程,看裸机用中断这个地方不是很理解。为什么在按下按键触发中断进入服务函数后要先禁用中断,然后清除中断状态后再令灯善良的标志为置为1,最后再使能中断,这个禁用清除再使能的操作是什么目的呢?[attach]6679[/attach]

作者: human    时间: 2020-12-16 18:14
先等中断服务函数执行完,再恢复中断
作者: shayingzhe    时间: 2020-12-16 21:22
感谢回复,我想问,进入中断服务函数以后,光清除中断标志位不行了吗?为什么还要把中断disable掉呢?不禁止的话会咋样?
作者: 广州创龙莫工    时间: 2020-12-17 11:47
1、禁用中断是因为裸机程序不支持中断嵌套,防止产生其它中断。
2、清除中断这是为了避免无法区分什么时候产生的中断。
作者: shayingzhe    时间: 2020-12-17 21:24
好的,感谢回复。裸机不支持中断嵌套的话,如果编写的中断服务程序比较长,在执行中断服务函数的时候,又来了一个更高优先级的中断,那么是不是必须等当前这个低优先级的服务函数执行结束以后,才能执行高优先级中断?

还有一个问题,如果只是在中断服务函数里面设置标志位的话,真正想要执行的东西放到主循环里面,那么是不是就不用进入中断服务函数后就禁用中断了。因为只执行标志位的话就会执行很快,然后中断结束后就转到主循环里面去执行对于的功能函数了,这样的话这个中断就马上被释放了,再接收到中断的话就不会存在中断嵌套的问题,所以如果只是在中断服务函数里面设置标志的话,还用禁用中断吗?




欢迎光临 嵌入式开发者社区 (https://51dsp.net/) Powered by Discuz! X3.4