《MCU软复位原理详解.doc》由会员分享,可在线阅读,更多相关《MCU软复位原理详解.doc(1页珍藏版)》请在三一文库上搜索。
1、MCU软复位原理详解同事Jicheng在其博客介绍了软复位的原理。我再自己整理一遍以加深印象。软复位的函数如下(用在IAR或者Keil里都可以),核心是对AIRCR寄存器进行操作。void software_reset(void) _DSB(); /* Ensure all outstanding memory accesses includedbuffered write are completed before reset */ SCB_AIRCR = (0x5FA tion of memory access */7 while(1); /* wait unTIl reset */8AIR
2、CR:ApplicaTIon Interrupt and Reset Control Register想要实现软复位,先给VRCTKEY赋个0x05FA,再想SYSRESETEQ写1即可实现软复位。DSB指令即Data Synchronization Barrier(数据同步屏障),它是一种特殊类型的内存屏障。 只有当此指令执行完毕后,才会执行程序中位于此指令后的指令。 当满足以下条件时,此指令才会完成: 1)位于此指令前的所有显式内存访问均完成。 2)位于此指令前的所有缓存、跳转预测和 TLB 维护操作全部完成。 另外和内存屏障相关的还有两个指令,为DMB和ISB。 DMB:Data Memory Barrier ISB:Instruction Synchronization Barrier 具体细节可以参考ARMv7-M Architecture Reference Manual当软复位发生后,可以通过寄存器RCM_SRS1(Reset Control Moudle_System Reset Status Register) 寄存器来判断。