注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
虹芯侠客的个人空间 http://home.eeworld.com.cn/space-uid-630110.html [收藏] [复制] [分享] [RSS]
日志

华大MCU如何实现软件复位

热度 1已有 126 次阅读2021-9-6 08:55

产品在设计中某些状态下需要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如何实现软件复位操作流程。

 

 

http://tigerchip.com.cn/forum.php?mod=viewthread&tid=87&fromuid=2

(出处: 芯虎论坛)

 

本文来自论坛,点击查看完整帖子内容。

全部作者的其他最新日志
发表评论 评论 (1 个评论)
回复 rsxrb 2021-9-12 02:12
学习一下

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册