STM32 进行软件复位的方法】的更多相关文章

platform:stm32f103xx include:core_cm3.h /** \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 included buf…
源:STM32软件复位(基于库文件V3.5) void SoftReset(void) { __set_FAULTMASK(); // 关闭所有中端 NVIC_SystemReset();// 复位 } //在官方软件库的 core_cm3.h 文件里 直接提供了 系统复位的函数 static __INLINE void NVIC_SystemReset(void) { SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | (SCB->A…
最近做了个USB跟上位机的通信,需要软件对MCU进行复位,复位后如果USB没有拔插,PC就不会重新枚举USB为了解决这个问题,我做了软件复位跟,软件模拟USB拔插. 这里我用的是HAL库的软件复位,复位前先把中断关掉,再复位,代码如下: __set_FAULTMASK(); //关中断 NVIC_SystemReset(); //复位 至于怎么实现模拟USB拔插,则只需要在USB初始化前把PA12进行一个拉低——延时——拉高的操作即可,一般PC机可以通过检查USB的D+引脚来判断USB是否有变化…
RCC CSR寄存器会存储复位标示,可通过它来知道复位原因,来源: if(RCC_GetFlagStatus(RCC_FLAG_PINRST)) printf("PINRST\r\n"); if(RCC_GetFlagStatus(RCC_FLAG_PORRST)) printf("PORRST\r\n"); if(RCC_GetFlagStatus(RCC_FLAG_SFTRST)) printf("SFTRST\r\n"); if(RCC_G…
调试硬件时常常需要复位目标芯片,每次断电上电太麻烦,又不喜欢总打开segger的命令行,于是就搞了这个小工具:   QT绿色软件,解压即可运行,打开JLinkRST.exe,点击Connect即可通过通过JLink软件复位.停止.和运行了.打开后可以放一边,不影响程序下载运行等,任何时候都可以直接点复位.halt及运行. 使用方法:在根目录下有个mcu.txt,只要把芯片型号写上去就可以,比如MK64,在muc.txt中写上:MK64FN1M0xxx12(只支持一种芯片).如果不确定芯片的具体型…
摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为底盘包含软硬件整套解决方案,是很多机器人公司的核心技术,一般不会随便公开.出于强烈的求知欲与学习热情,我想自己DIY一整套两轮差分底盘,并且将完整的设计过程公开出去供大家学习.说干就干,本章节主要内容: 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发…
在CentOS yum安装和卸载软件的使用方法安装方法安装一个软件时.   CentOS yum -y install httpd安装多个相类似的软件时   CentOS yum -y install httpd*安装多个非类似软件时   CentOS yum -y install httpd php php-gd mysql卸载一个软件时   CentOS yum -y remove httpd卸载多个相类似的软件时   CentOS yum -y remove httpd*卸载多个非类似软件…
源:http://blog.sina.com.cn/s/blog_493520900100bpos.html Question 如何通过软件复位AVR? Answer 如果你想通过软件复位AVR,你应该使用内部看门狗.简单的使能它和让它溢出.当看门狗触发后,程序计数器返回到0,清除所有的寄存器和其他正在执行的任务,这与将RESET脚拉低有同样的效果. 你不应该处理: --用另一个AVR的引脚连接外部RESET引脚.在短暂的复位时间,AVR的引脚会三态失效,这会导致RESET无效. --跳到程序地…
I2C总线协议的软件模拟实现方法 在上一篇博客中已经讲过I2C总线通信协议,本文讲述I2C总线协议的软件模拟实现方法. 1. 简述 所谓的I2C总线协议的软件模拟实现方法,就是用软件控制GPIO的输入.输出和高低电平变化,来模拟I2C总线通讯过程中SCL.SDA的电平变化来实现的. 2. I2C总线的封装 每个处理器对应的GPIO操作都有差异,即使是同一款处理器,不同的人也会有不同的GPIO封装风格,就以我个人习惯用的GPIO方法为例来进行讲解.我习惯上将GPIO的组和位封装为一个结构体,这样使…
现在我有一个需求,WIFI模块控制一个继电器,我要做的是如果内部程序跑乱了,造成了内部程序复位重启,那么控制继电器的状态不能改变 如果是设备断电了,然后又来电了,我需要的是继电器一定要是断开才好.不能加额外的电路,只能在程序中做判断 其实  内部程序跑乱了,造成了内部程序复位重启     和   设备断电了,然后又来电了     然后都是重新执行程序,不知道大家是如何做的 我的思路是... 先说一下WIFI模块的一个很大的优点, 大家有没有注意WIFI模块的引脚,假设配置了一个引脚为高电平,无论…