stm32開發筆記(二):stm32系列使用V3.5固件庫的幫助文件以及GPIO基本功能(一)


前言

  stm32系列是最常用的單片機之一,不同的版本對應除了引腳、外設、頻率、容量等’不同之外,其開發的方法是一樣的。
  本章講解使用庫函數使用GPIO引腳功能。

 

補充

  本文章為多年前學習方法總結,基本是一通百通(PS:學的是方法而不是技術本身)。

 

stm32系列幫助文件GPIO手把手詳細解說

  編寫GPIO功能,建議初學者學習幫助文件中的案例。
  在這里插入圖片描述
  這是固件庫V3.4中的GPIO源文件,而V3.5中的資源文件使用的不是固件庫,V3.4這個文件明顯是GPIO操作LED的,所以本人認為應是V3.5的固件庫的.chm幫助文檔有問題,V3.5的部分代碼截圖如下:
  在這里插入圖片描述

  可以看出,其函數體根本沒有使用固件庫,而是使用寄存器,然后我們這個源文件部分使用V3.4版本的固件庫作為參考,繼續往下走:
  在這里插入圖片描述

  再點擊
  在這里插入圖片描述

  看代碼,然后我們跟着代碼來詳細看整個文件,我們不管注釋。
  在這里插入圖片描述

  00022行是固件庫頭文件,而00023行是官方評估板的頭文件,這個對我們肯定是不用的,是與使用的具體的硬件定義有關的宏定義,繼續往下走
  在這里插入圖片描述

  00037行是定義GPIO初始化的結構體,要操作任何外設都得先過它初始化
  在這里插入圖片描述

  00040行是延遲函數
  在這里插入圖片描述
  00049行進入主函數,也是程序開始執行的入口,注意看注釋,時鍾已經通過啟動文件中調用SystemInit()函數配置好(在未配置固件庫時,只添加啟動代碼和main函數,會報錯沒有定義SystemInit函數,這就很好的解釋了此處為什么沒有配置時鍾,詳細了解請查看QQ21497936空間中STM32新手問題解決方法),繼續往下看
  在這里插入圖片描述

  (注意:這個注釋,這個注釋的意思是將端口全部初始化成模擬輸入模式,這樣可以減少耗電以及增加硬件的抗干擾性能)
  00061,00062,00063行是使能外設GPIOA,GPIOB,GPIOC,GPIOD,GPIOE的外設時鍾。
  00065行是選中所有引腳(引腳0至引腳15)
  00066行是輸入輸出模式為模擬輸入
  在這里插入圖片描述
  00076行至00082行之間,當定義了宏STM3210E_EVAL或者USE_STM32100E_EVAL則將端口GPIOF,GPIOG也初始化,我們可以判斷這兩個宏是官方配套的評估板上才有的F端口和G端口,其用的引腳至少144引腳及以上的芯片。
  在這里插入圖片描述
  這個是配套版初始化的LED1,LED2,LED3,LED4這樣我們可以判斷,這個函數是初始化指定端口的一個引腳,至於是哪個引腳肯定在評估板頭文件有相關的宏定義,那么我們深入先點開STM_EVAL_LEDInit這個函數,查看它的源代碼
  在這里插入圖片描述
  跟我們之前預想的一樣,定義一個結構體,使能外設,指定引腳,推挽輸出,50MHz的頻率,初始化;至於Led_TypeDef這個結構和GPIO_CLK,GPIO_PORT應都是與評估板有關的宏定義。我們關心的重點在於聲明結構體,使能時鍾,配置引腳,然后初始化,我們還是把開發板這個宏定義截圖出來,便於大家理解,我們查找一次LED1定義,來看看LED1是哪個端口的哪個引腳,是如何完成配置的
  在這里插入圖片描述
  LED1宏的實際值為0;
  在這里插入圖片描述
  LED1帶入LEDn,實際值為0,c語言數組,則GPIO_CLK[LED1]實際上是LED1_GPIO_CLK,
  在這里插入圖片描述
  它的宏定義為C端口,我們再看看引腳:
  在這里插入圖片描述
  GPIO_PIN[LED1]實際為GPIO_PIN [0],其宏定義為GPIO_Pin_6(注:聯系到固件庫本自身的宏定義了)

  在這里插入圖片描述
  GPIO_PORT[LED1]實際為LED_GPIO_PORT宏,定義如下

  在這里插入圖片描述
  那么就是端口C,所以這段代碼就是端口C使能,配置引腳6為推挽輸出,然后初始化。
  LED1,LED2,LED3,LED4在評估板的頭文件相關宏定義如下:
  在這里插入圖片描述

  00090-00115是與評估板相關的LED燈操作,開LED1,延遲,開LED2,開LED3,關LED1,延遲,開LED4,關LED2,關LED3延遲,關LED4,這個程序就不斷這個循環體

  在這里插入圖片描述
  00123-00126是延遲函數的函數體
  這個例子文件就說到此處,詳解了一般IO口的設置過程,過程總結如下:

  • (可選步驟):都設置成模擬輸入,降低能耗和增加抗EMC/EMI等

  • 步驟二:使能端口的外設時鍾

  • 步驟三:結構體變量配置端口的相關信息(端口引腳,端口模式,端口頻率)

  • 步驟四:初始化端口

  • 步驟五:可以對端口進行輸入輸出的操作。

 
 

若該文為原創文章,轉載請注明原文出處
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/117085167


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM