stm32f7软件复位 stm32f0 软件复位 - 电脑 - 【南平电脑网】_南平电脑维修_南平笔记本电脑维修_监控安装_市区上门维修
公司动态

stm32f7软件复位 stm32f0 软件复位

摘要:stm32怎样实现软件复位比较P1 6正向端和P1 7反向端 6〉P1 7,P2,程序转到中断向量0FFF6H中、P2CA1=1,在这里加一个跳转指令,转到相应的执行程序中,CAEX=0(无反向器),...

发布日期:2020-11-16

stm32f7软件复位

stm32怎样实现软件复位

比较P1.6正向端和P1.7反向端.6〉P1.7,P2,程序转到中断向量0FFF6H中、P2CA1=1,在这里加一个跳转指令,转到相应的执行程序中,CAEX=0(无反向器),CAON=1,输出端P2。

P2CA0.6输出高电平,置CAFIG=1触发中断,正反向端可自行设定。

当P1.6(就是CAOUT)。

你仔细的看看电子文档,CAF=0(不带阻容)...

用这个方法向复位STM32 ((void (*) (void)) 0x08000000) ();不好用...

你的目的是想进行复位是吗?如果是的话使用两个库函数即可: __set_FAULTMASK(1); NVIC_SystemReset();我的STM32是F103系列,即CPU内核为Cortex M3,这两个函数在core_cm3.h里面都有定义, __set_FAULTMASK(1);是关闭所有中断的意思,目的是在执行NVIC_SystemReset();复位函数过程中不被中断所打断。

两个函数执行后系统复位重新执行代码,包括之前所配置好的外设寄存器也都回到复位状态。

如果你想要保持之前配置好的寄存器不变的话,那么你再程序跳转之前要先初始化堆栈,而且你程序跳转的地址不对,应该这样:__set_MSP(*(__IO uint32_t*) 0x08000000); 要先初始化堆栈指针((void (*) (void)) (*(vu32 *)0x08000004) (); 这句才是程序跳转,注意了,是(*(vu32 *)0x08000004...