当前位置:首页 > 编程技术 > 正文

stm32f4如何软复位

stm32f4如何软复位

STM32F4系列微控制器可以通过软件方式实现复位,主要有以下几种方法:1. 软件复位(Software Reset): 使用SCB(System Control Bl...

STM32F4系列微控制器可以通过软件方式实现复位,主要有以下几种方法:

1. 软件复位(Software Reset):

使用SCB(System Control Block)寄存器:

AIRCR(Alignment and Interrupt Control Register):通过设置该寄存器的SYSRESETREQ位,可以触发系统复位。

```c

SCB->AIRCR = (SCB->AIRCR & ~SCB_AIRCR_VECTKEY_Msk) SCB_AIRCR_VECTKEY_Msk SCB_AIRCR_SYSRESETREQ_Msk;

```

BKPR(Backup Register):通过修改BKPR寄存器,也可以触发系统复位。

使用RCC(Reset and Clock Control)寄存器:

RCC_AIRCR:设置该寄存器的RESET位,也可以触发系统复位。

```c

RCC->APB1ENR = RCC_APB1ENR_PWREN; // 使能电源接口时钟

RCC->APB1ENR = RCC_APB1ENR_BKPEN; // 使能备份寄存器时钟

RCC->BKP->BKP0R = 0x9A5A; // 设置复位密码

RCC->BKP->BKP0R = 0x5A9A; // 设置复位密码

RCC->APB1ENR &= ~RCC_APB1ENR_PWREN; // 关闭电源接口时钟

RCC->APB1ENR &= ~RCC_APB1ENR_BKPEN; // 关闭备份寄存器时钟

RCC->APB1ENR = RCC_APB1ENR_RCCEN; // 使能RCC时钟

RCC->CR = RCC_CR_HSEON; // 开启外部高速时钟

RCC->CR = RCC_CR_PLLON; // 开启PLL时钟

RCC->CR = RCC_CR_PLLRDY; // 等待PLL时钟就绪

RCC->CR = RCC_CR_HSION; // 开启HSI时钟

RCC->CR = RCC_CR_HSIRDY; // 等待HSI时钟就绪

RCC->CFGR = RCC_CFGR_SW_HSI; // 设置系统时钟为HSI

RCC->CR = RCC_CR_PLLRDY; // 等待PLL时钟就绪

RCC->CFGR = RCC_CFGR_PLLSRC_HSE; // 设置PLL时钟源为HSE

RCC->CFGR = RCC_CFGR_PLLMULL12; // 设置PLL倍频为12

RCC->CFGR = RCC_CFGR_PLLQ9; // 设置PLL分频为9

RCC->CFGR = RCC_CFGR_PLLP; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLR; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLU; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLV; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLX; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLY; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLZ; // 设置PLL分频为2

RCC->CFGR = RCC_CFGR_PLLW; // 设置PLL分频

最新文章