stm32學習:(寄存器1)控制寄存器來讓led亮

  1. 開啟時鐘,先查找到開啟時鐘的寄存器,然后通過該寄存器操作時鐘的開啟或關閉,要打開的是GPIOA的時鐘
    1. 在芯片手冊,找到RCC寄存器描述章節
    2. 找到APB2外設時鐘使能寄存器(RCC_APB2ENR),現在算RCC_APB2ENR這個寄存器的地址,先知道RCC這個外設的基地址,然后加上這個寄存器的偏移地址就行了
      1. RCC外設及地址在寄存器組起始地址表中查到,叫做復位和時鐘控制(RCC),我查到的是0x40021000---0x400213FF,所以RCC這個外設的基地址為0x40021000
      2. 在APB2外設時鐘使能寄存器(RCC_APB2ENR)下面可以看到偏移地址為0x18
      3. 所以RCC_APB2ENR的地址為0x40021000+0x18
    3. 有了地址就可以寫入了
      1. 向第二位寫入1,就是寫入4
      2. 最終就是? *(uint32_t *)(0x40021000 + 0x18) = 4;
    4. 給IO口設置輸出模式
      1. 需要先找到GPIOA的基地址,再根據偏移地址找到要使用的寄存器的地址
      2. GPIOA的基地址在寄存器組起始地址表中查到,我查到的是0x40010800---0x40010BFF
      3. 配置PA0口的輸出模式的寄存器是GPIOA_CRL,推挽輸出就是寫入4
      4. 最后是? ?*(uint32_t *)(0x40010800 + 0x00) = 3;
    5. 給指定PA0口輸出0就可以點亮LED1了
      1. 寄存器是ODR數據輸出寄存器
      2. ODR寄存器的地址是 0x40010800 + 0x0c 。給這個地址的第0位寫0,其他位寫1
      3. 最后是? ??*(uint32_t *)((0x40010800 + 0x0c)) = 0xfffe;
    6. ST公司已經定義好外設寄存器地址,我們直接食用菌就好
      1. 最后是
        #include "stm32f10x.h"int main(void)
        {RCC->APB2ENR = 4;GPIOA->CRL = 3;GPIOA->ODR = 0xfffe;while (1){}
        }
        或者是
        #include "stm32f10x.h"int main(void)
        {/* 開啟GPIOA的時鐘 第2位置1*/RCC->APB2ENR |= 0x1 << 2;/* GPIOA_CRL的最后4位置 0011 */GPIOA->CRL &= ~(0x1 << 3);GPIOA->CRL &= ~(0x1 << 2);GPIOA->CRL |= 0x1 << 1;GPIOA->CRL |= 0x1 << 0;/* GPIOA_ODR的第0位置0 */GPIOA->ODR &= ~(0x1 << 0);while (1){}
        }
        或者是
        #include "stm32f10x.h"int main(void)
        {RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;GPIOA->CRL &= ~GPIO_CRL_CNF0_1;GPIOA->CRL &= ~GPIO_CRL_CNF0_0;GPIOA->CRL |= GPIO_CRL_MODE0_1;GPIOA->CRL |= GPIO_CRL_MODE0_0;GPIOA->ODR &= ~GPIO_ODR_ODR0;while (1){}
        }

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

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

相關文章

基于mcu固件反匯編逆向入門示例-stm32c8t6平臺

基于mcu固件反匯編逆向入門示例-stm32c8t6平臺 本文目標&#xff1a;基于mcu固件反匯編逆向入門示例-stm32c8t6平臺 按照本文的描述&#xff0c;應該可以在對應的硬件上通實驗并舉一反三。 先決條件&#xff1a;擁有C語言基礎&#xff0c;集成的開發環境&#xff0c;比如&am…

ES6及ESNext規范

