91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

如何實(shí)現(xiàn)stm32單片機(jī)每次接上電源就進(jìn)行一次重啟動(dòng)?

工程師鄧生 ? 來源:未知 ? 作者:劉芹 ? 2023-09-14 14:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如何實(shí)現(xiàn)stm32單片機(jī)每次接上電源就進(jìn)行一次重啟動(dòng)?

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

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

一、背景知識(shí)

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

1.1 軟重啟

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

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

1.2 硬重啟

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

二、實(shí)現(xiàn)思路

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

2.1 硬重啟

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

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

2.2 延時(shí)

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

三、代碼實(shí)現(xiàn)

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

3.1 延時(shí)函數(shù)

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

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

3.2 硬重啟

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

```c
void Reset_System(void) {
//延時(shí)一段時(shí)間
delay(0xFFFFF);
//啟動(dòng)時(shí)鐘
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON); //啟動(dòng)外部高速晶振
RCC_WaitForHSEStartUp(); //等待外部高速晶振就緒
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE); //將外部高速晶振選為系統(tǒng)時(shí)鐘
RCC_HCLKConfig(RCC_SYSCLK_Div1); //選擇AHB時(shí)鐘為HCLK
RCC_PCLK2Config(RCC_HCLK_Div1); //選擇APB2時(shí)鐘為HCLK
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//復(fù)位引腳配置
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引腳拉低一段時(shí)間,模擬復(fù)位按鍵的按下操作
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
delay(0x3FF);
//將NRST引腳拉高,完成重啟操作
GPIO_SetBits(GPIOA, GPIO_Pin_0);
}
```

3.3 主函數(shù)

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

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

