0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實現(xiàn)stm32單片機每次接上電源就進行一次重啟動?

工程師鄧生 ? 來源:未知 ? 作者:劉芹 ? 2023-09-14 14:22 ? 次閱讀

如何實現(xiàn)stm32單片機每次接上電源就進行一次重啟動?

嵌入式系統(tǒng)中,單片機的重啟有時是十分必要的,它可以解決一些系統(tǒng)啟動過程中的問題、恢復系統(tǒng)的正常運行、使系統(tǒng)更加穩(wěn)定等。

然而,有時候我們需要每次接上電源就進行一次重啟,也就是實現(xiàn)系統(tǒng)的自動重啟。本文將給出一個思路,來實現(xiàn)stm32單片機每次接上電源就進行一次重啟動。

一、背景知識

嵌入式系統(tǒng)中,有兩類重啟,分別是軟重啟和硬重啟。

1.1 軟重啟

軟重啟是指通過程序控制單片機重新開始執(zhí)行,實現(xiàn)系統(tǒng)的重啟。在stm32單片機中,一般采用如下代碼進行軟重啟:

```c
NVIC_SystemReset(); //調(diào)用此函數(shù)進行軟重啟
```

1.2 硬重啟

硬重啟是指通過硬件控制單片機重新開始執(zhí)行,實現(xiàn)系統(tǒng)的重啟。在stm32單片機中,硬重啟通常是通過復位按鍵進行操作的。復位按鍵的功能是將單片機的復位引腳拉低,在一定時間后再拉高,從而實現(xiàn)單片機的重啟。

二、實現(xiàn)思路

了解了軟重啟和硬重啟之后,我們來思考如何實現(xiàn)stm32單片機每次接上電源就進行一次重啟動。下面是一種實現(xiàn)思路:

2.1 硬重啟

由于我們需要每次接上電源就進行一次重啟,所以需要采用硬重啟的方式。同時,我們還需要在重啟之前有一個短暫的延時,以確保系統(tǒng)已經(jīng)穩(wěn)定運行。

在stm32單片機中,硬重啟通常是通過復位按鍵進行操作的。我們可以在單片機的復位引腳和復位按鍵之間串聯(lián)一個帶有一定延時的電容,使得單片機在接電源,電容充電過程中,復位引腳的電平保持低電平,從而實現(xiàn)單片機的重啟。

2.2 延時

在實際應用中,需要根據(jù)系統(tǒng)的不同運行環(huán)境和實際需求來設(shè)置延時的時間。由于系統(tǒng)重啟時,CPU還沒有開始執(zhí)行代碼,也就是沒有時鐘信號產(chǎn)生,所以我們需要在復位電容電壓升高之前就將系統(tǒng)時鐘啟動,以保證系統(tǒng)能夠穩(wěn)定運行。在stm32單片機中,我們可以通過設(shè)置RCC_CR寄存器中的HSEON位或HSION位來啟動時鐘。

三、代碼實現(xiàn)

實現(xiàn)思路已經(jīng)確定,下面給出相應的代碼實現(xiàn)。

3.1 延時函數(shù)

為了實現(xiàn)正確的延時,我們需要在代碼中實現(xiàn)一個延時函數(shù)。下面是一種簡單的延時函數(shù)實現(xiàn):

```c
void delay(uint32_t n) {
while(n--) {
asm("nop");
}
}
```

3.2 硬重啟

在stm32單片機中,復位引腳的引腳號為NRST,一般被定義為GPIOA的第0號引腳(PA0)。同時,我們還需要在復位引腳和復位按鍵之間串聯(lián)一個帶有一定延時的電容。

```c
void Reset_System(void) {
//延時一段時間
delay(0xFFFFF);
//啟動時鐘
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON); //啟動外部高速晶振
RCC_WaitForHSEStartUp(); //等待外部高速晶振就緒
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE); //將外部高速晶振選為系統(tǒng)時鐘
RCC_HCLKConfig(RCC_SYSCLK_Div1); //選擇AHB時鐘為HCLK
RCC_PCLK2Config(RCC_HCLK_Div1); //選擇APB2時鐘為HCLK
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//復位引腳配置
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//將NRST引腳拉低一段時間,模擬復位按鍵的按下操作
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
delay(0x3FF);
//將NRST引腳拉高,完成重啟操作
GPIO_SetBits(GPIOA, GPIO_Pin_0);
}
```

3.3 主函數(shù)

在主函數(shù)中,我們對函數(shù)進行調(diào)用即可。

```c
int main(void) {
Reset_System();
//其他代碼
}
```

四、總結(jié)

本文介紹了實現(xiàn)stm32單片機每次接上電源就進行一次重啟動的思路,并給出相應的代碼實現(xiàn)。

在實際應用中,我們可以根據(jù)系統(tǒng)的不同運行環(huán)境和實際需求,來設(shè)置延時的時間和復位電容的大小。同時,我們還可以采用軟重啟的方式來滿足不同的需求。

最后,需要注意的是,重啟操作可能會對系統(tǒng)的穩(wěn)定性產(chǎn)生影響,應根據(jù)實際需求來考慮是否需要進行系統(tǒng)的重啟。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119205
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    40

    文章

    3520

    瀏覽量

    128805
  • RCC
    RCC
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    26807
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1175

    瀏覽量

    51515
  • STM32單片機
    +關(guān)注

    關(guān)注

    58

    文章

    549

    瀏覽量

    58473
