你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32MP257 的m33核可以通过IWDG4 reset吗?需要怎么配置?

[复制链接]
wangbingcao111 提问时间:2025-1-16 12:57 / 未解决
收藏 评论1 发布时间:2025-1-16 12:57

举报

1个回答
STMCU-管管 回答时间:昨天 08:41
仅做参考
步骤 1:启用 IWDG4 时钟
IWDG4 使用低速时钟源(LSE 或 LSI)。首先需要启用和配置低速时钟源。
  1. #include "stm32mp1xx_hal.h"
  2. void SystemClock_Config(void);
  3. int main(void)
  4. {
  5.     HAL_Init();  // 初始化 HAL 库
  6.     SystemClock_Config();  // 配置系统时钟
  7.     // 启用 LSE 作为 IWDG 时钟源
  8.     __HAL_RCC_LSE_CONFIG(RCC_LSE_ON);
  9.     if (HAL_IS_BIT_SET(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY))) {
  10.         // LSE 已就绪
  11.         __HAL_RCC_IWDG4_CLK_ENABLE();  // 启用 IWDG4 时钟
  12.     } else {
  13.         // LSE 未就绪,可以切换到 LSI
  14.         __HAL_RCC_LSI_ENABLE();
  15.         while (!__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY));
  16.         __HAL_RCC_IWDG4_CLK_ENABLE();
  17.     }
  18. while (1) {
  19.         // 主循环
  20.     }
  21. }
复制代码

步骤 2:初始化 IWDG4
配置 IWDG4 的计时器参数,包括预分频器和计时周期。
  1. #include "stm32mp1xx_hal_iwdg.h"
  2. void IWDG4_Init(void)
  3. {
  4. IWDG_HandleTypeDef hiwdg4;
  5.     // 初始化 IWDG4
  6.     hiwdg4.Instance = IWDG4;
  7.     hiwdg4.Init.Prescaler = 32;  // 预分频器
  8.     hiwdg4.Init.Reload = 1000;   // 自动重装载值
  9.     hiwdg4.Init.Window = 0xFFFF; // 窗口值(可选)
  10.     hiwdg4.Init.Counter = 0x0;   // 初始计数值
  11.     hiwdg4.Init.ClockSource = IWDG_CLOCKSOURCE_LSI; // 时钟源为 LSI
  12.     hiwdg4.Init.EWIV = IWDG_EWIV_ENABLE;            // 使能早期唤醒中断(可选)
  13.     HAL_IWDG_Init(&hiwdg4);
  14. }
  15. int main(void)
  16. {
  17.     HAL_Init();
  18.     SystemClock_Config();
  19.     IWDG4_Init();  // 初始化 IWDG4
  20.     while (1) {
  21.         // 主循环
  22.     }
  23. }
复制代码

步骤 3:触发复位
当 IWDG4 的计时器溢出时,会触发系统复位。为了测试复位功能,可以手动触发 IWDG4 的溢出:
  1. void HAL_IWDG_RefreshCallback(IWDG_HandleTypeDef *hiwdg)
  2. {
  3.     // 处理 IWDG 溢出事件
  4.     HAL_NVIC_SystemReset();  // 触发系统复位
  5. }
  6. int main(void)
  7. {
  8.     HAL_Init();
  9.     SystemClock_Config();
  10.     IWDG4_Init();
  11.     while (1) {
  12.         HAL_Delay(5000);  // 延时 5 秒
  13.         HAL_IWDG_Refresh(&hiwdg4);  // 刷新 IWDG4 计时器
  14.     }
  15. }
复制代码


所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版