<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

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

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

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

一、背景知識

嵌入式系統中,有兩類重啟,分別是軟重啟和硬重啟。

1.1 軟重啟

軟重啟是指通過程序控制單片機重新開始執行,實現系統的重啟。在stm32單片機中,一般采用如下代碼進行軟重啟:

```c
NVIC_SystemReset(); //調用此函數進行軟重啟
```

1.2 硬重啟

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

二、實現思路

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

2.1 硬重啟

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

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

2.2 延時

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

三、代碼實現

實現思路已經確定,下面給出相應的代碼實現。

3.1 延時函數

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

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

3.2 硬重啟

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

```c
void Reset_System(void) {
//延時一段時間
delay(0xFFFFF);
//啟動時鐘
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON); //啟動外部高速晶振
RCC_WaitForHSEStartUp(); //等待外部高速晶振就緒
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE); //將外部高速晶振選為系統時鐘
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 主函數

在主函數中,我們對函數進行調用即可。

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

四、總結

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

在實際應用中,我們可以根據系統的不同運行環境和實際需求,來設置延時的時間和復位電容的大小。同時,我們還可以采用軟重啟的方式來滿足不同的需求。

最后,需要注意的是,重啟操作可能會對系統的穩定性產生影響,應根據實際需求來考慮是否需要進行系統的重啟。

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

    關注

    30

    文章

    5164

    瀏覽量

    118135
  • 嵌入式系統
    +關注

    關注

    40

    文章

    3448

    瀏覽量

    128411
  • RCC
    RCC
    +關注

    關注

    0

    文章

    92

    瀏覽量

    26729
  • GPIO
    +關注

    關注

    16

    文章

    1149

    瀏覽量

    50738
  • STM32單片機
    +關注

    關注

    58

    文章

    546

    瀏覽量

    58076
收藏 人收藏

    評論

    相關推薦

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

    我是兩個ENDPOINT個 收 個發,最大64字節 我收上位發送個命令后,下位機上傳數據 我用BusHound 調試,下發命令正常,但是
    發表于 05-27 06:54

    STM32H745燒錄異常的原因?

    STM32H745的燒錄時,買來板子默認燒錄好的測試程序可以正常運行,在根據教程[鏈接1]進行學習的時候,燒錄完成,運行正常,有事離開對板子進行了掉電,然后再插電就無法識別單片機。然后
    發表于 05-20 07:20

    stm32使用emwin定時器每s讀取一次時間,會出現跳秒的原因?

    使用emwin 定時器 每s 讀取一次時間,發現會出現跳秒的情況,是怎么個情況? 時鐘使用的是 stm32 單片機自帶的 rtc
    發表于 04-28 07:34

    AVR單片機外接16M晶振和STM32F103外接8MHZ運行速度哪個更快?

    同樣的程序進行比較: AVR單片機外接16M晶振:運行程序是矩陣按鍵掃描采用定時器中斷100ms掃描一次、還有串口接收中斷程序1S接收一次運行程序上后,串口接收中斷程序不會影響矩陣按鍵
    發表于 04-23 07:43

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

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

    STM32F205利用DMA實現多通道ADC采樣,但是每啟動一次轉換才能更新一次結果是為什么?

    mode; 3、軟件SWSTART啟動AD轉換后,每啟動一次內存中只有一次轉換結果更新,要完成12采樣需要SWSTART
    發表于 03-27 06:37

    使用FPGA對AD7606進行采樣,每次采樣的值總是再下一次采樣時出現是什么問題?

    你好,這是原理圖 我使用FPGA對AD7606進行采樣,每次采樣的值總是再下一次采樣時出現,請問這是什么問題?
    發表于 12-14 08:06

    請問單片機的main函數是執行一次還是會反復執行?

    請問單片機的main函數是執行一次,還是會反復執行?
    發表于 10-19 06:25

    51單片機電路第一次上電無法下載程序

    使用stc15W204s單片機,第一次上電時復位鍵無法工作,不能下載程序,已下載過程序的單片機焊接在這個電路上可正常下載。
    發表于 10-08 14:12

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

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

    款漂亮的板子 #單片機 #FreeRTOS #stm32 #stm32單片機

    單片機STM32
    百問網官方
    發布于 :2023年09月20日 15:26:00

    stm32單片機如何實現一個按鍵切換兩個程序?

    stm32單片機如何實現一個按鍵切換兩個程序? 作為一款功能強大的微控制器,STM32單片機可以支持多種應用場景,其中一個實用的功能是按鍵切
    的頭像 發表于 09-14 14:22 ?4874次閱讀

    LNK304DN接led燈存在單片機重啟現象是怎么回事?

    繼電器的輸出端為空時,打開關閉繼電器,切正常,當繼電器接上LED時,打開關閉繼電器時導致了12V輸出出現很大的紋波,嚴重時導致了單片機重啟。求大神指點
    發表于 08-01 15:25

    CPU低溫重啟問題的定位和解決

    某產品研發階段在做四角實驗的過程中,發現單板在低溫下出現反復重啟動的問題,經過反復的實驗和定位,發現是核電源DC-DC芯片使用的液態電解電容,在低溫下,內部液體固化。導致電容ESR降低,進而使DC-DC輸出的紋波變大,出現單板反復重啟動
    發表于 06-25 16:57 ?883次閱讀
    CPU低溫<b class='flag-5'>重啟</b>問題的定位和解決

    淺析STM32單片機啟動文件

    今天來總結的stm32基礎知識是啟動文件相關。要想對是stm32單片機有個深入的理解,那么啟動文件就是一個繞不過去的坎。
    發表于 06-12 16:49 ?1073次閱讀
    淺析<b class='flag-5'>STM32</b><b class='flag-5'>單片機</b>的<b class='flag-5'>啟動</b>文件
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>