[技术问答] 小华MCU的停止模式代码样例

[复制链接]
3784|10
 楼主| szt1993 发表于 2023-5-27 19:00 | 显示全部楼层 |阅读模式
1 代码介绍
用户可根据上述的操作流程及注意事项编写自己的代码来学习验证该模块,也可以直接通过小
华半导体的网站下载到设备驱动库(Device Driver Library, DDL)的样例代码并使用其中的
LPM 里有关 stop mode的样例进行验证。
以下部分简要介绍本 AN 基于 DDL 的 LPM 模块样例 lpm_stop_wkup 代码所涉及的各项配置。
1) LED 和 PORT 初始化:
本样例使用外部管脚中断唤醒 stop 模式,需对 port 进行初始化,确保对应 port 中断使能。
  1. Led_Init();
  2. Port_Init();

2) STOP 模式配置:
  1. /* Config stop mode. */
  2. stcPwcStopCfg.enStpDrvAbi = StopHighspeed;
  3. stcPwcStopCfg.enStopClk = ClkFix;
  4. stcPwcStopCfg.enStopFlash = Wait;
  5. PWC_StopModeCfg(&stcPwcStopCfg);

3) 中断配置:
本样例使用外部管脚 0 中断,上升沿有效, 数字滤波无效。
  1. /* EIRQ0 config. */
  2. stcExintCfg.enExitCh = ExtiCh00;
  3. stcExintCfg.enFilterEn = Disable;
  4. stcExintCfg.enExtiLvl = ExIntRisingEdge;
  5. EXINT_Init(&stcExintCfg);
  6. /* Register EIRQ0.*/
  7. stcPortIrqCfg.enIntSrc = INT_PORT_EIRQ0;
  8. stcPortIrqCfg.enIRQn = PORT_IRQn;
  9. stcPortIrqCfg.pfnCallback = Port_Handle;
  10. enIrqRegistration(&stcPortIrqCfg);

4) 设置 STOP 模式中断唤醒源
  1. /* Set wake up source EIRQ0. */
  2. enIntWakeupEnable(Extint0WU);
  3. /* Enable EIRQ. */
  4. enIntEnable(Int0);
  5. NVIC_ClearPendingIRQ(PORT_IRQn);
  6. NVIC_SetPriority(PORT_IRQn,DDL_IRQ_PRIORITY_DEFAULT);
  7. NVIC_EnableIRQ(PORT_IRQn);


5) 使能唤醒源中断:
  1. /* Ensure DMA disable */
  2. while((0 != M4_DMA1->EN_f.EN) && ((0 != M4_DMA2->EN_f.EN)));
  3. /* Ensure FLASH is ready */
  4. while(1 != M4_EFM->FSR_f.RDY);
  5. PWC_EnterStopMd();

6) 进入 STOP 模式前外设状态:
确保 FLASH 不处于编程或者擦除状态,确保 DMA 处于停止状态,关闭其他外设中断。
  1. <blockquote>/* Ensure DMA disable */

7) 唤醒后中断处理流程:
  1. __IRQ_Handler:
  2. PWC_IrqClkRecover(); // in pairs use
  3. LED0_TOGGLE(); // user application
  4. Ddl_Delay1ms(1000);
  5. PWC_IrqClkBackup(); // in pairs use

非停止模式唤醒后的中断无需进行时钟相关配置处理。

tpgf 发表于 2024-1-6 15:11 | 显示全部楼层
这里的停止模式是特定的低功耗模式吗
nawu 发表于 2024-1-6 15:53 | 显示全部楼层
为什么需要设定为数字滤波无效呢
zljiu 发表于 2024-1-6 16:35 | 显示全部楼层
在停止模式下 哪个时钟还能正常工作啊
tfqi 发表于 2024-1-6 22:01 | 显示全部楼层
官网例程关于停止模式有多少不同的例程啊
gwsan 发表于 2024-1-6 22:33 | 显示全部楼层
如果是上升沿有效无绿波额话  会不会在有干扰的情况下错误的退出停止模式啊
aoyi 发表于 2024-1-6 23:11 | 显示全部楼层
停止模式下 都还可以响应哪些种类的中断呢
可怜的小弗朗士 发表于 2024-2-25 20:08 | 显示全部楼层
除了停止模式都不用再唤醒后配置时钟吗
lvuu 发表于 2024-8-27 00:27 | 显示全部楼层
非停止模式下的中断处理可能不需要时钟恢复处理。
范德萨大师傅 发表于 2024-12-31 12:40 | 显示全部楼层
STOP 模式是 STM32 的低功耗模式之一,设备将停止内部时钟,并且消耗的电流极低。
Amazingxixixi 发表于 2024-12-31 14:04 | 显示全部楼层
学习一下,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

3021

帖子

6

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