日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

STM32C552開發(fā)(2)----BOOT_SEL設(shè)置

嵌入式單片機(jī)MCU開發(fā) ? 來源:嵌入式單片機(jī)MCU開發(fā) ? 作者:嵌入式單片機(jī)MCU開 ? 2026-06-08 11:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

在實(shí)際項(xiàng)目開發(fā)或量產(chǎn)維護(hù)中,除了 ST-LINK 下載方式外,很多場景還會(huì)使用 USART 串口、USB DFU、SPI 或 FDCAN 等方式進(jìn)行程序升級(jí)。此時(shí) MCU 需要先進(jìn)入 ST 出廠內(nèi)置的 System Memory Bootloader,才能通過這些接口完成 Flash 燒錄。對(duì)于 STM32C5 系列來說,是否使用外部 BOOT0 引腳進(jìn)入 Bootloader,與 Option Bytes 中的 BOOT_SEL 配置密切相關(guān)。 簡單來說,BOOT_SEL 用于選擇 BOOT0 信號(hào)的來源:當(dāng) BOOT_SEL 使能外部 BOOT0 引腳時(shí),可以通過拉高 BOOT0 后復(fù)位芯片進(jìn)入系統(tǒng) Bootloader;當(dāng) BOOT_SEL 選擇內(nèi)部 Option Bit 時(shí),則由 Option Bytes 中的 BOOT0 配置決定啟動(dòng)方式。因此,理解 BOOT_SEL、BOOT0 引腳和 System Memory Bootloader 之間的關(guān)系,對(duì)于后續(xù)使用串口或 USB 下載程序非常重要。

需要樣片的可以加群申請(qǐng):925643491 / 615061293 。

視頻教學(xué)

[https://www.bilibili.com/video/BV1ATVD6mEex/]

樣品申請(qǐng)

[https://www.wjx.top/vm/OhcKxJk.aspx#]

源碼下載

[https://download.csdn.net/download/qq_24312945/92952812]

硬件準(zhǔn)備

首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是自己繪制的開發(fā)板,需要的可以進(jìn)行申請(qǐng)。

主控為STM32C552CET6/STM32C552CEU6

參考程序

https://github.com/CoreMaker-lab/STM32C552_SENSOR

https://gitee.com/CoreMaker/STM32C552_SENSOR

概念說明

BOOT_SEL 是 STM32C5 Option Bytes 中的一個(gè)啟動(dòng)配置位,用于選擇 BOOT0 信號(hào)的來源。 當(dāng) BOOT_SEL = 1 時(shí),BOOT0 信號(hào)由外部 BOOT0 引腳決定,也就是傳統(tǒng) STM32 常見的 BOOT0 引腳啟動(dòng)方式。 當(dāng) BOOT_SEL = 0 時(shí),BOOT0 信號(hào)由 Option Bytes 中的 BOOT0 option bit 決定,此時(shí)外部 BOOT0 引腳不再作為主要啟動(dòng)選擇依據(jù)。 RM0522 中說明,STM32C5 啟動(dòng)時(shí)會(huì)根據(jù) BOOT0 引腳或 BOOT0 option bit,再結(jié)合 BOOT_SEL option bit 和 BOOTADD[31:8] 來選擇啟動(dòng)地址,啟動(dòng)區(qū)域可以是用戶 Flash,也可以是 System Memory Bootloader。

BOOT_SEL 決定 BOOT0 信號(hào)來自哪里;BOOT0 決定是否進(jìn)入 Bootloader;EMPTY flag 用于空片保護(hù),F(xiàn)lash 為空時(shí)自動(dòng)進(jìn)入 Bootloader。

自舉模式

AN2606在自舉模式部分,該文檔介紹了 STM32C542 的自舉功能和選項(xiàng). 如果使用 USART1 進(jìn)入 STM32C542 的 Bootloader,需要連接 PA9 / PA10: PA9 -> USART1_TX PA10 -> USART1_RX 串口格式為 8 位數(shù)據(jù)位、偶校驗(yàn)、1 位停止位。

BOOT0設(shè)置

BOOT0可以通過CN2跳線帽進(jìn)行設(shè)置。

配置 BOOT_SEL

通過程序修改 STM32C5 的 BOOT_SEL Option Byte,決定 BOOT0 信號(hào)到底來自外部 BOOT0 引腳,還是來自內(nèi)部 BOOT0 Option Bit。
這個(gè)函數(shù)的整體流程 如下:

讀取當(dāng)前 BOOT_SEL 配置
        ↓
判斷是否需要修改
        ↓
等待 Flash 空閑
        ↓
清除錯(cuò)誤標(biāo)志
        ↓
解鎖 Flash 和 Option Bytes
        ↓
設(shè)置新的 BOOT_SEL
        ↓
啟動(dòng) Option Bytes 編程
        ↓
等待完成并檢查錯(cuò)誤
        ↓
重新鎖定 Flash 和 Option Bytes
        ↓
系統(tǒng)復(fù)位讓配置生效

Configure_BOOT_SEL代碼。

#include "stm32c5xx_ll_flash.h"
#include < stdio.h >


/*
 * enable = 1:BOOT_SEL = 1,BOOT0 信號(hào)來自外部 BOOT0 引腳
 * enable = 0:BOOT_SEL = 0,BOOT0 信號(hào)來自內(nèi)部 BOOT0 Option Bit
 */
static void Configure_BOOT_SEL(uint8_t enable)
{
    uint32_t target_boot_sel;
    uint32_t current_boot_sel;

    /*
     * STM32C5:
     * BOOT_SEL = 1: BOOT0 from BOOT0 pin
     * BOOT_SEL = 0: BOOT0 from BOOT0 option bit
     *
     * 當(dāng)前頭文件里有 LL_FLASH_OB_BOOT0_BOOTPIN,
     * 但沒有 LL_FLASH_OB_BOOT0_BOOT0,所以 BOOT_SEL = 0 直接用 0U。
     */
    target_boot_sel = enable ? LL_FLASH_OB_BOOT0_BOOTPIN : 0U;

    current_boot_sel = LL_FLASH_OB_GetBoot0SourceSelection(FLASH);

    if (current_boot_sel == target_boot_sel)
    {
        printf("BOOT_SEL is already set to the desired value.rn");
        return;
    }

    /* 等待 Flash 空閑 */
    while ((FLASH- >SR & FLASH_SR_BSY) != 0U)
    {
    }

    /*
     * 清除可能存在的 Option Byte 錯(cuò)誤標(biāo)志。
     * 如果不清除 OPTCHANGEERR,后面 OPTSTRT 可能無法啟動(dòng)。
     */
#ifdef FLASH_CCR_CLR_OPTCHANGEERR
    FLASH- >CCR = FLASH_CCR_CLR_OPTCHANGEERR;
#endif

#ifdef FLASH_CCR_CLR_PGSERR
    FLASH- >CCR = FLASH_CCR_CLR_PGSERR;
#endif

#ifdef FLASH_CCR_CLR_WRPERR
    FLASH- >CCR = FLASH_CCR_CLR_WRPERR;
#endif

#ifdef FLASH_CCR_CLR_STRBERR
    FLASH- >CCR = FLASH_CCR_CLR_STRBERR;
#endif

#ifdef FLASH_CCR_CLR_INCERR
    FLASH- >CCR = FLASH_CCR_CLR_INCERR;
#endif

#ifdef FLASH_CCR_CLR_EOP
    FLASH- >CCR = FLASH_CCR_CLR_EOP;
#endif

    /* 解鎖 Flash */
    if (LL_FLASH_IsLocked(FLASH) != 0U)
    {
        LL_FLASH_SetUnlockKey(FLASH, LL_FLASH_KEY1);
        LL_FLASH_SetUnlockKey(FLASH, LL_FLASH_KEY2);
    }

    /* 解鎖 Option Bytes */
    if (LL_FLASH_OB_IsLocked(FLASH) != 0U)
    {
        LL_FLASH_OB_SetUnlockKey(FLASH, LL_FLASH_OB_OPTKEY1);
        LL_FLASH_OB_SetUnlockKey(FLASH, LL_FLASH_OB_OPTKEY2);
    }

    if ((LL_FLASH_IsLocked(FLASH) != 0U) || (LL_FLASH_OB_IsLocked(FLASH) != 0U))
    {
        printf("Error: Failed to unlock FLASH or Option Bytes!rn");
        return;
    }

    /* 設(shè)置 BOOT_SEL */
    LL_FLASH_OB_SetBoot0SourceSelection(FLASH, target_boot_sel);

    /*
     * 啟動(dòng) Option Bytes 修改。
     * RM0522 中說明:修改 FLASH_xxx_PRG 后,需要置位 OPTSTRT。
     */
    FLASH- >OPTCR |= FLASH_OPTCR_OPTSTRT;

    /* 等待 Option Bytes 修改完成 */
    while ((FLASH- >SR & FLASH_SR_BSY) != 0U)
    {
    }

    /* 檢查是否發(fā)生 Option Byte 修改錯(cuò)誤 */
    if ((FLASH- >SR & FLASH_SR_OPTCHANGEERR) != 0U)
    {
        printf("Error: Option Bytes change failed!rn");

#ifdef FLASH_CCR_CLR_OPTCHANGEERR
        FLASH- >CCR = FLASH_CCR_CLR_OPTCHANGEERR;
#endif
    }
    else
    {
        printf("BOOT_SEL configured successfully.rn");
    }

    /* 鎖定 Option Bytes 和 Flash */
    LL_FLASH_OB_Lock(FLASH);
    LL_FLASH_Lock(FLASH);

    /*
     * 修改 Option Bytes 后建議復(fù)位,讓配置重新加載。
     */
    NVIC_SystemReset();
}

然后在 main() 里調(diào)用一次,比如你想設(shè)置成 使用外部 BOOT0 引腳:

Configure_BOOT_SEL(1);

如果你想設(shè)置成 使用內(nèi)部 BOOT0 Option Bit:

Configure_BOOT_SEL(0);

查看BOOT_SEL

代碼配置 BOOT_SEL 后,在 STM32CubeProgrammer 中讀取驗(yàn)證 。 程序中調(diào)用 Configure_BOOT_SEL(1) 后,芯片復(fù)位并重新加載 Option Bytes。隨后使用 STM32CubeProgrammer 連接目標(biāo)板,進(jìn)入 Option Bytes → User Configuration 頁面,點(diǎn)擊 Read 讀取當(dāng)前選項(xiàng)字節(jié)配置,可以看到 BOOT_SEL 已被勾選,說明 BOOT_SEL 已成功配置為 1,即 BOOT0 信號(hào)來源為外部 BOOT0 引腳。

UART燒錄

將BOOT0接入3V3中。 BOOT0可以通過CN2跳線帽進(jìn)行設(shè)置。

TYPE-C已經(jīng)通過CH340接入到PA9和PA10。

打開STM32CubeProgrammer,設(shè)置為UART燒錄模式。

  1. 連接方式選擇 UART,表示通過串口方式連接 STM32C5 Bootloader
  2. UART 參數(shù)配置:選擇對(duì)應(yīng) COM 口,波特率 115200,偶校驗(yàn) Even,8 數(shù)據(jù)位,1 停止位
  3. 目標(biāo)信息區(qū)域顯示芯片系列為 STM32C53x/542,說明已經(jīng)通過 Bootloader 識(shí)別到目標(biāo)芯片
  4. 左側(cè)內(nèi)存窗口成功讀取 0x08000000 地址內(nèi)容,日志顯示 Data read successfully,說明 UART Bootloader 通信正常

USB燒錄

將BOOT0接入3V3中。 BOOT0可以通過CN2跳線帽進(jìn)行設(shè)置。

AN2606 中 USB DFU Bootloader 接口說明。STM32C531xx / C532xx / C542xx 進(jìn)入 System Memory Bootloader 后支持 USB DFU,USB_DM 使用 PA11,USB_DP 使用 PA12。硬件預(yù)留 USB 接口后,可通過 STM32CubeProgrammer 的 USB 模式進(jìn)行 DFU 下載。

TYPE-C已經(jīng)接入到PA11和PA12。

通過 USB DFU 連接 STM32C5 Bootloader。BOOT0 拉高復(fù)位后,STM32CubeProgrammer 選擇 USB 接口,可成功識(shí)別 STM32C53x/542 并讀取 Flash 數(shù)據(jù),說明芯片已進(jìn)入系統(tǒng) Bootloader,USB DFU 通信正常。

審核編輯 黃宇

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

    關(guān)注

    2315

    文章

    11223

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    STM32L552CET6,STM32L552QEI6,STM32L552RCT6超低功耗微控制器STM32L552

    Acccelerator?, STM32 L5 MCU的性能進(jìn)一步升級(jí)。這些STM32 L5 MCU采用7種形式封裝,提供大型產(chǎn)品組合,支持高達(dá)125°C的環(huán)境溫度。1、STM32L552
    發(fā)表于 08-11 11:29

    STM32單片機(jī)的BOOT0和BOOT1應(yīng)用原理

    STM32單片機(jī)的BOOT0和BOOT1應(yīng)用原理。
    發(fā)表于 07-14 18:14 ?69次下載

    STM32F103C8T6核心板BOOT啟動(dòng)方式

    STM32F103C8T6核心板BOOT啟動(dòng)方式
    發(fā)表于 11-05 10:20 ?251次下載

    STM32F0的BOOT配置及相關(guān)話題

    是利用BOOT0物理腳和Nboot1、Boot_Sel選項(xiàng)位來確定啟動(dòng)模式;第二種只使用Boot_Sel、Nboot1 、Nboot0 三個(gè)選項(xiàng)位來確定啟動(dòng)模式,完全省卻了物理腳,多出一根腳給用戶應(yīng)用。 對(duì)于第一種配置方式,所有
    發(fā)表于 11-29 20:06 ?3533次閱讀
     <b class='flag-5'>STM32</b>F0的<b class='flag-5'>BOOT</b>配置及相關(guān)話題

    STM32單片機(jī)在KIEL4配置開發(fā)中的設(shè)置

    開發(fā)環(huán)境:KIEL4,芯片STM32F103VCT6。函數(shù)庫VC3.5 1.配置開發(fā)環(huán)境。 2.Option for Target,主要是C
    發(fā)表于 11-23 15:01 ?2390次閱讀
    <b class='flag-5'>STM32</b>單片機(jī)在KIEL4配置<b class='flag-5'>開發(fā)</b>中的<b class='flag-5'>設(shè)置</b>

    STM32的三種Boot模式及驗(yàn)證

    STM32的三種Boot模式一、BOOT模式簡介1. 三種BOOT模式:所謂啟動(dòng),一般來說就是指我們下好程序后,重啟芯片時(shí),SYSCLK的第4個(gè)上升沿,
    發(fā)表于 11-26 19:51 ?89次下載
    <b class='flag-5'>STM32</b>的三種<b class='flag-5'>Boot</b>模式及驗(yàn)證

    在MIMXRT1020CAG4B中設(shè)置BT_FUSE_SEL熔絲位

    判斷外部BOOT GPIO引腳電平,可以減少外部下拉電阻的設(shè)置,對(duì)于原理圖設(shè)計(jì)會(huì)簡化許多。根據(jù)手冊(cè),BT_FUSE_SEL位于熔絲地址 0x460的第四位。
    的頭像 發(fā)表于 11-07 10:44 ?2682次閱讀

    MGMF552L1C5-網(wǎng)絡(luò)式伺服A6N 設(shè)置例 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MGMF552L1C5-網(wǎng)絡(luò)式伺服A6N 設(shè)置例相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有MGMF552L1C5-網(wǎng)絡(luò)式伺服A6N 設(shè)置
    發(fā)表于 05-27 19:15
    MGMF<b class='flag-5'>552L1C</b>5-網(wǎng)絡(luò)式伺服A6N <b class='flag-5'>設(shè)置</b>例 松下

    MGMF552L1C6-網(wǎng)絡(luò)式伺服A6N 設(shè)置例 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MGMF552L1C6-網(wǎng)絡(luò)式伺服A6N 設(shè)置例相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有MGMF552L1C6-網(wǎng)絡(luò)式伺服A6N 設(shè)置
    發(fā)表于 05-28 18:35
    MGMF<b class='flag-5'>552L1C</b>6-網(wǎng)絡(luò)式伺服A6N <b class='flag-5'>設(shè)置</b>例 松下

    MGMF552L1C6M-網(wǎng)絡(luò)式伺服A6N 設(shè)置例 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MGMF552L1C6M-網(wǎng)絡(luò)式伺服A6N 設(shè)置例相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有MGMF552L1C6M-網(wǎng)絡(luò)式伺服A6N 設(shè)置
    發(fā)表于 05-28 18:51
    MGMF<b class='flag-5'>552L1C</b>6M-網(wǎng)絡(luò)式伺服A6N <b class='flag-5'>設(shè)置</b>例 松下

    stm32boot0和boot1對(duì)應(yīng)哪個(gè)p引腳

    STM32系列微控制器是一種廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域的32位微控制器。在STM32系列微控制器中,BOOT0和BOOT1是兩個(gè)重要的引腳,它們用于設(shè)
    的頭像 發(fā)表于 08-22 09:40 ?9457次閱讀

    單片機(jī)boot0和boot1怎么設(shè)置

    單片機(jī)Boot0和Boot1簡介 Boot0和Boot1是單片機(jī)啟動(dòng)模式選擇引腳,用于選擇單片機(jī)的啟動(dòng)模式。 Boot0和
    的頭像 發(fā)表于 08-22 09:50 ?8233次閱讀

    STM32C011開發(fā)(2)----nBOOT_SEL設(shè)置

    程序接口(UART、USB DFU、I2C、SPI和CAN)讀取、寫入及驗(yàn)證器件內(nèi)存。 STM32CubeProgrammer的功能廣泛,可以對(duì)STM32內(nèi)部存儲(chǔ)器(如Flash、RAM和OTP)以及外部存儲(chǔ)器進(jìn)行編程。
    的頭像 發(fā)表于 12-16 17:27 ?4597次閱讀
    <b class='flag-5'>STM32C</b>011<b class='flag-5'>開發(fā)</b>(<b class='flag-5'>2</b>)----nBOOT_<b class='flag-5'>SEL</b><b class='flag-5'>設(shè)置</b>

    STM32C552開發(fā)(1)----點(diǎn)亮LED

    STM32C552 & SENSOR是一款基于STM32C5系列微控制器的評(píng)估套件。該微控制器采用了40nm工藝制造,具有更快的FLASH訪問,更高的性能以及更低的功耗。此外,該套件具有豐富
    的頭像 發(fā)表于 06-08 11:08 ?336次閱讀
    <b class='flag-5'>STM32C552</b><b class='flag-5'>開發(fā)</b>(1)----點(diǎn)亮LED

    STM32C542開發(fā)(2)----BOOT_SEL設(shè)置

    內(nèi)置的 System Memory Bootloader,才能通過這些接口完成 Flash 燒錄。對(duì)于 STM32C5 系列來說,是否使用外部 BOOT0 引腳進(jìn)入 Bootloader,與 Option
    的頭像 發(fā)表于 06-08 11:09 ?350次閱讀
    <b class='flag-5'>STM32C</b>542<b class='flag-5'>開發(fā)</b>(<b class='flag-5'>2</b>)----<b class='flag-5'>BOOT_SEL</b><b class='flag-5'>設(shè)置</b>
    鹤壁市| 太康县| 商洛市| 牟定县| 荔浦县| 鲁甸县| 习水县| 樟树市| 柳州市| 磴口县| 浦县| 栾城县| 宜都市| 柯坪县| 新乡市| 浦江县| 湄潭县| 龙井市| 绥宁县| 崇阳县| 鹤峰县| 西峡县| 会昌县| 依安县| 襄汾县| 于田县| 新安县| 桂平市| 吴川市| 虎林市| 志丹县| 合肥市| 大连市| 盈江县| 樟树市| 邯郸县| 平凉市| 铜陵市| 明光市| 南通市| 宜州市|