m0_37635022 2017-05-28 07:55 采纳率: 0%
浏览 3628

求大神指教!!!中断服务函数里调用延时函数会导致其他中断不能响应吗???

if ((EINT0PEND&=0x1))

{
GPFCON=(GPFCON & ~(0xf<<28))|(0x1<<29)|(0x1<<31);
GPFPUD=(GPFPUD & ~(0xf<<28));
TimerDelay(5);
GPFCON=(GPFCON & ~(0xf<<28));
GPLCON1=(GPLCON1 & ~(0xfU<<24))|(0x1U<<24);
GPLDAT=(GPLDAT & ~(0xfU<<14))|(0x1U<<14);
}

   if ((EINT0PEND&=0x2))

{
GPFCON=(GPFCON & ~(0xf<<28));
GPFPUD=(GPFPUD & ~(0xf<<28));
GPLCON1=(GPLCON1 & ~(0xfU<<24))|(0x1U<<24);
GPLDAT=(GPLDAT & ~(0xfU<<14));
}

写了一个按键中断服务程序,按下key1pwm输出,按下key2关闭pwm输出,在不加延时的时候key2可以关闭key1打开的pwm,但是加了延时之后key2就不起作用了,是因为在中断服务函数中加了延时导致key2无法响应了吗,即是在延时之前清中断也无法响应吗,只能等待key1 的服务函数执行完(延时),才能进入其他的中断服务函数是嘛?

  • 写回答

3条回答 默认 最新

  • jklinux 2017-05-28 12:10
    关注

    你这个应是arm的裸板中断处理吧? 要想key2也能中断的话, key1的中断里得要在延时前清中断并且恢复cpsr的值,但工作模式也得恢复,比较难处理哦。

    应可以加个定时器来做延时后的处理吧, 有定时器的话也不用在中断处理函数里延时了

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器