当前位置: 首页 > news >正文

N32G4xx单片机休眠以及RTC唤醒问题

1. STOP0模式进入STOP0模式之前必须要关闭SysTick中断否则会唤醒STOP0械唤醒之后再开启SysTick中断对应的代码步骤为1关闭 SysTick (暂停计数关闭中断),保留原有配置值(LOAD/VAL), 下次开启恢复运行SysTick-CTRL ~(SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);2进入STOP0模式代码PWR_EnterSLEEPMode(0, PWR_STOPENTRY_WFI);3开启 SysTick (恢复计数开启中断)使用之前配置好的时钟源、重装载值SysTick-CTRL | (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);2. STOP2模式进入STOP2模式前要关闭RCC_APB1_PERIPH_PWR时钟配置系统时钟为内部高速时钟唤醒后再开启RCC_APB1_PERIPH_PWR时钟注意读写备份域数据必须开启同时配置外部时钟RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR, DISABLE); //禁止PWR时钟SetSysClockToHSI(); //配置为内部时钟PWR_EnterSTOP2Mode(PWR_STOPENTRY_WFI); //进入STOP2模式RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR, ENABLE); //开启PWR时钟SYSCLKConfig_STOP(RCC_CFG_PLLMULFCT18); //重新配置时钟18倍频144M3. RTC唤醒休眠和RTC唤醒全过程1上电RTC初始化只上电处理即可可配置为LSI / LSE独立时钟进 STOP2 也不断电继续跑2进入休眠前配置ALARM唤醒时间配置唤醒时间前要先关闭中断配置完后再开启中断如设置唤醒时间为20秒钟代码如下3进入休眠模式;(4)唤醒后重新初始化外设4. 详细代码如下1 ALARM中断使能禁止函数void Mcu_RtcAlarmEnable(uint8_t En){RTC_EnableAlarm(RTC_A_ALARM, En);RTC_ConfigInt(RTC_INT_ALRA, En);}2重新设置时间static ErrorStatus Mcu_RtcTimeSet(void){RTC_TimeType RTC_TimeStructure;RTC_TimeType RTC_TimeRead {0};RTC_TimeStructure.H12 RTC_AM_H12;RTC_TimeStructure.Hours 0;RTC_TimeStructure.Minutes 0;RTC_TimeStructure.Seconds 0;if (RTC_ConfigTime(RTC_FORMAT_BIN, RTC_TimeStructure) ERROR){return ERROR;}else{RTC_GetTime(RTC_FORMAT_BIN, RTC_TimeRead);return SUCCESS;}}3设置告警间隔时间单位为秒void Mcu_RtcSetAlarm(uint32_t AlarmTime){RTC_AlarmType RTC_AlarmStructure;RTC_AlarmType RTC_AlarmRead {0};Mcu_RtcTimeSet();RTC_EnableAlarm(RTC_A_ALARM, DISABLE);RTC_AlarmStructure.AlarmTime.H12 RTC_AM_H12;RTC_AlarmStructure.AlarmTime.Hours 0;RTC_AlarmStructure.AlarmTime.Minutes 0;RTC_AlarmStructure.AlarmTime.Seconds AlarmTime;RTC_AlarmStructure.DateWeekValue 31;RTC_AlarmStructure.DateWeekMode RTC_ALARM_SEL_WEEKDAY_DATE;RTC_AlarmStructure.AlarmMask RTC_ALARMMASK_WEEKDAY | RTC_ALARMMASK_HOURS | RTC_ALARMMASK_MINUTES;RTC_SetAlarm(RTC_FORMAT_BIN, RTC_A_ALARM, RTC_AlarmStructure);RTC_GetAlarm(RTC_FORMAT_BIN, RTC_A_ALARM, RTC_AlarmRead);RTC_ClrIntPendingBit(RTC_INT_ALRA);EXTI_ClrITPendBit(EXTI_LINE17);}4休眠前RTC唤醒时间配置如配置20秒唤醒Rtc_AlarmEnable(DISABLE);Rtc_SetAlarm(20);Rtc_AlarmEnable(ENABLE);5进入休眠模式STOP2模式如下RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR, DISABLE); //禁止PWR时钟SetSysClockToHSI(); //配置为内部时钟PWR_EnterSTOP2Mode(PWR_STOPENTRY_WFI); //进入STOP2模式RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR, ENABLE); //开启PWR时钟SYSCLKConfig_STOP(RCC_CFG_PLLMULFCT18); //重新配置时钟18倍频144MSTOP0模式如下SysTick-CTRL ~(SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);PWR_EnterSLEEPMode(0, PWR_STOPENTRY_WFI);SysTick-CTRL | (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);SYSCLKConfig_STOP(RCC_CFG_PLLMULFCT18); //重新配置时钟18倍频144M
http://www.zskr.cn/news/1336808.html

相关文章:

  • 单细胞黑话词典-质控图表告诉了你什么?
  • LizzieYzy:从围棋爱好者到AI分析高手的进阶之路
  • 你以为在用“家宽”,对方却一眼看穿:住宅代理也有三六九等
  • 别再死记硬背了!用一张图帮你理清CPU里的MMU、TLB和Cache到底是怎么分工的
  • 离线绘图新选择:draw.io桌面版,让敏感数据不再“上网”
  • STM32/Delay延时函数编程思路
  • 手把手教你用YOLOv5/PyTorch在DOTA V1.5数据集上训练自己的航拍目标检测模型
  • Arch linux-nginx_LEMP自动化脚本
  • 别再手动管理数据了!用Codesys ST语言实现一个轻量级队列,5分钟搞定PLC数据缓存
  • Stream流-从进阶到起飞
  • 把FlashAttention装进昇腾NPU:为啥它能让大模型推理快3倍?
  • AFSIM-模型导入导出-源码级Bug修改
  • 【Perplexity词组搭配查询避坑清单】:8个致命误用场景+3类伪低困惑度陷阱,资深语言工程师紧急预警
  • 本地计算机 上的 postgresql-x64-12 服务启动后停止
  • STM32CubeMX 6.14版本保姆级安装教程(附CSDN下载链接,解决官网卡顿)
  • 1987年5月25日晚上23-24点出生性格、运势和命运
  • 昇腾CANN shmem:把多张 NPU 的 HBM 变成一块全局内存
  • Windows下安装OpenCode并配置oh-my-openagent和superpowers
  • RX65N嵌入式开发实战:从硬件设计到外设驱动与调试
  • AI一周事件 · 2026-05-13 至 2026-05-19
  • 别再手动调阈值了!OpenMV自适应色块识别保姆级教程(附完整Python代码)
  • 5分钟掌握AI音频分离:Retrieval-based-Voice-Conversion-WebUI终极指南
  • Option ‘importsNotUsedAsValues‘ has been removed. Please remove it from your configuration
  • 《数学公理体系·第三部·数术几何》(2026 年版)
  • 背单词为什么不背词典:CANN上FlashAttention的分块逻辑
  • 昇腾CANN ascend-boost-comm:M×N 算子复用是怎么做到的
  • 2026年泡沫雕塑优点全面解析:定义、分类及应用领域百科
  • 聊天技巧教程
  • 2026年4月过滤器市场风向标:这些浅层砂厂家受青睐,旁流水处理器/精密过滤器/浅层砂过滤器,过滤器公司推荐 - 品牌推荐师
  • IDEA通义灵码实战:用它生成的JUnit单元测试,真的能直接提交吗?