华大单片机如何实现软件复位重启
工程师朋友在做产品的时候,有些特殊的场合对单片机有重启(复位)的需要,以达到保证产品的功能可以正常的实现。重启可以通过硬件和软件两种方法来实现。对于华大单片机大家都知道硬件的重启,只要把RESET引脚给一个20us以上的低电平,再拉高就可以实现,或者直接断电单片机的供电重新上电, 也可以实现单片机的重新运行。可以看出来,硬件的重启需要手工操作来实现,或者搭配额外的电路来实现,硬件操作相对来说不是很方便。软件重启只要通过在程序中写入相应的代码,当条件发生的时候单片机就可以自动完成重启的动作,这样相对来说会方便很多。本篇文章就介绍下如何用软件的方法来实现华大单片机的重启。
以华大单片机HC32L136为例,我们看其用户手册会发现,该产品的复位方式介绍如下:
本产品具有 7 个复位信号来源,每个复位信号都可以让 CPU 重新运行,绝大多数寄存器会被复位到复位值,程序会从复位向量处开始执行。
- 数字区域上电掉电复位 POR
- 外部 Reset PAD,低电平为复位信号
- WDT 复位
- PCA 复位
- LVD 低电压复位
- Cortex-M0+ SYSRESETREQ 软件复位
- Cortex-M0+ LOCKUP 硬件复位
从上面的介绍中可以看出来硬件方式可以实现的复位有: - 数字区域上电掉电复位 POR
- 外部 Reset PAD,低电平为复位信号
- LVD 低电压复位
- Cortex-M0+ LOCKUP 硬件复位
软件方式可以实现的复位有: - WDT 复位
- PCA 复位
- Cortex-M0+ SYSRESETREQ 软件复位
WDT复位为看门狗复位,开启看门狗后,在看门狗设置的时间内没有发生喂狗的操作,WDT模块将会产中复位操作把单片机复位。PCA复位其实也是一种特殊的看门狗复位,只对PCA4模块起作用,并且要把PCA4模块配置为看门狗方式,原理和WDT复位相同。Cortex-M0+ SYSRESETREQ 软件复位是通过操作单片机的寄存器直接完成复位操作,这种方法在实际使用中应用的最普遍。下面着重介绍一下这种方法。
细心的工程师会发现在华大单片机的用户手册中没有关于Cortex-M0+ SYSRESETREQ 软件复位是如何来实现的相关介绍,这是为什么呢?因为Cortex-M0+ SYSRESETREQ 软件复位是ARM内核中自带的功能,不是厂家来定义的,大多数的用户手册介绍的内容都是厂家自己搭配的外设模块的使用。关于内核的介绍大家可以ARM的官网下载相关的文档,也可以看也《ARM+Cortex-M0权威指南》这本书。在《ARM+Cortex-M0权威指南》中可以找到关于 SYSRESETREQ软件复位的介绍如下:
看到介绍我们用明白了如果用寄存器操作的方法来实现只要使用下面的代码就可以:
SCB->AIRCR = 0X05FA0004;
while(1)
{_NOP();
}
代码中在操作AIRCR寄存器后面加入的死循环的目的是等待作用,等待单片机完成复位,而不要再去做其它的工作。
其实SYSRESETREQ 软件复位的代码,在ARM的内核代码中已经为大家提供了,大家在使用的时候只在调用就可以。在core_cm0plus.h文件中相关的代码如下 :
#define NVIC_SystemReset __NVIC_SystemReset/**\brief System Reset\details Initiates a system reset request to reset the MCU.*/
__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)
{__DSB(); /* Ensure all outstanding memory accesses includedbuffered 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();}
}
由上面的代码可以知道,我们在自己的程序中果要想实现SYSRESETREQ 软件复位软件复位的话只要如下的代码就可以实现:
NVIC_SystemReset();
关注微信公众号『芯缘意码』,查看更多内容,回复“加群”加入技术交流群。
淘宝 店铺 搜索 『芯缘意码』,购买开发学习板仿真器。
华大单片机如何实现软件复位重启相关推荐
- 51单片机c语言复位程序,51单片机如何实现软件复位系统(C语言),谢谢
满意答案 waterMM 推荐于 2017.09.02 采纳率:57% 等级:13 已帮助:6010人 单片机实现软件复位(软复位)的方法及讨论 单片机实现软件复位(软复位)的方法及讨论 (天堂 ...
- BES软件复位重启写法
1 最好是外包一个函数,可以避免直接调用底层API 需要修改makefile void zk_reboot(void)//zk+ { pmu_reboot(); }
- 资产监测设备之华大单片机Boot软件升级
近期笔者在研究如何从软件方面提升资产监测设备的性能,从而提升用户的使用体验感. 资产监测设备的主要作用是帮助用户监测设备的实时位置.实时状态避免运动中的货物出现丢失等情况.环境监测设备在智慧物流方面发 ...
- 51单片机软件复位函数
51单片机无自带的看门狗,没有提供软件复位的函数和机制,要想实现软件复位,只能通过强制将PC指针指到0x0000位置, 通过以下函数将PC指针强制指到0x0000: void reset(void) ...
- 单片机笔记十一:华大单片机
最近在用华大的芯片做开发,因为某些芯片涨价太厉害,而且太难买了,专门买了华大的开发板回来用,这是一款国产的芯片,用的ARM公司的"Cortex-M0"内核,以前用过stm32f10 ...
- 华大单片机HC32F460 系列MCU
1 摘要 本篇应用笔记主要介绍如何使用华大单片机 HC32F460 系列MCU的 DMA 模块传输数据. 2 DMA 简介 什么是 DMA? DMA(直接内存访问控制器)功能块可以不通过 CPU 高速 ...
- 华大单片机HC32L136J8TA读取DS18B20温度(源码+时钟配置)
免费的C语言和linuxPDF文档:传送门 有一点C语言基础和华大单片机开发经验,应该就能看得懂就不多介绍了,有疑问可以留言,看到就回了; 关于协议具体解析:传送门@不脱发的程序猿 注(2021-05 ...
- 单片机c语言 软件抗干扰,单片机软件抗干扰的几种常见方法
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活.节省硬件资源.可靠性好越来越受到重视.下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究. 1.软件抗干扰方法的研究 在工程实践 ...
- 华大单片机-串口通讯多字节
目录 华大单片机---串口通信 1.串口通信基本原理 (1)串口通信原理: (2)华大的串口通信: (3)简单介绍下: (4)多字符发送: 2.初始化代码 3.发送代码: 4.接收中断代码 华大单片机 ...
最新文章
- android values-v21 style 报错,Android 4.4 以上实现透明导航栏和状态栏 Translucent system bar...
- 游戏开发论坛_OPPO开发者大会前瞻:见证OPPO智能服务新生态
- python 多项式拟合
- boost::signals2模块实现使用自动连接管理的测试程序
- 遍历boost::fibers::unbuffered_channel< unsigned int >的测试程序
- 微软Visual Studio 2005快捷键文档
- delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...
- SQLServer、Mysql、Oracle 创建、删除用户和授予用户权限
- wireshark解析rtp协议,流媒体中的AMR/H263/H264包的方法
- jar包在Hadoop集群上测试(MapReduce)
- FPGA跨时钟域异步时钟设计的几种同步策略
- Rust : ref下的match
- 一段oracle中的“复杂”分组统计sql
- 张宇1000题高等数学 第十、十一、十二章 一元函数积分学的应用——几何应用、积分等式与积分不等式、物理应用
- STM3库文件 hal_uart.c的使用
- python实现K近邻算法
- 0806 07 08 09 12上午数据库
- Hack the box靶机 Blunder
- 计算机导论知识组织结构与分类体系,计算机导论论文参考
- android摄氏度转为华氏温度