1、let 和 const 而let引入了塊級作用域的概念, 創建setTimeout函數時&#xff0c;變量i在作用域內。對于循環的每個迭代&#xff0c;引用的i是i的不同實例。 暫時性死區&#xff1a;不允許變量提升 const就很簡單了, 在let的基礎上, 不可被修改 js 代碼解讀 for(var i0;i<…

《背包亂斗》為什么好玩 蘋果電腦怎么玩《背包亂斗》游戲 mac怎么玩steam windows游戲

在當今競爭激烈的游戲市場中&#xff0c;《背包亂斗》以其獨特的魅力在眾多作品中脫穎而出&#xff0c;吸引了大量玩家的關注和喜愛。其創新的游戲機制和不斷迭代的內容&#xff0c;加之出色的視覺效果和社區建設&#xff0c;使其成為了游戲界的一股清流。 一、《背包亂斗》為…

Hadoop學習記錄一

HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop項目的一部分&#xff0c;用于存儲海量數據。HDFS設計為可以在廉價硬件上運行&#xff0c;同時提供高容錯性。HDFS主要由三個關鍵角色組成&#xff1a;NameNode、DataNode和SecondaryNameNode。下面我用大白…

《絕區零》是一款什么類型的游戲,Mac電腦怎么玩《絕區零》蘋果電腦玩游戲怎么樣

米哈游的《絕區零》最近在網上爆火呀&#xff0c;不過很多人都想知道mac電腦能不能玩《絕區零》&#xff0c;今天麥麥就給大家介紹一下《絕區零》是一款什么樣的游戲&#xff0c;Mac電腦怎么玩《絕區零》。 一、《絕區零》是一款什么樣的游戲 《絕區零》是由上海米哈游自主研發…

Web前端-Web開發HTML基礎1-input

一. 基礎 1. 寫一個輸入框代碼&#xff0c;類型為密碼&#xff1b; 2. 寫一個輸入框代碼&#xff0c;類型為密碼&#xff1b; 3. 寫一個輸入框代碼&#xff0c;類型為密碼&#xff0c;名稱為"password"&#xff1b; 4. 寫一個輸入框代碼&#xff0c;類型為密碼&#…

ES快速開發,ElasticsearchRestTemplate基本使用以及ELK快速部署

最近博主有一些elasticsearch的工作&#xff0c;所以更新的慢了些&#xff0c;現在就教大家快速入門&#xff0c;并對一些基本的查詢、更新需求做一下示例&#xff0c;廢話不多說開始&#xff1a; 1. ES快速上手 es下載&#xff1a;[https://elasticsearch.cn/download/]()這…

Spring Boot集成Activity7實現簡單的審批流

由于客戶對于系統里的一些新增數據&#xff0c;例如照片墻、照片等&#xff0c;想實現上級逐級審批通過才可見的效果&#xff0c;于是引入了Acitivity7工作流技術來實現&#xff0c;本文是對實現過程的介紹講解&#xff0c;由于我是中途交接前同事的這塊需求&#xff0c;所以具…

uniapp開發釘釘小程序流程

下載開發工具 1、小程序開發工具 登錄釘釘開發平臺&#xff0c;根據自己的需求下載合適的版本&#xff0c;我這里下載的是Windows &#xff08;64位&#xff09;版本 小程序開發工具 - 釘釘開放平臺 2、HBuilder X HBuilderX-高效極客技巧 新建項目及相關配置 新建項目 …

Llama - Prompting

本文翻譯整理自&#xff1a;Prompting https://llama.meta.com/docs/how-to-guides/prompting/ 文章目錄 制作有效的提示明確說明風格化格式化限制 提示使用 Zero- and Few-Shot 學習Zero-Shot PromptingFew-Shot Prompting 基于角色的提示思維鏈技術Self-Consistency檢索-增強…

單臂路由組網實驗,單臂路由的定義、適用情況、作用

