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

【AT32】 at32 软复位

AT32 芯片软重启函数实现方法

​1. 标准库函数实现​

AT32 系列芯片(如 AT32F421、AT32F403A/407 等)的软重启可通过 ​NVIC 系统复位函数实现,该函数已集成在雅特力官方提供的 BSP 库中。
​核心代码示例​:

#include "at32f421.h"  // 根据具体芯片型号包含头文件void System_SoftReset(void) {nvic_system_reset();  // 直接调用库函数
}

​功能​:此函数通过触发 Cortex-M4 内核的 SYSRESETREQ 标志位实现系统复位,复位所有外设(除备份域寄存器)。
​底层原理​:内部调用 NVIC_SystemReset(),其本质是操作内核寄存器 SCB->AIRCR,组合写入 0x05FA0000 | 0x04 以触发复位。

2. 增强型安全复位​

为避免复位过程中中断干扰,建议先关闭全局中断:

void Safe_SoftReset(void) {__disable_irq();          // 关闭所有中断nvic_system_reset();      // 执行复位
}

​适用场景​:在关键任务或通信协议(如 IAP 升级)中,防止复位时中断残留导致异常。
AT32 芯片软重启函数实现方法

​1. 标准库函数实现​

AT32 系列芯片(如 AT32F421、AT32F403A/407 等)的软重启可通过 ​NVIC 系统复位函数实现,该函数已集成在雅特力官方提供的 BSP 库中。
​核心代码示例​:

#include "at32f421.h"  // 根据具体芯片型号包含头文件void System_SoftReset(void) {nvic_system_reset();  // 直接调用库函数
}

​功能​:此函数通过触发 Cortex-M4 内核的 SYSRESETREQ 标志位实现系统复位,复位所有外设(除备份域寄存器)。
​底层原理​:内部调用 NVIC_SystemReset(),其本质是操作内核寄存器 SCB->AIRCR,组合写入 0x05FA0000 | 0x04 以触发复位。

​2. 增强型安全复位​

为避免复位过程中中断干扰,建议先关闭全局中断:

void Safe_SoftReset(void) {__disable_irq();          // 关闭所有中断nvic_system_reset();      // 执行复位
}

​适用场景​:在关键任务或通信协议(如 IAP 升级)中,防止复位时中断残留导致异常。

​3. 注意事项​

​地址偏移与向量表​:
若程序涉及多区启动(如 Bootloader + App),需在 App 中设置中断向量表偏移(NVIC_SetVectorTable),否则复位后可能跳转错误。
示例代码:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);  // 偏移 0x4000(AT32F421 的典型 App 起始地址)

​看门狗与复位的区别​:
​看门狗复位​:需配置独立看门狗(IWDG)或窗口看门狗(WWDG),适用于防程序跑飞。
​软件复位​:立即触发,无需等待超时,适合主动控制场景。

​4. 跨型号兼容性​

芯片型号​​复位函数​头文件依赖​
AT32F421 系列nvic_system_reset()at32f421_misc.c
AT32F403A/407 系列NVIC_SystemReset()core_cm4.h(CMSIS 标准)
AT32F413 系列同 AT32F403A(寄存器兼容)参考对应 BSP 库

相关文章:

  • 利用GeoTools实现导出MySQL地理数据表为shp格式
  • DHT11介绍
  • 对于Python虚拟环境的理解
  • YOLOv8模型剪枝笔记(DepGraph和Network Slimming网络瘦身)
  • C++(29):结构体
  • SpringBoot Day_03|数据校验|异常处理|日志级别|定时器
  • 位运算及其算法
  • 并发编程 之 可见性、原子性、volatile、synchronized、Java内存模型的深入剖析
  • Google机器学习实践指南(梯度下降篇)
  • 裸机任务调度框架、DMA、空闲中断
  • Linux安装SRILM
  • HCIP(广域网)
  • 养生指南:五维守护身心健康
  • Spring Boot 注解 @ConditionalOnMissingBean是什么
  • 【Bluedroid】蓝牙 HID Host connect全流程源码解析
  • 通过云服务器实现异地组网 部署WireGuard
  • LeetCode Hot100 (双指针)
  • F5《2025年应用战略现状》报告:AI 落地加速,企业战略从讨论迈向行动
  • 【风控】模型算法区分度指标KS
  • 【C++进阶篇】红黑树的实现(赋源码)
  • 建筑工程网状结构/seo网站推广专员
  • 介绍几个有趣的网站/武汉大学人民医院院长
  • 如何做cad的模板下载网站/百度指数功能模块有哪些
  • 网站建设保密协议书/搜索引擎优化涉及的内容
  • 外包做网站平台 一分钟/重庆森林讲的什么内容
  • wordpress 网站加密/什么是长尾关键词举例