打印

[技术问答] F003休眠模式ADC中断不生效

[复制链接]
142|2
跳转到指定楼层
楼主
以下两个函数分别是休眠模式和和运行模式启动ADC的函数,休眠模式下每隔15秒启动一次,运行模式每隔100毫秒启动一次,均在SysTick中断中被调用,SLEEP ON EXIT标志使能。休眠模式的系统时钟是32768,运行模式是4M,进入休眠模式前会关闭外设时钟,进入运行模式前会打开外设时钟。
现在的问题是:CheckAdcIrqFlagRunMode可以正常触发ADC中断,但是CheckAdcIrqFlagSleepMode不行

void CheckAdcIrqFlagSleepMode(uint32_t period)
{
  ADCPeriod += period;

  if(ADCPeriod > ADC_PERIOD_SLEEP_MODE)
  {
    Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE);
    Clk_SetPeripheralGate(ClkPeripheralAdcBgr, TRUE);
    ADCPeriod = 0;
    ADCEnableIrq();
    Adc_Start();
  }
}

void CheckAdcIrqFlagRunMode(uint32_t period)
{
  ADCPeriod += period;

  if(ADCPeriod > ADC_PERIOD_RUN_MODE)
  {
    ADCPeriod = 0;
    ADCEnableIrq();
    Adc_Start();
  }
}
根据用户手册,休眠模式是可以跑ADC

哪位兄弟知道是怎么回事?

使用特权

评论回复
沙发
| 2019-11-21 10:31 | 只看该作者
仅仅看这个是看不出问题在哪,需要知道你进休眠之前做了什么,如果仅仅是关了ADC 的外设时钟,BGR和ADCen不关闭,那么还是会有很大的功耗。你可以看看手册上关于ADC怎么操作。

使用特权

评论回复
板凳
| 2019-11-21 14:13 | 只看该作者

华大一级代理商,有专业FAE支持,有需要技术支持或询价的欢迎加Q8687774详聊

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表
快3注册邀请码tt 额济纳旗| 榆树市| 镇远县| 邻水| 千阳县| 黄山市| 镇雄县| 思南县| 额尔古纳市| 棋牌| 鹤山市| 文安县| 开化县| 于都县| 贞丰县| 皮山县| 莲花县| 龙川县| 尤溪县| 赣榆县| 衡南县| 贵州省| 休宁县| 馆陶县| 来凤县| 凤城市| 安吉县| 仁寿县| 克山县| 高阳县| 珲春市| 博乐市| 亚东县| 皮山县| 若尔盖县| 千阳县| 乌兰浩特市| 司法| 托克逊县| 汉川市| 正安县|