一、定義 單臂路由是指通過在路由器的一個接口上配置許多子接口,從而實現原來相互隔離的不同VLAN之間的互通。 子接口:把路由器上的實際的物理接口劃分為多個邏輯上的接口,這些被劃分的邏輯接口就是子接口。 二、適用情況 用在沒有三層交換機,卻要實現不同VLAN之間的互…

Github07-16 Python開源項目日報 Top10

根據Github Trendings的統計,今日(2024-07-16統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Python項目10C++項目1AutoGPT: 人工智能革命的先鋒 創建周期:486 天開發語言:Python協議類型:MIT LicenseStar數量:164105 個Fork數量:435…

axios 下載大文件時,展示下載進度的組件封裝——js技能提升

之前面試的時候&#xff0c;有遇到一個問題&#xff1a;就是下載大文件的時候&#xff0c;如何得知下載進度&#xff0c;當時的回復是沒有處理過。。。 現在想到了。axios中本身就有一個下載進度的方法&#xff0c;可以直接拿來使用。 下面記錄一下處理步驟&#xff1a; 參考…

深度學習 | CNN 基本原理

目錄 1?什么是 CNN2?輸入層3?卷積層3.1?卷積操作3.2?Padding 零填充3.3?處理彩色圖像 4?池化層4.1?池化操作4.2?池化的平移不變性 5?全連接層6?輸出層 前言 這篇博客不夠詳細&#xff0c;因為沒有介紹卷積操作的具體計算&#xff1b;但是它介紹了 CNN 各層次的功能…

golang AST語法樹解析

1. 源碼示例 package mainimport ("context" )// Foo 結構體 type Foo struct {i int }// Bar 接口 type Bar interface {Do(ctx context.Context) error }// main方法 func main() {a : 1 }2. Golang中的AST golang官方提供的幾個包&#xff0c;可以幫助我們進行A…

[雜談] 關于 Mac 電腦使用 Logitech 鼠標導致 Vscode 側鍵無法進行代碼前進、回退的問題

我個人使用的是一臺 14 寸的 Mac_Apple_M1&#xff0c;外接鍵盤顯示器羅技的 MX Master 3 for Mac 的鼠標。 之前一直使用的 GoLand 開發&#xff0c;查看代碼時進行代碼跳轉就很方便&#xff0c;滾輪鍵 進入函數方法&#xff0c;鼠標側鍵進行前進、后退。看代碼完全可以右手單…

【大模型入門】LLM-AI大模型介紹

大語言模型 (LLM) 背景 &#x1f379;大語言模型 (Large Language Model) 是一種人工智能模型, 它們通常包含數千億甚至更多的參數&#xff0c;并在大規模數據集上進行訓練。大語言模型可以處理多種自然語言任務&#xff0c;如文本分類、問答、翻譯、對話等等。 自然語言模型…

qt explicit 啥意思

explicit 在 Qt 和 C 中是一個關鍵字&#xff0c;主要用于修飾類的構造函數。其含義和用法可以歸納為以下幾點&#xff1a; 意義&#xff1a; explicit 英文直譯為“明確的”、“顯式的”。在 C 中&#xff0c;當一個構造函數只接受一個參數時&#xff0c;它可能會被編譯器用于…

【Nail it】ROS1 ROS2 通信(ros2/ros1_bridge)

情況說明&#xff1a;目標是實現ros2容器和ros1主機的通信&#xff0c;可以起一個ros1容器作為橋梁&#xff08;若是在一個主機同時包含ros1&ros2&#xff0c;配置更加方便&#xff09;. 1.起一個 noetic 的容器 docker run -it --network host --name my_bridge ros:noe…

Java中的成員內部類

Java中的成員內部類&#xff08;也稱為非靜態內部類&#xff09;是定義在另一個類&#xff08;外部類&#xff09;內部的類。 這種內部類與它的外部類之間有著緊密的聯系&#xff0c;主要體現在幾個方面&#xff1a;它可以訪問外部類的所有成員&#xff08;包括私有成員&#…