日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

stm32點亮第一個led燈(初學(xué))

 步巖ih2ogumfsg 2019-05-13

作為一名初學(xué)stm32的人應(yīng)該都具備了51單片機的和c語言基礎(chǔ)。這是前提。首先一個好的入門視頻是非常重要的
在這里,我推薦鑫鑫的stm32教程視頻(百度一下就懂了), 沒有打廣告的意思(沒任何利益關(guān)系),我之前看的是李想
的stm32教程,感覺看的有點懵。廢話不多說:
第一個抉擇:
(I)走庫還是走底層?(庫就是st公司給你寫好的一系列的頭文件和各種函數(shù),你只需要調(diào)用即可操縱stm32控制各種外設(shè),而底層則需要你自己寫一系列的初始化函數(shù),操作函數(shù)),個人覺得初學(xué)者可以先用庫,甚至這樣說都用詞不準(zhǔn)確,因為很大一部分從事開發(fā)的人也是直接調(diào)用庫函數(shù),除非你對效率和功耗方面有很高的要求。為了方便讀者,我這里提供了st庫的地址:http://pan.baidu.com/disk/home?fr=ibaidu#dir/path=%2F%E5%8D%9A%E5%AE%A2%E8%B5%84%E6%96%99  。


(II)首先你要有個工程文檔的模板,這個你看這個視頻就ok了(http://pan.baidu.com/disk/home?fr=ibaidu#dir/path=%2F%E5%8D%9A%E5%AE%A2%E8%B5%84%E6%96%99)。創(chuàng)建了這個工程模板之后,以后再做一個項目的時候,你只需拷貝工程模板,再把名字改下,在模板的user文件夾下加入你要寫的函數(shù)


(III)然后關(guān)于stm32的時鐘,學(xué)過51的朋友很可能很困惑,為什么時鐘都要初始化?其實這就體現(xiàn)了stm32功能的強大和靈活(具體的我也說不清,因為我也只是個初學(xué)者,菜鳥)。關(guān)于stm32的時鐘構(gòu)造你可以參看一下李想視頻的相關(guān)講解(這部分我很肯定他),然后自己去下一個stm32的中文資料參照著看,大致知道下stm32時鐘的具體構(gòu)造就ok。


(IV)其次是gpio,這個也是重點,其實gpio就類似于51單片機的io,但是較之51,它的功能更加強大,gpio提供了很多模式,輸入模式有模擬輸入模式、浮空輸入模式、上拉/下拉輸入模式以及保留;輸出模式分為通用推挽輸出模式、通用開漏輸出模式、復(fù)用功能推挽輸出模式、復(fù)用功能開漏輸出模式,在點亮led燈我們用的是通用推挽輸出模式,并且這種方式是比較常用的。gpio分為7個組,GPIOA——GPIOG,其中每一組(比如GPIOA)有0--15個引腳可供使用。


(V)好了,下面直接上程序(main.c文件直接把這個代碼碼進(jìn)去)
以下的解釋 前提是你已經(jīng)配置好了工程模板!!
#include 'stm32f10x.h'類似于51單片機的'reg51.h',一個很重要的頭文件,GPIO_InitTypeDef,這是一個結(jié)構(gòu)體,c語言學(xué)的不好的可以去補補課了,我們可以很容易的從它的字面意思知道它是定義了一個GPIO的類型(比如int也是一種類型),在stm32f10x_gpio.h這個文件里我們可以找到(這里提一個技巧:如GPIO_SetBits()函數(shù),那你就去stm32f10x.h這個文件里去找,RCC_APB2PeriphClockCmd()函數(shù)你就去stm32f10x_rcc.c文件去找edit->find,當(dāng)然你也可以直接用庫帶的幫助文檔找)附一張定義GPIO_InitTypeDef的圖
                                              
至于GPIO_InitStructure,它僅僅只是一個變量名,一個你可以任取的變量名。聲明好變量之后按照 “打開時鐘->配置->使用”的過程來寫代碼。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC英文縮寫(Reset and clock control) 這個函數(shù)的目的是將GPIOA口的時鐘打開,可是為什么是APB2,
答案直接上圖:
                
可以看到APB2控制了所有的GPIO,自然我們要給開時鐘的也就是APB2(具體函數(shù)意思參見幫助文檔)
然后開始配置,事實上,GPIO_Pin、GPIO_Mode、GPIO_Speed,st公司已經(jīng)給我們定義了枚舉類型:(這些定義在stm32f10x_gpio.h可以找到)
      
選擇50MHz的原因我不知道是為什么,大概是因為速度快點比較好吧,然后選擇GPIO_Mode_Out_PP就是通用推挽輸出模式(PUSH-PULL),管腳你自己隨意選擇
GPIO_Init(GPIOA,&GPIO_InitStructure);是給GPIO初始化,這個具體參照幫助文檔,我不太懂
GPIO_SetBits(GPIOA,GPIO_Pin_0)這個函數(shù)的意思是將GPIOA中的0引腳置高,如果置低就是GPIO_ResetBits(GPIOA,GPIO_Pin_0)
ok,這樣子就結(jié)束了,如果你把這個過程理順了,會發(fā)現(xiàn)其實入門真的不難。
我總結(jié)一下資源:

http://pan.baidu.com/disk/home?fr=ibaidu#dir/path=%2F%E5%8D%9A%E5%AE%A2%E8%B5%84%E6%96%99


郵箱:444502842@qq.com

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約