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

单片机iwdg实验

单片机STM32F407开发板DMF407电机开发板平台keil V5.31HSE 为8MHZHSI为16MHZIWDG的时钟是32K配置IWDG_HandleTypeDef iwdg_handler; /* 独立看门狗句柄 */ /** * brief 初始化独立看门狗 * param prer: IWDG_PRESCALER_4~IWDG_PRESCALER_256,对应4~256分频 * arg 分频因子 4 * 2^prer. 但最大值只能是256! * param rlr: 自动重装载值,0~0XFFF. * note 时间计算(大概):Tout((4 * 2^prer) * rlr) / 32 (ms). * retval 无 */ void iwdg_init(uint32_t prer, uint16_t rlr) { iwdg_handler.Instance IWDG; iwdg_handler.Init.Prescaler prer; /* 设置IWDG分频系数 */ iwdg_handler.Init.Reload rlr; /* 从加载寄存器 IWDG-RLR 重装载值 */ HAL_IWDG_Init(iwdg_handler); /* 初始化IWDG并使能 */ } /** * brief 喂独立看门狗 * param 无 * retval 无 */ void iwdg_feed(void) { HAL_IWDG_Refresh(iwdg_handler); /* 喂狗 */ }主函数int main(void) { HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */ delay_init(168); /* 延时初始化 */ led_init(); /* 初始化LED */ key_init(); /* 初始化按键 */ delay_ms(100); /* 延时100ms再初始化看门狗,LED0的变化可见 */ // iwdg_init(IWDG_PRESCALER_64, 500); /* 预分频数为64,重载值为500,溢出时间约为1s */ iwdg_init(IWDG_PRESCALER_64, 1000); /* 预分频数为64,重载值为1000,溢出时间约为2s */ LED0(0); /* 点亮LED0(红灯) */ while(1) { if (key_scan(1) KEY0_PRES) /* 如果KEY0按下,则喂狗,支持连按 */ { iwdg_feed(); /* 喂狗 */ } delay_ms(10); } }超时时间的计算Tout (4 × 2^PR × RLR) / LSI_freq‌其中 PR 0~6对应分频 4/8/16/32/64/128/256RLR 0~409512位。但是在开启独立看门狗后进行Debug调试最常见的问题是‌程序在断点处暂停后CPU停止运行无法喂狗但独立看门狗的时钟仍独立运行计数到零后会触发系统复位导致调试中断‌。对于STM32只需修改调试模块的配置位进入调试状态后在调试模块的DBG寄存器中将DBG_IWDG_STOP位置1即可让独立看门狗在CPU暂停时停止计数不会触发复位。修改后的代码int main(void) { HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */ delay_init(168); /* 延时初始化 */ led_init(); /* 初始化LED */ key_init(); /* 初始化按键 */ delay_ms(100); /* 延时100ms再初始化看门狗,LED0的变化可见 */ // iwdg_init(IWDG_PRESCALER_64, 500); /* 预分频数为64,重载值为500,溢出时间约为1s */ iwdg_init(IWDG_PRESCALER_64, 1000); /* 预分频数为64,重载值为1000,溢出时间约为2s */ LED0(0); /* 点亮LED0(红灯) */ /* 在初始化代码中调用通常在 main 函数开头或调试初始化部分 */ __HAL_DBGMCU_FREEZE_IWDG(); while(1) { if (key_scan(1) KEY0_PRES) /* 如果KEY0按下,则喂狗,支持连按 */ { iwdg_feed(); /* 喂狗 */ } delay_ms(10); } }debug时候与运行时一样2s会重启一次。但停止在一个断点上时不会再重启。
http://www.zskr.cn/news/1398075.html

相关文章:

  • 告别调参玄学:用Python手把手实现L1-ball投影,给你的模型加个‘稀疏’开关
  • 订单状态机别写散:我在 Rust CRM 里把 6 个状态收进领域模型
  • LangChain Day4 课程:回调、持久化、日志追踪
  • 基于CT+NMF+ANN的鲁棒图像水印技术:原理、实现与优化
  • 扩散模型驱动3D生成:从2D先验到3D空间扩散的技术演进
  • THz通信信道噪声特性与性能优化分析
  • 低成本FSR传感器与嵌入式AI实现机器人动态重量感知
  • 2026四川淬火带钢标杆名录:65mn弹簧带钢排行榜/65mn弹簧带钢推荐榜/65mn弹簧带钢生产厂家/65mn弹簧带钢购买/选择指南 - 优质品牌商家
  • 保姆级教程:用Unity UGUI从零打造一个可缩放、可展开的2D小地图(附完整C#脚本)
  • Cocos Creator 2.x 游戏接入 Google AdMob 广告的完整避坑指南(iOS平台)
  • 告别单调雪花!在Unity里用ParticleSystem模拟风吹雪、暴风雪效果的进阶配置指南
  • 2026数字人制作平台TOP5真人 1:1 复刻 + 实时驱动平台推荐
  • 居家养老安全响应系统技术拆解:8分钟完成“跌倒-报警-救援”闭环的架构设计
  • 为什么92%的预约系统在活动峰值崩溃?Lovable底层时序调度器设计原理与3种降级预案详解
  • 0049__gif 格式图片详细解析
  • 达人建联工具怎么选?小青苔达人营销工具功能与使用场景整理
  • Linux终端PS1配置避坑指南:从环境变量加载顺序到永久生效的正确姿势
  • 基于Vision Transformer的无监督域自适应行人重识别:提示与调优两阶段方法
  • 1.5V升压3.3V、5V芯片PW5100需电容电感靠近IC放置
  • 超声波雷达:智能驾驶的“贴身护卫”,技术内幕与未来战局
  • 你的模型F1分数真的‘最佳’吗?避开阈值选择中的3个常见误区(Python示例)
  • 嵌入式人脸年龄估计:轻量CNN与自适应混合损失函数实战
  • Spring Boot 接口统一返回值封装,告别杂乱响应格式
  • NPS调研合作伙伴
  • Go语言邮件服务:SMTP发送
  • Go语言短信服务:多渠道发送
  • 别再直接让 AI 生成测试用例了:用 Superpowers 做需求分析的 5 步实操
  • 2026年AI Agent技术生态开源项目合集
  • 基于BERT-BiGRU与心理学量表从旅游评论中识别用户新奇寻求人格
  • Tableau同比环比实战:从基础表计算到动态参数化对比