产品在设计中某些状态下需要MCU进行复位,华大MCU包含了7个复位信号来源,每个复位信号都可以让 CPU 重新运行,绝大多数寄存器会被复位到复位值,程序计数器 PC 会被复位指向 00000000。 ● POR/BOR 复位(VCC 域及 Vcore 域) ●外部 Reset PAD 复位 ●WDT 复位 ●PCA 复位 ●LVD 复位 ●Cortex-M0+ SYSRESETREQ 软件复位 ●Cortex-M0+ LOCKUP 硬件复位 华大MCU每个复位源由相应的复位标志进行指示。复位标志均由硬件置位,需要用户软件清零。芯片复位时,如果查询到 Reset_flag. POR15V 或 Reset_flag. POR5V 为 1 则为上电复位。上电复位时用户程序应当将寄存器 Reset_flag 清零,则下一次复位时可通过 Reset_flag的相关比特判断复位来源。 这些复位源中Cortex-M0+ SYSRESETREQ 软件复位为主动复位,工程师可以在程序中根据自己的需要进行操作,其它的复位为被动复位,当运行的条件满足时会自动复位。下面介绍下华大MCU如何实现软件复位。 软件复位的函数包涵在core_cm0plus.h头文件中,形式为: #define NVIC_SystemReset __NVIC_SystemReset 函数的原型为: __STATIC_INLINE void __NVIC_SystemReset(void) { __DSB(); /* Ensure all outstanding memory accesses included buffered write are completed before reset */ SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | SCB_AIRCR_SYSRESETREQ_Msk); __DSB(); /* Ensure completion of memory access */ for(;;) /* wait until reset */ { __NOP(); } } 工程建立好后,工程师在使用的时候直接调用就可以,以上就是华大MCU如何实现软件复位操作流程。
沈阳芯硕科技有限公司成立于2020年,公司总部位于沈阳。随着公司业务的扩大,在深圳,广州,宁波,青岛等均设有销售分支,团队成立至今一直致力于集成电路产品的市场推广。 公司集销售,技术服务,技术开发于一体,为客户提供全面解决方案与技术服务。目前,公司涉足的主要领域包括消防,家电,汽车电子,电力系统,仪器仪表等。