STM32——新建工程并使用寄存器以及庫函數進行點燈

本文是根據江協科技提供的教學視頻所寫,旨在便于日后復習,同時供學習嵌入式的朋友們參考,文中涉及到的所有資料也均來源于江協科技(資料下載)。

新建工程并使用寄存器以及庫函數進行點燈操作

    • 新建工程步驟
    • 1.建立工程
    • 2.配置寄存器進行點燈操作
    • 3.添加庫函數
      • 使用庫函數進行點燈操作

新建工程步驟

  • 建立工程文件夾,Keil中新建工程,選擇型號
  • 工程文件夾中建立Start、Library、User等文件夾,復制固件庫里的文件到工程文件夾
  • 在工程里對應建立Start、Library、User等同名稱的分組,然后將文件夾內的文件添加到工程分組里(Keil不能直接添加文件夾,所以需要建立組進行添加相應文件。.h文件不參與編譯過程,但是為了方便看,也加入了.h文件)
  • 工程選項中,C/C++, Include Paths內需要聲明所有包含頭文件的文件夾(Start、Library都是自己建的,Keil軟件并不知道,所以必須申明路徑,將所有新建文件夾都進行申明,這樣不會出現.h文件找不到的情況)
  • 工程選項中,C/C++, Define內定義USE_STDPERIPH_DRIVER(使用庫函數就必須定義USE_STDPERIPH_DRIVER)
  • 工程選項中,Debug, 下拉列表選擇對應調試器,Settings,Flash Download里勾選Reset and Run

在這里插入圖片描述

conf.h包含了所有庫函數的頭文件
在stm32f10x.h最后包含了conf.h,所以在使用庫函數時,只需要包含stm32f10x.h這一頭文件,就相當于包含了所有庫函數的頭文件

在這里插入圖片描述

1.建立工程

建立工程文件夾,Keil中新建工程,選擇型號

在這里插入圖片描述

STM32是從啟動文件開始執行的,所以新建工程時首先加的就是啟動文件。啟動文件有很多類,需要根據芯片型號選擇對應的啟動文件。STM32F103需要選擇帶有LD、MD、HD、XL的啟動文件

在這里插入圖片描述

找到STM32的啟動文件,復制所有的啟動文件

在這里插入圖片描述

在工程文件目錄下新建一個文件夾Start,用來存放啟動文件

在這里插入圖片描述

回到固件庫中STM32F10x目錄下,復制下面三個文件到剛剛新建的文件夾Start中

在這里插入圖片描述

cm3文件是內核寄存器的描述,同樣復制到Start目錄下

在這里插入圖片描述

此時,你的新建文件夾中應該包含這些文件

在這里插入圖片描述

在Keil5中,將Source Group1重命名為Start(選中,單擊進行修改),右鍵Add Existing Files to Group’Start’

在這里插入圖片描述

在這里插入圖片描述

CTRL選中所有.c以及.h文件,點擊添加,添加好的文件如下,這些文件是只讀文件

在這里插入圖片描述

接著需要在工程選項里添加Start文件夾的頭文件路徑,否則無法找到.h文件

在這里插入圖片描述

這樣就添加好了該文件夾的頭文件路徑
在這里插入圖片描述

寫一個main函數測試該工程是否可行。打開工程文件夾,新建一個User文件夾

在這里插入圖片描述

右鍵Target 1,點擊Add Group,新建好的組改為User

在這里插入圖片描述

右鍵User,點擊Add New item to Group ‘user’

在這里插入圖片描述

在這里插入圖片描述

在main.c中右鍵插入頭文件

在這里插入圖片描述

文件的最后一行必須是空行,否則會warning。寫好之后點擊編譯變建立工程按鈕,0 Error,0 Warning說明工程沒有問題

在這里插入圖片描述

該工程目前是一個基于寄存器開發STM32的工程(還沒有添加STM32的庫函數)

2.配置寄存器進行點燈操作

如何調整字體

在這里插入圖片描述

為了防止中文亂碼問題,選擇UTF-8編碼

在這里插入圖片描述

按照下圖進行連接,STLINK插在電腦上,電源燈應該會常亮,另一個連接在PC13口上的燈默認閃爍狀態

在這里插入圖片描述

在Keil中配置調試器

在這里插入圖片描述

重新編譯,沒有錯誤

在這里插入圖片描述

點擊Load,程序會下載到STM32中,板子的燈不再閃爍

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

以上就是通過配置寄存器進行點燈的過程,需要不斷查詢手冊進行配置,比較麻煩

