RCC_APB2PeriphClockCmd

RCC_APB2PeriphClockCmd?函數在STM32的標準外設庫中扮演著“電源開關”的角色。要理解這個函數,我們需要明白STM32微控制器的幾個關鍵概念:

1. 外設時鐘與低功耗設計

STM32內部有非常多的外設,如GPIO(A, B, C...D)、USART1、SPI1、ADC1、定時器1等。為了讓芯片更加節能,每個外設都有一個獨立的時鐘開關。默認情況下,當你給芯片上電后,所有這些外設的時鐘都是關閉的,以節省功耗。在你想要使用某個外設(比如想點亮一個LED,需要使用GPIO)之前,你必須先打開這個外設的時鐘。否則,外設無法工作,你的程序也無法驅動它。這就像你想用一個電器,必須先插上電源插頭一樣。

2. 總線架構

STM32內部通過“總線”來連接CPU核心和各種外設。APB2(Advanced Peripheral Bus 2)是其中一條總線,它負責連接一些高速或系統關鍵的外設RCC_APB2PeriphClockCmd?就是專門管理這條總線上的外設時鐘開關的函數。常見掛在APB2總線上的外設有:

  • 所有GPIO端口?(GPIOA, GPIOB, ... GPIOG)

  • 高級定時器?(TIM1, TIM8, TIM9, TIM10, TIM11)

  • 串口1?(USART1)

  • ADC1/ADC2/ADC3

  • SPI1

  • 系統配置控制器?(SYSCFG)

  • ...

3. 函數參數

該函數通常有兩個參數:

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
  • RCC_APB2Periph:指定要操作哪個外設的時鐘。這是一個宏定義,例如:

    • RCC_APB2Periph_GPIOA

    • RCC_APB2Periph_USART1

    • RCC_APB2Periph_TIM1

    • 你可以使用?|?符號同時開啟多個外設的時鐘,例如?RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB

  • NewState:指定是開啟還是關閉。

    • ENABLE?- 打開時鐘(相當于接通電源)

    • DISABLE?- 關閉時鐘(相當于切斷電源以省電)

假設你想使用GPIOA的第5引腳來驅動一個LED,并且使用USART1進行串口通信。

在你的程序初始化部分,你必須先開啟它們的時鐘:

// 在main()函數的開始,初始化外設之前// 1. 開啟GPIOA的時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 2. 開啟USART1的時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);// 3. 也可以一次性同時開啟GPIOA和USART1的時鐘
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);// ... 在這之后,才能繼續初始化GPIO和USART的參數
GPIO_Init(...);
USART_Init(...);

常見錯誤

  1. 忘記開啟時鐘:這是初學者最常犯的錯誤。癥狀是代碼邏輯看起來完全正確,但外設就是毫無反應。任何外設的使用第一步都是開啟其時鐘

  2. 搞錯總線:除了APB2,還有APB1、AHB等總線。不同的外設掛在不同總線上。

    • APB1:連接的是低速外設,如USART2/3、I2C1/2、SPI2、定時器2/3/4/5/6/7等。操作它們需要使用?RCC_APB1PeriphClockCmd()?函數。

    • 在使用函數前,最好查一下數據手冊或編程手冊,確認外設掛在哪條總線上。

總結

項目說明
函數名RCC_APB2PeriphClockCmd
所屬庫STM32標準外設庫 (SPL)
功能啟用或禁用APB2總線上的外設時鐘
重要性至關重要,使用任何外設前必須先調用此函數或其等效函數來開啟時鐘
類比給外設接通電源

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94832.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94832.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94832.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用大語言模型實現語音到語音翻譯的新方法:Scheduled Interleaved Speech-Text Training

用大語言模型實現語音到語音翻譯的新方法:Scheduled Interleaved Speech-Text Training 在人工智能領域,語音到語音翻譯(Speech-to-Speech Translation, S2ST)一直是極具挑戰性的任務。傳統的做法是將語音識別、文本翻譯和語音合成三個步驟串聯起來,而近年來,端到端的S2…

LLM學習:langchain架構——模型IO

