日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 GPIO简单介绍及初始化配置(库函数)

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 GPIO简单介绍及初始化配置(库函数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

相信,大部分查找GPIO的人,都是剛剛接觸STM32的人,而剛接觸STM32的人,大部分是從51上來的人,所以我會由淺入深,從51和STM32的區別入手,通過對比這兩個處理器的配置方法,來跟大家慢慢講解(學知識可不能急于求成)。博主以stm32f1為主控芯片,以下均簡稱為stm32。

首先,上一張我的理解圖(畫不好。。。但能看),給個形象的概念

一、講圖之前,先給大家一個stm32的概念:“時鐘概念”

1.??STM32的時鐘是什么?

stm32的時鐘是由內部或外部振蕩器產生的“頻率”,而被人們形象的稱為“系統時鐘”。最大為72MHz換成周期T為:1/72MHz≈13.9ns

2.??為什么要用時鐘?

因為耗電量,stm32功能強大,能做很多事,但與之同時帶來的消耗也越嚴重,當stm32不引入時鐘時鐘的話,就像51一樣外設全開,如果大家是使用電池的話,就會感到電量的珍貴(開機幾分鐘就沒電了。。。),所以廠家(st公司)為了解決這個問題,引入了“時鐘概念”,即使用哪個外設就給哪個外設時鐘(頻率),不使用的就關掉(不震蕩)。此做法大大降低了功耗,續航持久。

二、接下來說說片內外設

1、 什么是片內外設?

我來個比喻吧,stm32是一個工廠,內部CPU是老板,而外設就是幫助CPU干活的工人。老板(CPU)想做某件事,于是就命令(指令)有這個能力的工人(外設)去做這件事,并給予研究經費(時鐘頻率)。工人拿了經費,就按照老板的命令來執行工作。這就是CPU和外設的關系(不可逆關系。。。)

另外,片內外設也可以等同于一塊內部芯片,它有內部寄存器,CPU給出指令,片內外設得到指令,并配置其內部寄存器,以達到功能的實現。

三、初始化GPIO,點亮LED燈

外設的功能都是完全不同的,但是初始化都是大同小異,學會了GPIO這最簡單的外設初始化,那么后面就很好辦了。點燈是所有學單片機的人都應該學會的第一項技能,這樣子才算入門。51單片機的點燈是,通過控制寄存器將片外引腳(我們稱之為IO口)拉低拉高,輸出高低電平,以控制LED亮滅。

51過程是這樣子:單片機給指令->控制寄存器->給IO口電平->控制LED亮滅

?

而stm32的點燈則是,通過使能外設GPIO時鐘,發出指令給外設GPIO,外設GPIO收到指令后,著手配置自己的寄存器,然后給IO口模式,讓其實現各種功能(我說過STM32功能強大吧?IO口的配置也是有很多知識的,之后會介紹)。

stm32過程是這樣子(參照上圖):CPU給指令->GPIO收到指令->配置內部寄存器->配置IO口模式(注意是模式)->控制LED亮滅。

貼上代碼:

  • void led_init(void)

  • {

  • GPIO_InitTypeDef GPIO_InitStruct;????????????????????//定義初始化結構體

  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA時鐘

  • ?
  • GPIO_InitStruct.GPIO_Mode????= GPIO_Mode_Out_PP;???? //配置模式

  • GPIO_InitStruct.GPIO_Pin???? = GPIO_Pin_0;???????????//配置哪個IO口

  • GPIO_InitStruct.GPIO_Speed???= GPIO_Speed_50MHz;???? //配置IO口速度,僅輸出有效

  • GPIO_Init(GPIOA,&GPIO_InitStruct);???????????????????//初始化GPIOA的參數為以上結構體

  • }

  • int main(void)

  • {

  • led_init(void); //調用LED初始化函數

  • GPIO_ResetBits(GPIOA,GPIO_Pin_0) //拉低電平

  • GPIO_SetBits(GPIOA,GPIO_Pin_0) //拉高電平

  • while(1); //死循環(停止程序)

  • }

  • ?

    步驟:

    1、首先必須先使能時鐘,時鐘總線可參考:中文參考手冊P28頁,這一頁是時鐘總線上掛載的片內外設,我就不上圖了。時鐘使能函數在官方庫函數的對應頭文件里有,比如找RCC函數則應該在“stm32f10x_rcc.h”里(拉到最后面void開頭的那些函數)
    2、定義初始化結構體,結構體是外設的初始化參數。
    3、初始化結構體中的參數,復制并粘貼結構體然后按“.”這個符號,會出來個框,框內就是外設的參數。

    3、調用外設初始化函數,初始化函數也是在官方庫函數的對應頭文件里。比如找GPIO函數則應該在“stm32f10x_gpio.h”里。符號“&”是取地址符,意思是:初始化的參數地址為。。。(然后MDK就尋找結構體的位置,以找到結構體的參數)。

    4、初始化完成后,在主函數中調用初始化函數,再調用官方庫函數,即可進行相應的操作。(調用的官方庫函數說明,請在“STM32固件庫使用手冊”中查看,博主不多作說明)

    小知識:

    首先呢,初始化函數,都可以在“STM32固件庫使用手冊”中查到使用說明(我就不提供連接了);其次,點擊函數并右鍵,會出現“go to definition of'函數名'”(或者按F12),接著畫面會跳轉到官方庫的 .c 文件,那里有很詳細的說明(說明中標明有哪些函數需要配置),還有,可以自定義庫函數,具體我后面(可能會寫),網上有攻略寫得比我好。

    以上。

    ?

    GPIO八種模式

    ?

    flag(今后會更新的,正文是大概框架):?1、GPIO寄存器簡單介紹及配置

    總結

    以上是生活随笔為你收集整理的stm32 GPIO简单介绍及初始化配置(库函数)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 99热自拍偷拍 | 91看黄 | 国产无码精品在线观看 | 国产99精品 | 黄色小说视频 | 91影音 | 亚洲国产欧美日韩在线 | 亚洲性猛交 | 最新毛片网 | 精品午夜久久 | 中文字幕一区二区三区夫目前犯 | 久久精品国产亚洲av蜜臀色欲 | 中文毛片无遮挡高潮免费 | 色哟哟免费在线观看 | 精品一区二区三区久久久 | 欧美国产在线观看 | 花样视频污 | www日本黄色 | 亚洲一区二区中文 | 99热超碰在线 | 婷婷综合av | 男人操女人的免费视频 | 欧美成人极品 | 在线黄色免费网站 | 久久午夜国产 | 激情成人综合网 | 一本一道人人妻人人妻αv 九一在线视频 | 视频在线 | 99ri在线 | 黄色视屏网站 | 有码在线 | 国产精品偷伦视频免费观看了 | 亚洲一线二线在线观看 | 免费高清毛片 | 草青青视频 | 韩日成人| 丁香六月综合 | 欧美日韩黄色大片 | 亚洲综合五月 | 丰满的女人性猛交 | 天堂激情网| 久操免费在线视频 | 亚洲精品中文字幕乱码无线 | 国产成人自拍视频在线 | 欧美黑人性生活 | 欧美一区二区三区四区视频 | www夜夜 | 国产欧美一区二区三区四区 | 国产精品第9页 | 日本韩国在线播放 | 在线观看日韩一区二区 | 亚洲AV不卡无码一区二区三区 | 神秘马戏团在线观看免费高清中文 | 美女毛片网站 | 日本精品三级 | 国产毛片一区二区三区 | 91蜜臀精品国产自偷在线 | 欧美一级淫片007 | 亚洲理论电影在线观看 | 婷婷久久久久久 | 美女无遮挡网站 | 啪啪日韩 | a级片在线观看视频 | 深夜福利91 | 日本偷偷操 | 自拍偷拍p | 亚洲一区在线视频观看 | 精品少妇一区二区三区 | 91av观看| 亚洲视频你懂的 | 久久日本视频 | 97夜夜| 国产精品久久无码一三区 | 中文字幕Av日韩精品 | 国产激情一区二区三区四区 | 一区在线不卡 | 欧美日韩高清一区二区三区 | 2020狠狠干| 黄色69视频| 成全世界免费高清观看 | 日韩在线导航 | 亚洲播放器 | 日韩亚洲欧美一区二区三区 | 国产精品一卡二卡在线观看 | 久久免费在线观看视频 | 人妻奶水人妻系列 | 国产免费观看一区 | 国产午夜一区二区 | 总裁边开会边做小娇妻h | aa亚洲| 91色在线视频 | 精品成人无码一区二区三区 | 欧美 日韩 国产 成人 | 咪咪成人网 | 激情欧美一区二区 | 四虎影成人精品a片 | 中国浓毛少妇毛茸茸 | 黄色小说视频 | 香蕉国产在线视频 |