打印
[MCU]

中断太快导致无法处理其他函数怎么办

[复制链接]
380|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2020-11-5 11:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先看下面一段简易代码:
.......//子函数省略
void main
{
    init();//各种初始化
    while(1)
    {
           key_scan();//按键处理程序
    }
}
//中断处理程序
void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12ISR (void)
{

  switch(__even_in_range(ADC12IV,34))
  {
  case  0: break;                           // Vector  0:  No interrupt
  case  2: break;                           // Vector  2:  ADC overflow
  case  4: break;                           // Vector  4:  ADC timing overflow
  case  6:                                  // Vector  6:  ADC12IFG0
    AD_dataA = ADC12MEM0;
    AD_data_deal();//ad数据处理函数
    break;

  case  8: break;                           // Vector  8:  ADC12IFG1
  case 10: break;                           // Vector 10:  ADC12IFG2
  case 12: break;                           // Vector 12:  ADC12IFG3
  case 14: break;                           // Vector 14:  ADC12IFG4
  case 16: break;                           // Vector 16:  ADC12IFG5
  case 18: break;                           // Vector 18:  ADC12IFG6

  default: break;
  }

}

       现在遇到的问题是,AD进入中断的频率太快了,以至于无法响应while(1)里面的按键处理程序,但是要是把AD的进入中断速率降低,采样速率又不能满足要求,,,请问该怎么办?

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2020-11-5 15:50 | 只看该作者
提高CPU频率,

中断频率有多快?

中断只做必要的事情,其它移到主循环

使用特权

评论回复
板凳
heimaojingzhang| | 2020-12-2 15:23 | 只看该作者
楼主还想处理别的事情是吗

使用特权

评论回复
地板
keaibukelian| | 2020-12-2 15:27 | 只看该作者
更改一下中断优先级就可以了

使用特权

评论回复
5
labasi| | 2020-12-2 15:33 | 只看该作者
如何提高cpu的频率呢问题是

使用特权

评论回复
6
paotangsan| | 2020-12-2 15:37 | 只看该作者
写程序不能这样处理啊

使用特权

评论回复
7
renzheshengui| | 2020-12-2 15:39 | 只看该作者
没有其他任务的话也可以啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2038

主题

7364

帖子

10

粉丝