四、總結(jié)

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

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

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

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

    關(guān)注

    31

    文章

    5608

    瀏覽量

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

    關(guān)注

    41

    文章

    3747

    瀏覽量

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

    關(guān)注

    0

    文章

    96

    瀏覽量

    28516
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1328

    瀏覽量

    56231
  • STM32單片機(jī)
    +關(guān)注

    關(guān)注

    59

    文章

    553

    瀏覽量

    60625
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    GD32 usbcdc單片機(jī)機(jī)只發(fā)送,串口打開第一次自動(dòng)發(fā)最后一次測(cè)量的值

    用的gd32f470。主要是usb cdc的問題。 配置就是PC是主機(jī),單片機(jī)就設(shè)為device。 程序里就是直在測(cè)量,每測(cè)完一次就調(diào)用cdc_acm_data_send
    發(fā)表于 02-04 10:24

    單片機(jī)系統(tǒng)進(jìn)行擴(kuò)展時(shí)需要遵循的原則有哪些

    個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包含兩部門內(nèi)容:是系統(tǒng)擴(kuò)展,即單片機(jī)內(nèi)部的功能單元,如ROM、RAM、I/O、定時(shí)器/計(jì)數(shù)器、間斷系統(tǒng)等不能知足應(yīng)用系統(tǒng)的要求時(shí),必需在片外
    發(fā)表于 12-09 07:56

    單片機(jī)位數(shù)的思考(8位、16位、32位)

    8位、16位、32位是指單片機(jī)的“字長(zhǎng)”,也就是一次運(yùn)算中參與運(yùn)算的數(shù)據(jù)長(zhǎng)度,這個(gè)位是指二進(jìn)制位。以8位為例,8位二進(jìn)制的表達(dá)范圍是0000,0000~1111,1111即十進(jìn)制的0~255,即每次
    發(fā)表于 11-21 08:31

    單片機(jī)板跟上位機(jī)進(jìn)行串口發(fā)收數(shù)據(jù)時(shí),每次上位機(jī)下發(fā)指令,為什么?

    單片機(jī)板跟上位機(jī)進(jìn)行串口發(fā)收數(shù)據(jù)時(shí),每次上位機(jī)下發(fā)指令,出現(xiàn)問題都是在第條指令后,有時(shí)在
    發(fā)表于 08-08 08:20

    電源電路焊接上單片機(jī)后電壓異常,看看這是什么問題?

    大佬們幫我看看這是什么問題,已經(jīng)逐級(jí)排查過了,焊接上單片機(jī)后電壓異常,取下單品機(jī)后恢復(fù)正常,已經(jīng)對(duì)照過說明書管腳沒有錯(cuò)
    發(fā)表于 08-01 16:23

    單片機(jī)怎么驅(qū)動(dòng)電機(jī)?

    在各類自動(dòng)化設(shè)備和智能裝置中,電機(jī)是重要的執(zhí)行部件,而單片機(jī)作為控制核心,需要通過特定的方式驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)。單片機(jī)驅(qū)動(dòng)電機(jī)并非直接連接即可,而是要根據(jù)電機(jī)類型和功率,搭配合適的驅(qū)動(dòng)電路,才能實(shí)現(xiàn)穩(wěn)定
    的頭像 發(fā)表于 07-25 09:31 ?915次閱讀

    使用 CYW4373,啟動(dòng)后立即進(jìn)行校準(zhǔn),并且每?jī)煞昼?b class='flag-5'>進(jìn)行一次校準(zhǔn),怎么操作?

    我已確認(rèn)校準(zhǔn)時(shí)電流值處于最大值。 使用 CYW4373,啟動(dòng)后立即進(jìn)行校準(zhǔn),并且每?jī)煞昼?b class='flag-5'>進(jìn)行一次校準(zhǔn)。 何時(shí)使用 CYW55573 進(jìn)行校準(zhǔn)
    發(fā)表于 07-17 06:16

    PD快充芯片U8732的軟啟動(dòng)功能

    啟動(dòng)技術(shù)的核心在于控制芯片電源電壓的平穩(wěn)上升。銀聯(lián)寶PD快充芯片U8732內(nèi)部集成有軟啟動(dòng)功能,在軟啟動(dòng)時(shí)間TST(典型值 5ms)內(nèi),電流峰值從最小值逐步增加,避免變壓器磁芯飽和,
    的頭像 發(fā)表于 07-03 18:02 ?971次閱讀

    使用USB轉(zhuǎn)TTL串口板和ST-LINK調(diào)試下載器給STM32單片機(jī)下載程序

    本文詳細(xì)介紹如何使用ST-LINK/V2和USB轉(zhuǎn)TTL串口板為STM32單片機(jī)下載程序,包括STM32啟動(dòng)模式、JTAG與SWD接口對(duì)比、驅(qū)動(dòng)安裝及官方軟件
    的頭像 發(fā)表于 06-20 17:26 ?2757次閱讀
    使用USB轉(zhuǎn)TTL串口板和ST-LINK調(diào)試下載器給<b class='flag-5'>STM32</b><b class='flag-5'>單片機(jī)</b>下載程序

    電機(jī)重啟動(dòng)的控制策略

    ~~~***附件:電機(jī)重啟動(dòng)的控制策略.pdf **【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)第時(shí)間告知,刪除內(nèi)容!**
    發(fā)表于 05-27 16:23

    STM32F10xxx單片機(jī)編程手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《STM32F10xxx單片機(jī)編程手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 04-14 14:56 ?17次下載

    STM32F103x8 STM32F103xB單片機(jī)數(shù)據(jù)手冊(cè)

    STM32F103x8STM32F103xB單片機(jī)數(shù)據(jù)手冊(cè)
    發(fā)表于 04-14 14:55 ?8次下載

    單片機(jī)方面的大佬嗎?有幾個(gè)單片機(jī)方面的問題需要請(qǐng)教

    單片機(jī)本身具有定時(shí)系統(tǒng),當(dāng)傳感器檢測(cè)到障礙物以后發(fā)出警報(bào)并停止運(yùn)動(dòng)系統(tǒng)運(yùn)行,讓步進(jìn)電機(jī)自動(dòng)回到初始位置,對(duì)于這個(gè)系統(tǒng)我還要依靠單片機(jī)本身的定時(shí)功能來進(jìn)行每天一次的往返運(yùn)動(dòng)。 傳感器目
    發(fā)表于 03-29 18:35

    請(qǐng)問init_ipc_shm() 是否只初始化一次

    通過在 S32G A 核上使用 C(或 C)創(chuàng)建多個(gè)項(xiàng)目來開發(fā) IPCF 功能時(shí),是init_ipc_shm()允許初始化已配置的共享資源的函數(shù)僅一次在運(yùn)行時(shí)?如果是,系統(tǒng)級(jí)別的最佳架構(gòu)建議是什么?我的想法是實(shí)現(xiàn)個(gè)自
    發(fā)表于 03-25 08:05

    STM32單片機(jī)最小系統(tǒng)電路設(shè)計(jì)

    單片機(jī)最小系統(tǒng)是指用最少的電路組成單片機(jī)可以工作的系統(tǒng),通常最小系統(tǒng)包含:電源電路、時(shí)鐘電路、復(fù)位電路、調(diào)試/下載電路,對(duì)于STM32還需要啟動(dòng)
    的頭像 發(fā)表于 03-12 14:09 ?2w次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>單片機(jī)</b>最小系統(tǒng)電路設(shè)計(jì)