1、什么是模型IO模型 I/O(Model I/O) 是 LangChain 框架中最核心的模塊之一,負責處理與語言模型(LLM)交互的輸入構建、模型調用和輸出解析全流程。它主要分為三個模塊:Prompts(輸入構建&#xf…

Windows系統下python新一代三方庫管理工具uv及VSCode配置

python新一代三方庫管理工具uv uv是什么? uv是用RUST語言寫的一個python三方庫和項目管理工具,詳見官網(uv)。 uv的安裝 官網上提供了兩種安裝方式,第一種需要在PS終端里運行一下命令進行安裝: powersh…

Node.js 多版本管理工具 nvm 的安裝與使用教程(含鏡像加速與常見坑)

適用人群:前端/后端/全棧開發者,Mac/Linux/Windows(nvm-windows)用戶;需要在多項目間快速切換 Node 版本、或在國內網絡環境下穩定安裝 Node。一、為什么要用 nvm?一機多版本:不同項目依賴不同 …

Unity Shader unity文檔學習筆記(二十一):幾種草體的實現方式(透明度剔除,GPU Instaning, 曲面細分+幾何著色器實現)

1.透明度剔除(性能較差,不同顏色時需要不同材質會導致多個dc) clip(_Color.a - _Cutoff); 傳入值為0時 剔除 類似的草體效果: 2.GPU Instaning(可以自定義一次性合批最多1023個,能夠傳遞顏色值等等(做草…

UX 設計入門終章:讓洞察落地!用用戶流程圖、IA 和旅程圖,設計用戶與產品的互動故事

歡迎來到本系列課程的最后一課。 如果你把之前的學習比作是繪制一份建筑藍圖,那么今天,你將根據自己收集到的所有用戶數據,描繪出空間布局(用戶流程圖)、理清結構關系(信息架構),并最…

【RAG知識庫實踐】向量數據庫VectorDB

一、概述 1.1 什么是向量庫 向量數據庫是一種專門為存儲、索引和查詢高維向量數據而優化的數據庫系統。與傳統的關系型數據庫不同,向量數據庫將數據映射到向量空間中,使得數據的相似性計算、聚類、分類和檢索變得更加高效和精確 向量數據庫一般包括以下幾個部分:索引、查詢…

EasyExcel 3.x 導出動態表頭,動態sheet頁

動態導出sheet頁Overridepublic void exportAnswerListV1(HttpServletResponse response, SmtSurveyUserAnswerRecord smtSurveyUserAnswerRecord) {// 1. 準備問卷數據String formType smtSurveyUserAnswerRecord.getFormType();if (ObjectUtil.isEmpty(formType)) {throw ne…

重學JS-004 --- JavaScript算法與數據結構(四)JavaScript 表單驗證

文章目錄HTMLlabel 屬性input 屬性button 屬性fieldset 屬性select 屬性option 屬性div 屬性scriptgetElementByIdquerySelectorAllnull循環模版文字函數事件監聽器regex舉例StringMathArrayHTML HTML 屬性應該用雙引號引起來。 label 屬性 for“” input 屬性 id“” typ…

本地搭建 Redis/MySQL 并配置國內鏡像加速(Docker/原生安裝 | macOS/Linux/Windows)

適用人群:前端/后端/數據/測試工程師;需要在單機上快速搭建 Redis 與 MySQL 的開發環境;同時在國內網絡環境下加速下載(容器鏡像、系統包倉庫)。文章結構:一圖流 → TL;DR → Docker 方式 → 原生安裝&…

SynClub-百度在海外推出的AI社交產品

本文轉載自:SynClub-百度在海外推出的AI社交產品 - Hello123工具導航 ** 一、🤖 SynClub 是什么? SynClub 是百度出海的 AI 社交產品,主打 "打造專屬 AI 朋友" 的創新概念,讓你在虛擬世界擁有真正懂你的貼…

Easy Rules規則引擎:輕量級Java規則處理實踐指南

引言:業務規則與代碼解耦的藝術 在現代軟件開發中,業務規則頻繁變更與核心邏輯穩定性之間的矛盾日益突出。傳統硬編碼的if-else語句在面對復雜業務場景時會導致: 代碼臃腫:成百上千的條件分支難以維護 耦合度高:業務邏輯與系統架構深度綁定 變更成本高:微小規則調整需要…

機器人 - 無人機基礎(5) - 飛控中的傳感器

目錄 一、加速度計 1.1 加速度計原理 1.2 加速度計校準 1.2.1 誤差模型 1.2.2 關于MPU6050校準方式 與 代碼思路 二、陀螺儀 2.1 陀螺儀原理 2.1.1 科里奧利力 2.1.2 陀螺儀原理 2.2 陀螺儀校準 三、加速度計與陀螺儀濾波部分 四、磁力計 4.1 磁力計原理 4.2 磁力…

PHP - 線程安全 - 疑問與答案

線程安全問題(多線程環境需加鎖) 怎么理解 php有線程安全問題嗎要理解 PHP 中的線程安全問題,需要結合 PHP 的運行模式和線程安全的本質來分析:1. 線程安全的本質線程安全問題的核心是:當多個線程同時訪問共享資源&…

使用腳本進行監測以nginx狀態頁為例

1、首先打開nginx的狀態頁 location /nginx_status {stub_status on;}2、進行訪問測試 curl http://127.0.0.1/nginx_statusActive connections: 1 server accepts handled requests1 1 1 Reading: 0 Writing: 1 Waiting: 03、在客戶端編寫腳本進行數據采集 編寫腳本方便采集不…

prettier、eslint、stylelint在項目中使用

prettier 1)vscode中使用 a. 安裝插件(Prettier)安裝成功后,在你打開支持的文件時,下方文件信息狀態欄會有prettier標致:雙擊它或者直接在輸出命令窗口那里查看prettier的日志信息:從日志這里可以看出,它是…

【C++】類對象內存布局與大小計算

1. 計算類對象的大小類實例化的對象中只存儲成員變量,不存儲成員函數,函數要用是通過 this 指針拿的。因為一個類可以實例化出 N 個對象,每個對象的成員變量都可以存儲不同的值,但是調用的函數卻是同一個。如果每個對象都成員函數…

容易忽視的TOS無線USB助手配網和接入USB使用: PC和TOS-WLink需要IP暢通,

引言:我們常常把重心放在了TOS-WLink的加入路由器,獲取IP;常常忽視了其實是要求PC和TOS-WLink需要IP暢通TOS無線USB助手首次藍牙配網, 無線接入USB設備到電腦, 分為是兩個過程:1, 藍牙連接TOS-WLink,如果配置的WIF…

學習Python中Selenium模塊的基本用法(7:元素操作-1)

定位網頁元素后,Selenium模塊支持點擊、發送文本或按鍵、清除內容等操作。本文以百度網站為例學習并測試這幾類操作的基本用法。首先是發送文本或按鍵,主要用到send_keys函數,如果是發送文本,則直接將文本內容作為函數入參即可&am…

使用MP4視頻格式鏈接地址的自適應視頻彈窗實現方案HTML代碼

以下是使用MP4視頻格式鏈接地址的自適應視頻彈窗實現方案:視頻彈窗播放器 使用原生MP4視頻格式鏈接,直接通過HTML5 video元素播放 響應式設計適配不同屏幕尺寸,16:9視頻比例保持不變 底部視頻列表可橫向滾動,點擊縮略圖切換不同視…