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

[复制链接]
615|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 | 显示全部楼层
更改一下中断优先级就可以了
labasi 发表于 2020-12-2 15:33 | 显示全部楼层
如何提高cpu的频率呢问题是
paotangsan 发表于 2020-12-2 15:37 | 显示全部楼层
写程序不能这样处理啊
renzheshengui 发表于 2020-12-2 15:39 | 显示全部楼层
没有其他任务的话也可以啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2122

主题

8121

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部