【ARMv7】開篇:掌握ARMv7架構Soc開發技能

? ? 本專欄,開始與大家共同總結使用ARMv7系列CPU的Soc開發技能。大概匯總了一下,后面再逐步完善下面的思維導圖。

??

? ? 簡單說說:與通用的ARMv7-A/R相比,以STM32F為代表的ARMv7-M架構有以下關鍵區別和重點

  1. 無MMU,有MPU:STM32F系列沒有內存管理單元(MMU),因此無法運行像Linux這樣需要虛擬內存管理的復雜操作系統。但它可以有內存保護單元(MPU),用于在RTOS(如FreeRTOS)中保護任務之間的內存空間,防止錯誤訪問。

  2. 高度集成的NVIC嵌套向量中斷控制器(NVIC)?是Cortex-M內核的一大亮點,它被集成在CPU內部。你對中斷的所有配置(優先級、使能、查詢狀態)都是通過訪問NVIC的存儲器映射寄存器來完成,非常高效和統一。這是STM32中斷編程的核心。

  3. 系統控制塊(SCB):這是操控CPU核心功能的模塊。對于STM32開發者來說,最常用的就是SCB->VTOR寄存器來重定義向量表地址(例如在IAP升級或運行OS時非常有用)。

  4. 開發模式:你幾乎永遠不會用純匯編來開發整個STM32項目。通常是C語言編寫,僅在啟動文件(.s)中用匯編完成最基礎的棧初始化、向量表定義和時鐘初始化跳轉。理解匯編是為了更好地調試和優化。

  5. 實踐核心:學習STM32F,在掌握了上述架構知識后,真正的實踐在于:

    • 理解啟動過程:從匯編啟動文件到main()函數之間發生了什么。

    • 精通中斷機制:如何編寫中斷服務函數、如何配置NVIC。

    • 熟練操作外設:本質上就是讀寫那些定義好的內存地址(寄存器)。

    • 使用CMSIS:這是一個由ARM制定的硬件抽象層標準,ST(意法半導體)提供的庫都基于此。它定義了訪問NVIC、SCB等內核寄存器的標準方式,讓你的代碼可以在不同Cortex-M廠商的芯片間移植。

? ? 總結:學習STM32F的ARMv7-M架構,重點是理解中斷機制(NVIC)、掌握存儲映射(知道外設寄存器在哪)、會配置核心功能(SCB)、掌握啟動流程、掌握程序運行原理、掌握片設片成技巧,并最終通過C語言和標準庫來高效地控制整個芯片。

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

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

相關文章

【學術會議論文投稿】JavaScript在數據可視化領域的探索與實踐

【ACM出版 | EI快檢索 | 高錄用】2024年智能醫療與可穿戴智能設備國際學術會議(SHWID 2024)_艾思科藍_學術一站式服務平臺 更多學術會議請看 學術會議-學術交流征稿-學術會議在線-艾思科藍 目錄 引言 JavaScript可視化庫概覽 D3.js基礎入門 1. 引入…

CSS基礎學習步驟

好的,這是一份為零基礎初學者量身定制的 **CSS 學習基礎詳細步驟**。我們將從最根本的概念開始,通過一步一步的實踐,帶你穩穩地入門。 第一步:建立核心認知 - CSS 是做什么的? 1. 理解角色: HTML&…

MTK Linux DRM分析(三十七)- MTK phy-mtk-hdmi.c 和 phy-mtk-hdmi-mt8173.c

一、簡介 HDMI PHY驅動 HDMI 的物理層接口主要就是 HDMI Type-A 接口(19 pin),除此之外還有 Type-B、Type-C(Mini HDMI)、Type-D(Micro HDMI)、Type-E(車載專用)。 1. HDMI Type-A(常見 19-pin 標準接口) HDMI Type-A Connector Pinout ========================…

【人工智能學習之MMdeploy部署踩坑總結】

【人工智能學習之MMdeploy部署踩坑總結】報錯1:TRTNet: device must be a GPU!報錯2:Failed to create Net backend: tensorrt報錯3:Failed to load library libonnxruntime_providers_shared.so1. 確認庫文件是否存在2. 重新安裝 ONNX Runti…

力扣516 代碼隨想錄Day16 第一題

