完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我对项目有特定的需求。 在这个项目中,我使用的是STM8AL3L66,但我的问题是关于STM8系列中断的一般性问题。 中断是否可以被同一个中断(本身)中断? 我知道(根据数据表)中断可以中断其他中断(在嵌套模式下): 但我想知道这种行为是否可行: 员工代码: INTERRUPT_HANDLER(tiM1_UPD_OVF_TRG_COM_IRQHandler,23) { if(state == a)longTask(); else shortTask(); } 我不知道我的问题是否明显,如果不是,请告诉我,我会更好地解释。 P.S:对不起我的英语,这不是我的母语。 #STM8中断 以上来自于谷歌翻译 以下为原文 Hi all, I have a specific needs for a project. In this project I use a STM8AL3L66 but my question is a general question about the interrupt in the STM8 family. Is that an interrupt can be interrupted by the same interrupt (itself) ? I know (according to the datasheet) that an interrupt can interrupt an other interrupt (in nested mode) : But I wish to know if this kind of behavior is possible : Associates code : INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_COM_IRQHandler, 23) { if(state == a) longTask(); else shortTask(); } I don't know if my question is obvious, if it does not, let me know and I'll try to explain better. P.S : Sorry for my english, this is not my mother language. #stm8-interrupt |
|
相关推荐
3个回答
|
|
你的问题的答案是肯定的:中断处理程序可以被另一个中断处理程序中断,甚至可以自己中断。
当您的中断处理程序在其正文中启用中断时,将获得此行为。 请注意,在执行此操作时必须小心,因为如果在再次启用中断之前未清除中断源标志,此操作将破坏堆栈。 问候, EtaPhi 以上来自于谷歌翻译 以下为原文 The answer to your question is YES: an interrupt handler can be interrupted by another interrupt handler and even by itself. This behaviour is obtained when your interrupt handler enables interrupt within its body. Please, be informed that you must be careful in doing this, because this action corrupts the stack if you doesn't clear the interrupt source flag before enabling interrupts again. Regards, EtaPhi |
|
|
|
好的,因此,当程序进入中断处理程序时,我必须:
- 清除相应的中断标志 - 并激活中断----->因为程序在中断处理程序中跳转时禁用中断? 例如,它可以通过这种方式完成: INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_COM_IRQHandler,23) { TIM1-> SR1& = 0xFE; //清除定时器2溢出标志 enableInterrupts(); ......... } 以上来自于谷歌翻译 以下为原文 Ok, thus, when the program enter in the interrupt handler, I have to : - clear the corresponding interrupt flag - and activate the interrupt -----> because interrupt are disable when the program jump in an interrupt handler ? Just for example, it could be done by this way : INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_COM_IRQHandler, 23) { TIM1->SR1 &= 0xFE; // Clear Timer 2 overflow flag enableInterrupts(); ......... } |
|
|
|
经过一些测试,每个人都可以正常工作。
正如Etaphi所说,我必须在coressponding中断处理程序中启用中断。 谢谢, 问候。 以上来自于谷歌翻译 以下为原文 After some tests, everythings works fine. As Etaphi says, I had to enabled interrupt in coressponding interrupt handler. Thanks, Regards. |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2632 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3607 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:24 , Processed in 1.274213 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号