stm32f4如何軟復位

STM32F4系列微控制器可以通過軟件方式實現(xiàn)復位,主要有以下幾種方法:1. 軟件復位(Software Reset): 使用SCB(System Control Bl...
STM32F4系列微控制器可以通過軟件方式實現(xiàn)復位,主要有以下幾種方法:
1. 軟件復位(Software Reset):
使用SCB(System Control Block)寄存器:
AIRCR(Alignment and Interrupt Control Register):通過設(shè)置該寄存器的SYSRESETREQ位,可以觸發(fā)系統(tǒng)復位。
```c
SCB->AIRCR = (SCB->AIRCR & ~SCB_AIRCR_VECTKEY_Msk) SCB_AIRCR_VECTKEY_Msk SCB_AIRCR_SYSRESETREQ_Msk;
```
BKPR(Backup Register):通過修改BKPR寄存器,也可以觸發(fā)系統(tǒng)復位。
使用RCC(Reset and Clock Control)寄存器:
RCC_AIRCR:設(shè)置該寄存器的RESET位,也可以觸發(fā)系統(tǒng)復位。
```c
RCC->APB1ENR = RCC_APB1ENR_PWREN; // 使能電源接口時鐘
RCC->APB1ENR = RCC_APB1ENR_BKPEN; // 使能備份寄存器時鐘
RCC->BKP->BKP0R = 0x9A5A; // 設(shè)置復位密碼
RCC->BKP->BKP0R = 0x5A9A; // 設(shè)置復位密碼
RCC->APB1ENR &= ~RCC_APB1ENR_PWREN; // 關(guān)閉電源接口時鐘
RCC->APB1ENR &= ~RCC_APB1ENR_BKPEN; // 關(guān)閉備份寄存器時鐘
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; // 設(shè)置系統(tǒng)時鐘為HSI
RCC->CR = RCC_CR_PLLRDY; // 等待PLL時鐘就緒
RCC->CFGR = RCC_CFGR_PLLSRC_HSE; // 設(shè)置PLL時鐘源為HSE
RCC->CFGR = RCC_CFGR_PLLMULL12; // 設(shè)置PLL倍頻為12
RCC->CFGR = RCC_CFGR_PLLQ9; // 設(shè)置PLL分頻為9
RCC->CFGR = RCC_CFGR_PLLP; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLR; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLU; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLV; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLX; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLY; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLZ; // 設(shè)置PLL分頻為2
RCC->CFGR = RCC_CFGR_PLLW; // 設(shè)置PLL分頻
本文鏈接:http:///bian/706615.html
上一篇:如何同時修改不同標簽行距