找二叉樹左下角的值class Solution { public:int maxd0;int result;void traversal(TreeNode* root,int depth){if(root->leftNULL&&root->rightNULL){if(depth>maxd){maxddepth;resultroot->val;}}if(root->left){depth;traversal(root->left,depth…

網格圖--Day07--網格圖DFS--LCP 63. 彈珠游戲,305. 島嶼數量 II,2061. 掃地機器人清掃過的空間個數,489. 掃地機器人,2852. 所有單元格的遠離程度之和

網格圖–Day07–網格圖DFS–LCP 63. 彈珠游戲,305. 島嶼數量 II,2061. 掃地機器人清掃過的空間個數,489. 掃地機器人,2852. 所有單元格的遠離程度之和 今天要訓練的題目類型是:【網格圖DFS】,題單來自靈茶山…

多功能修改電腦機器碼序列號工具 綠色版

多功能修改電腦機器碼序列號工具 綠色版電腦機器碼序列號修改軟件是一款非常使用的數據化虛擬修改工具。機器碼修改軟件可以虛擬的定制您電腦上的硬件信息,軟件不會對您的電腦造成傷害。軟件不需要您有專業的知識,就可以模擬一份硬件信息。機器碼修改軟…

React Hooks深度解析:useState、useEffect及自定義Hook最佳實踐

React Hooks自16.8版本引入以來,徹底改變了我們編寫React組件的方式。它們讓函數組件擁有了狀態管理和生命周期方法的能力,使代碼更加簡潔、可復用且易于測試。本文將深入探討三個最重要的Hooks:useState、useEffect,以及如何創建…

期權平倉后權利金去哪了?

本文主要介紹期權平倉后權利金去哪了?期權平倉后權利金的去向需結合交易角色(買方/賣方)、平倉方式及市場價格變動綜合分析,具體可拆解為以下邏輯鏈條。期權平倉后權利金去哪了?1. 買方平倉:權利金的“差價…

2025國賽C題題目及最新思路公布!

C 題 NIPT 的時點選擇與胎兒的異常判 問題 1 試分析胎兒 Y 染色體濃度與孕婦的孕周數和 BMI 等指標的相關特性,給出相應的關系模 型,并檢驗其顯著性。 思路1:針對附件中孕婦的 NIPT 數據,首先對數據進行預處理,并對多…

NLP技術爬取

“NLP技術爬取”這個詞組并不指代一種單獨的爬蟲技術,而是指將自然語言處理(NLP)技術應用于網絡爬蟲的各個環節,以解決傳統爬蟲難以處理的問題,并從中挖掘出更深層次的價值。簡單來說,它不是指“用NLP去爬”…

讓錄音變得清晰的軟件:語音降噪AI模型與工具推薦

在數字內容創作日益普及的今天,無論是播客、線上課程、視頻口播,還是遠程會議,清晰的錄音質量都是提升內容專業度和觀眾體驗的關鍵因素之一。然而,由于環境噪音、設備限制等因素,錄音中常常夾雜各種干擾聲音。本文將介…

大話 IOT 技術(1) -- 架構篇

文章目錄前言拋出問題現有條件初步設想HTTP 與 MQTT中間的服務端完整的鏈路測試的虛擬設備實現后話當你迷茫的時候,請點擊 物聯網目錄大綱 快速查看前面的技術文章,相信你總能找到前行的方向 前言 Internet of Things (IoT) 就是物聯網,萬物…

【wpf】WPF 自定義控件綁定數據對象的最佳實踐

WPF 自定義控件綁定數據對象的最佳實踐:以 ImageView 為例 在 WPF 中開發自定義控件時,如何優雅地綁定數據對象,是一個經常遇到的問題。最近在實現一個自定義的 ImageView 控件時,我遇到了一個典型場景: 控件內部需要使…

[Dify 專欄] 如何通過 Prompt 在 Dify 中模擬 Persona:即便沒有專屬配置,也能讓 AI 扮演角色

在 AI 應用開發中,“Persona(角色扮演)”常被視為塑造 AI 個性與專業邊界的重要手段。然而,許多開發者在使用 Dify 時會疑惑:為什么我在 Chat 應用 / Agent 應用 / Workflow 里都找不到所謂的 Persona 配置項? 答案是:Dify 平臺目前并沒有內建的 Persona 配置入口。角色…

解決雙向循環鏈表中對存儲數據進行奇偶重排輸出問題

1. 概念 對鏈表而言,雙向均可遍歷是最方便的,另外首尾相連循環遍歷也可大大增加鏈表操作的便捷性。因此,雙向循環鏈表,是在實際運用中是最常見的鏈表形態。 2. 基本操作 與普通的鏈表完全一致,雙向循環鏈表雖然指針較多,但邏輯是完全一樣。基本的操作包括: 節點設計 初…

Kubernetes集群升級與etcd備份恢復指南

目錄 Kubernetes etcd備份恢復 集群管理命令 環境變量 查看etcd版本 查看etcd集群節點信息 查看集群健康狀態 查看告警事件 添加成員(單節點部署的etcd無法直接擴容)(不用做) 更新成員 刪除成員 數據庫操作命令 增加(put) 查詢(get) 刪除(…

【LeetCode熱題100道筆記】旋轉圖像

題目描述 給定一個 n n 的二維矩陣 matrix 表示一個圖像。請你將圖像順時針旋轉 90 度。 你必須在 原地 旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉圖像。 示例 1:輸入:matrix [[1,2,3],[4,5,6],[7,8,9]…

SpringBoot【集成p6spy】使用p6spy-spring-boot-starter集成p6spy監控數據庫(配置方法舉例)

使用p6spy-spring-boot-starter集成p6spy監控數據庫1.簡單說明2.核心依賴3.主要配置4.簡單測試5.其他配置1.簡單說明 p6spy 類似于 druid 可以攔截 SQL 可以用于項目調試,直接引入 p6spy 的博文已經很多了,這里主要是介紹一下 springboot 使用 p6spy-sp…

擴散模型的優化過程,主要的公式推導,主要是熟悉一下整體的理論框架

核心思想與定義 擴散模型的核心思想是:學習一個去噪過程,以逆轉一個固定的加噪過程。前向過程(固定): 定義一個馬爾可夫鏈,逐步向數據 x0~q(x0)\mathbf{x}_0 \sim q(\mathbf{x}_0)x0?~q(x0?) 添加高斯噪…