3.添加庫函數

為了存放庫函數,在工程文件目錄下新建文件夾Library
找到固件庫目錄下的src以及inc,將目錄下內容全部復制到工程文件目錄下新建的Library中

在這里插入圖片描述

在這里插入圖片描述

在Keil5中右鍵Target新建組,改名為Library,右鍵Add Existing Files to Group’Start’,CTRL全部添加。這樣就添加好了所有的庫函數文件,但是還不能使用

在這里插入圖片描述

在固件庫目錄下找到STM32F10x_StdPeriph_Template文件,復制以下三個文件

在這里插入圖片描述

將復制的三個文件添加到工程目錄下User文件夾中

在這里插入圖片描述

在User組中添加剛剛復制的三個文件

在這里插入圖片描述

在這里插入圖片描述

最后還需要一個宏定義,右鍵打開文件

在這里插入圖片描述

找到 USE_STDPERIPH_DRIVER

在這里插入圖片描述

在這里插入圖片描述

基于庫函數的工程就建好了
我們只能對User組中的文件修改,通過以下步驟可以更改文件夾順序

在這里插入圖片描述

使用庫函數進行點燈操作

右鍵可以跳轉到函數定義,選中,使用CTRL F,查找
經過函數的包裝,就不需要查詢手冊來確定某一位的功能,而且庫函數的配置不會影響到寄存器的其他位。只需要調用庫函數,按照提示,填好參數即可

在這里插入圖片描述

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

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

相關文章

Unocss 類名基操, tailwindcss 類名

這里只列出 unocss 的可實現類名&#xff0c;tailwindcss 可以拿去試試用 1. 父元素移入&#xff0c;子元素改樣式 <!-- 必須是 group 類名 --> <div class"group"><div class"group-hover:color-red">Text</div> </div>2…

深度學習入門(一)

一、簡介 深度學習是機器學習領域新興且關鍵的研究方向。機器學習重點在于讓計算機從數據中挖掘規律以預測未知&#xff0c;而深度學習借助構建多層神經網絡&#xff0c;自動學習數據的復雜特征&#xff0c;從而實現更精準的模式識別&#xff0c;在圖像、語音等眾多領域廣泛應…

element-plus中,Steps 步驟條組件的使用

目錄 一.基本使用 1.代碼 2.效果展示 3.代碼解讀 二.案例&#xff1a;修改用戶的密碼 1.期望效果 2.代碼 3.展示效果 結語 一.基本使用 1.代碼 從官網復制如下代碼&#xff1a; <template><div><el-stepsstyle"max-width: 600px":space&quo…

jax 備忘錄

https://zhuanlan.zhihu.com/p/532504225 https://docs.jax.dev/en/latest/index.html

NLTK 基礎入門:用 Python 解鎖自然語言處理

自然語言處理&#xff08;NLP&#xff09;是人工智能領域的重要分支&#xff0c;它讓計算機能夠理解、處理和生成人類語言。而 NLTK&#xff08;Natural Language Toolkit&#xff09; 作為 Python 生態中最經典的 NLP 庫之一&#xff0c;提供了豐富的工具和資源&#xff0c;是…

ElementUI中checkbox v-model綁定值為布爾、字符串或數字類型

這篇博客介紹了在Vue.js中使用El-Checkbox組件時&#xff0c;如何設置和處理v-model的布爾值和類型轉換。通過示例代碼展示了如何設置true-label和false-label屬性來改變選中狀態的值&#xff0c;適用于需要特定類型&#xff08;如字符串或整數&#xff09;的場景。v-model不能…

JBoss 項目修復筆記:繞開 iframe 安全問題,JSF 與 Angular 最小代價共存方案

JBoss 項目修復筆記&#xff1a;繞開 iframe 安全問題&#xff0c;JSF 與 Angular 最小代價共存方案 本篇筆記銜接的內容為&#xff1a;JBoss WildFly 本地開發環境完全指南&#xff0c;里面簡單的描述了一下怎么配置 docker&#xff0c;在本地啟動一個可以運行的 JBoss 和 W…

Linux文件時間戳詳解:Access、Modify、Change時間的區別與作用

在 Linux 系統中&#xff0c;文件的這三個時間戳&#xff08;Access、Modify、Change&#xff09;分別表示不同的文件狀態變更時間&#xff0c;具體含義如下&#xff1a; 1. Access Time (Access) 含義&#xff1a;文件最后一次被訪問的時間&#xff08;讀取內容或執行&#xf…

SpringBoot項目打包為window安裝包