收藏 人收藏

    評論

    相關(guān)推薦

    stm32單片機用什么軟件編程

    STM32單片機種廣泛應用于嵌入式系統(tǒng)領(lǐng)域的微控制器,具有高性能、低功耗、豐富的外設(shè)接口等特點。要對STM32單片機
    的頭像 發(fā)表于 09-02 10:16 ?335次閱讀

    “AT+SAVETRANSLINK保存透傳連接到Flash”函數(shù),是否每次調(diào)用該命令時,都會對FLASH進行一次寫操作?

    關(guān)于“AT+SAVETRANSLINK – 保存透傳連接到Flash”這個函數(shù),請問是否每次調(diào)用該命令時,都會對FLASH進行一次寫操作,即使寫之后的信息和寫之前是樣的? 比如,假
    發(fā)表于 07-15 08:00

    基于STM32單片機的智能溫控風扇系統(tǒng)設(shè)計

    系統(tǒng)通過STM32單片機進行主控,系統(tǒng)內(nèi)通過溫度傳感器進行溫度檢測,并通過顯示屏進行顯示。系統(tǒng)內(nèi)分為手動和自動兩種控制方式,在手動模式下通過
    的頭像 發(fā)表于 06-27 10:23 ?1191次閱讀
    基于<b class='flag-5'>STM32</b><b class='flag-5'>單片機</b>的智能溫控風扇系統(tǒng)設(shè)計

    STM320H750 USB通訊必須插拔一次才正常,為什么?

    我是兩個ENDPOINT個 收 個發(fā),最大64字節(jié) 我收上位發(fā)送個命令后,下位機上傳數(shù)據(jù) 我用BusHound 調(diào)試,下發(fā)命令正常,但是
    發(fā)表于 05-27 06:54

    STM32L151RCT6單片機下載完程序不斷電重啟進不了低功耗怎么解決?

    最近遇到個很奇怪的問題,使用的是stm32L151RCT6單片機,固件庫用的是STM32Cube_FW_L1_V1.8.1,程序中有低功耗的部分,當我下載完程序然后將設(shè)備徹底斷電
    發(fā)表于 04-12 07:07

    STM32F205利用DMA實現(xiàn)多通道ADC采樣,但是每啟動一次轉(zhuǎn)換才能更新一次結(jié)果是為什么?

    mode; 3、軟件SWSTART啟動AD轉(zhuǎn)換后,每啟動一次內(nèi)存中只有一次轉(zhuǎn)換結(jié)果更新,要完成12采樣需要SWSTART
    發(fā)表于 03-27 06:37

    STM32單片機的特點和功能是什么

    STM32單片機款基于ARM Cortex-M內(nèi)核的32位閃存微控制器,由STMicroelectronics公司(意法半導體)生產(chǎn)。STM32
    的頭像 發(fā)表于 01-03 15:33 ?1.1w次閱讀

    如何學好STM32、51單片機??

     學會定時器的使用,就可以用單片機實現(xiàn)時序電路,時序電路的功能是強大的,在工業(yè)、家用電氣設(shè)備的控制中有很多應用,例如,可以用單片機實 現(xiàn)個具有
    的頭像 發(fā)表于 01-02 12:35 ?561次閱讀

    stm32單片機5v電壓怎么提供

    USB線提供電源、或者使用外部電源模塊。 使用外部穩(wěn)壓器: 使用外部穩(wěn)壓器是最常見的方式之,可以穩(wěn)定地提供5V電壓給STM32單片機。具體
    的頭像 發(fā)表于 12-22 14:30 ?1.5w次閱讀

    單片機boot腳干嘛的

    多個方面進行闡述。 、定義 boot腳是指單片機引導腳,也稱為啟動腳、引導引腳。它是單片機系統(tǒng)中的
    的頭像 發(fā)表于 12-19 09:47 ?7925次閱讀

    STM32單片機常用的引腳及功能

    STM32單片機是由意法半導體公司(STMicroelectronics)推出的種高性能、低功耗的微控制器。它具有豐富的外設(shè)功能和強大的處理能力,廣泛應用于各種嵌入式系統(tǒng)的開發(fā)中。 在STM
    的頭像 發(fā)表于 12-07 16:22 ?2w次閱讀

    請問單片機的main函數(shù)是執(zhí)行一次還是會反復執(zhí)行?

    請問單片機的main函數(shù)是執(zhí)行一次,還是會反復執(zhí)行?
    發(fā)表于 10-19 06:25

    單片機復位的條件 單片機可以復位多少 程序會導致單片機復位嗎

    單片機復位的條件 單片機可以復位多少 程序會導致單片機復位嗎? 單片機復位的條件: 1. 上電復位:
    的頭像 發(fā)表于 10-17 16:44 ?2865次閱讀

    使用RX單片機實現(xiàn)數(shù)字電源控制的示例

    使用RX單片機實現(xiàn)數(shù)字電源控制的示例
    的頭像 發(fā)表于 09-27 15:20 ?574次閱讀
    使用RX<b class='flag-5'>單片機</b><b class='flag-5'>實現(xiàn)</b>數(shù)字<b class='flag-5'>電源</b>控制的示例

    電腦不啟動,機箱電源燈和風扇反復亮幾秒,停幾秒,偶爾又能進系統(tǒng)正常運行一次。是主板上什么元件故障?

    排除法確認是華擎X99m killer主板有故障,表現(xiàn)為經(jīng)常不能成功開機,黑屏無顯示信號輸出,機箱電源燈反復亮3、5秒,滅3、5秒,cpu風扇也同樣反復轉(zhuǎn)轉(zhuǎn)停停,主板上故障跑碼表無顯示。偶爾會第一次
    發(fā)表于 09-25 21:37