SpringBoot項目打包為window安裝包 通過jpackage及maven插件的方式將springboot項目打包為exe或msi pom.xml 添加插件 <plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>3.1.0</vers…

pip永久換鏡像地址

要將 pip 永久設置為阿里云鏡像源&#xff0c;可以通過修改 pip 的全局配置文件來實現。以下是具體步驟&#xff1a; 步驟 1&#xff1a;創建或修改 pip 配置文件 根據你的操作系統&#xff0c;配置文件的路徑略有不同&#xff1a; Linux/macOS 配置文件路徑&#xff1a;~/.…

PI0 Openpi 部署(僅測試虛擬環境)

https://github.com/Physical-Intelligence/openpi/tree/main 我使用4070tisuper, 14900k,完全使用官方默認設置&#xff0c;沒有出現其他問題。 目前只對examples/aloha_sim進行測試&#xff0c;使用docker進行部署, 默認使用pi0_aloha_sim模型(但是文檔上沒找到對應的&…

XAttention

XAttention: Block Sparse Attention with Antidiagonal Scoring 革新Transformer推理的高效注意力機制資源?? ??論文鏈接??&#xff1a;XAttention: Block Sparse Attention with Antidiagonal Scoring ??代碼開源??&#xff1a;GitHub倉庫 XAttention是韓松團隊提…

前端中的浮動、定位與布局

在前端開發中&#xff0c;布局是構建網頁結構的基礎。而浮動&#xff08;float&#xff09;、定位&#xff08;position&#xff09;以及各種布局方法則是實現網頁布局的關鍵工具。 一、浮動&#xff08;Float&#xff09; 浮動是CSS中用于控制元素在頁面中排列方式的一種屬性…

Linux 動、靜態庫的實現

前言&#xff1a;當我們寫了一段代碼實現了一個方法&#xff0c;如果我們不想把方法的實現過程暴露給別人看&#xff0c;可以把代碼打包成一個庫&#xff0c;其中形成后綴為.a的是靜態庫&#xff0c;后綴為.so的為動態庫&#xff1b;當別人想使用你的方法時&#xff0c;把打包好…

ubuntu--字體設置

樣式和字體大小 在終端右鍵-->選擇"Preferences"-->勾選"Custom font": 選擇自己喜歡的樣式&#xff0c;然后通過size滑動條調整字體大小&#xff0c;選擇即可&#xff1a;

Qt核心知識總結

Qt核心知識總結 Qt 是一個功能強大、跨平臺的 C 應用程序開發框架&#xff0c;廣泛應用于圖形用戶界面&#xff08;GUI&#xff09;應用程序的開發&#xff0c;同時也支持非 GUI 應用程序的開發。本文將從入門到精通的角度&#xff0c;詳細解析 Qt 的核心知識點&#xff0c;幫…

Linux 進程概念補充 (自用)

進程概念 內核進程進程狀態內存泄漏進程調度。Linux真實調度算法環境變量 內核 狹義上的操作系統指的是 內核就是進程管理進程調度&#xff0c;文件系統等等。 廣義上的操作系統其實在外殼指令這些。封裝了系統調用的東西。 進程 課本概念程序的一個基本實例 內核觀點&#…

【dify實戰】agent結合deepseek實現基于自然語言的數據庫問答、Echarts可視化展示、Excel報表下載

使用dify agent實現數據庫智能問答&#xff0c;echarts可視化展示&#xff0c;excel報表下載 觀看視頻&#xff0c;您將學會 在dify下如何快速的構建一個agent&#xff0c;來完成數據分析工作&#xff1b;如何在AI的回復中展示可視化的圖表&#xff1b;如何在AI 的回復中加入E…

macos下 ~/.zshrc~ 和 ~/.zshrc

macos下 ~/.zshrc~ 和 ~/.zshrc ~/.zshrc通常是備份文件或臨時文件&#xff0c;可能由編輯器&#xff08;如vim&#xff09;創建&#xff0c;通常可以安全刪除&#xff0c;不會影響系統運行。 在Mac下&#xff0c;這種帶~后綴的備份文件通常是由以下情況產生&#xff1a; 常…

位運算---總結

位運算 基礎 1. & 運算符 : 有 0 就是 0 2. | 運算符 : 有 1 就是 1 3. ^ 運算符 : 相同為0 相異為1 and 無進位相加位運算的優選級 不用在意優先級,能加括號就加括號給一個數 n ,確定它的二進制位中第 x 位是 0 還是 1? 規定: 題中所說的第x位指:int 在32位機器下4個…