2-STM32帶你入坑系列(點(diǎn)亮一個(gè)燈--Keil)

1-STM32帶你入坑系列(STM32介紹)


首先是安裝軟件

這一節(jié)用Kei來(lái)實(shí)現(xiàn),需要安裝MDK4.7這個(gè)軟件,怎么安裝,自己百度哈.都學(xué)習(xí)32的人了,不會(huì)連個(gè)軟件都不會(huì)安裝吧....還是那句話

沒(méi)有百度一下解決不了的事情,如果有那就是百度兩下(除了科研和探索人類未知領(lǐng)域)


建個(gè)文件夾






我用的是STM32F103C8t6 ?大家根據(jù)自己的選擇

?建一個(gè)主函數(shù)的 .c文件







?編譯一下


啟動(dòng)文件里面有個(gè)執(zhí)行 SystemInit函數(shù)的調(diào)用,因?yàn)樵蹧](méi)有這個(gè)函數(shù),所以報(bào)錯(cuò)了,其實(shí)寄存器開發(fā)用不到,實(shí)際上這是官方提供的庫(kù)開發(fā)的時(shí)候需要的

可以看一下官方提供的庫(kù)開發(fā)里面SystemInit實(shí)現(xiàn)的什么功能


主要的是配置了一開始的時(shí)鐘,因?yàn)槭浅鯇W(xué)者,所以先不用管哈,以后咱也會(huì)去配置外設(shè)時(shí)鐘,,不對(duì),這一節(jié)就會(huì)去配置時(shí)鐘

咱就寫一個(gè)這個(gè)函數(shù),然后內(nèi)部什么都不寫



?還有個(gè)警告,實(shí)說(shuō)最后的代碼要多加一個(gè)空行

我也不知道為什么有這個(gè)規(guī)則


我的開發(fā)板有個(gè)燈是PC13 ?


咱就讓PC13輸出高電平,然后控制燈亮


然后咱就找控制PC13的寄存器,看看往寄存器里面寫幾然后控制PC13輸出高電平





首先需要明確一件事情哈

每個(gè)IO都有 ?CRL,CRH,IDR,ODR,BSRR,BRR,LCKR 這些寄存器,而這些寄存器都是32位的,占四個(gè)字節(jié),(大家可以看圖哈),


假設(shè)咱的單片機(jī)哈有PA口和PB口

然后假設(shè)PA的地址是 ?0x40010800 ?PB的地址是 0x40010C00 實(shí)際上內(nèi)部的寄存器呢,是這樣的

然后再說(shuō)一下引腳的模式


?模擬輸入:該引腳就會(huì)連接內(nèi)部的模擬輸入模塊(使用ADC或者DAC的時(shí)候需要設(shè)置)

浮空輸入模式:引腳狀態(tài)完全由外部決定(一般串口的RX引腳設(shè)置成這種模式)

上拉/下拉:就是內(nèi)部實(shí)現(xiàn)上下拉

通用推挽輸出:就是直接輸出高低電平,推挽輸出還有個(gè)速率問(wèn)題

這樣理解:假設(shè)SPI傳輸?shù)乃俾适?M的,假設(shè)我設(shè)置了引腳的輸出最大是2M,引腳的反轉(zhuǎn)速度根本跟不上哈,所以會(huì)傳輸不正常,所以可以設(shè)置輸出速率為10M

當(dāng)然速率越高,功耗越大

通用開漏輸出:和51單片機(jī)的P0口似的,沒(méi)有輸出能力,需要外部接上拉電阻才可以(可以用來(lái)做通信時(shí)候的電壓匹配,因?yàn)樵鄣?2是3,3V供電,假設(shè)和5V的芯片通信,咱可以設(shè)置為這個(gè)模式,然后上拉一個(gè)電阻,然后電阻另一邊接的是5V)


后面還有復(fù)用功能推挽/開漏輸出:其實(shí)哈所謂復(fù)用,就是指引腳的第二功能,就是除了正常的輸入輸出的其它功能,列如:

PA2還有個(gè)功能是串口2的輸出,如果要用這個(gè)功能,就需要配置PA2為:復(fù)用推挽輸出

好啦好啦,請(qǐng)清空自己的腦子,這些東西哈,等用到了再說(shuō).... 記住哈,用到什么學(xué)什么,知識(shí)的海洋永遠(yuǎn)沒(méi)有盡頭的,千萬(wàn)別像學(xué)校里面似的先統(tǒng)統(tǒng)學(xué)學(xué)學(xué),最后來(lái)個(gè)考試, ?咱是學(xué)一個(gè)知識(shí)點(diǎn),用一個(gè)知識(shí)點(diǎn),然后再學(xué)一個(gè)知識(shí)點(diǎn),再用一個(gè)知識(shí)點(diǎn).......


現(xiàn)在假設(shè)配置 PA0 輸出 高電平 ?輸出速率咱選擇 50M ? 注意:設(shè)置輸出高電平,那么IO口就是一直是高電平,和輸出速率沒(méi)有關(guān)系,唯一的關(guān)系就是速率越高響應(yīng)的越快

舉個(gè)栗子:

假設(shè)哈: ?速率是1HZ ? 那么執(zhí)行輸出高電平操作可能會(huì)延時(shí) 1S后才執(zhí)行,然后一直輸出高電平

假設(shè)用這個(gè)速率執(zhí)行9M ?SPI通信肯定是不行的,因?yàn)檫@個(gè)速率根本跟不上哈.....



?配置端口0為推挽輸出 50M ?


那么這個(gè)寄存器的值 ? 0x4444 444 3 ? 前面的4444444是用的默認(rèn)的值, 后面的3就是配置0端口? (0011)


00的意思




?11的意思


看一下PA口的地址


起始地址是0x4001 0800



偏移是00h就是說(shuō),要配置PA口的CRL這個(gè)寄存器,(配置端口0為推挽輸出 50M)直接

往0x4001 0800這個(gè)地址寫入 ?0x4444 444 3 ?就可以了


?有沒(méi)有這樣想的

0x40010800 =?0x44444443


要告訴編譯器0x40010800是一個(gè)地址才好,然后我要往這個(gè)地址里面寫東西

(int *)0x40010800 ?這樣就能告訴編譯器0x40010800是一個(gè)地址

然后讀取這個(gè)地址里面的值 ? aa = ?*((int *)0x40010800) ?

給這個(gè)地址賦值 ??*((int *)0x40010800) ?= XXXXX

所以 就是?*((int *)0x40010800) ?=?0x44444443;



這個(gè)只是配置了PA0的模式,咱還要讓他輸出高電平(配置了引腳,那個(gè)該引腳應(yīng)該會(huì)有變化) ?仿真下











?控制0端口輸出高電平就是讓ODR寄存器的值是? ? 0x0000 0001

?因?yàn)檫@個(gè)寄存器說(shuō)有個(gè)偏移是0c ? 其實(shí),額,還記得這張圖不


?說(shuō)白了就是前面的地址被其它寄存器占了而已,注意這里所說(shuō)的偏移,都是在0x40010800的基礎(chǔ)上需要增加多少才能到那個(gè)寄存器

所以要配置PA口 的ODR寄存器 ? 就是需要在原來(lái)地址的基礎(chǔ)上加上 0x0C

所以控制PA0輸出高電平就是

*((int*)(0x40010800+0x0c)) ?=?0x0000 0001



咱先下載到開發(fā)板試一試


會(huì)發(fā)現(xiàn)......不可以,,,哈哈哈哈 ? ?肯定還有沒(méi)有配置的地方


需要打開時(shí)鐘,有人就會(huì)想,這么麻煩呀......

嘿嘿,想一個(gè)場(chǎng)景,現(xiàn)在很多項(xiàng)目都需要低功耗,STM32呢之所以這些地方需要自己選擇性的打開,就是為了低功耗

您想想哈,不打開,不用它,肯定省電

好了,咱就去打開時(shí)鐘去

感覺(jué)到繁瑣了沒(méi),注意這樣寄存器開發(fā)哈,以后用庫(kù)函數(shù)就方便的多,很多都封裝好了,直接調(diào)用就可以

我個(gè)人感覺(jué)要想學(xué)好一個(gè)東西,其實(shí)最重要的是過(guò)程,我要讓大家知道一切的一切都是怎么來(lái)的,為什么ST的官方要弄庫(kù)函數(shù),庫(kù)函數(shù)是怎么寫的.很少人會(huì)講的這么深,總結(jié)起來(lái)有幾個(gè)原因(嫌麻煩,懶的具體研究;怕講不好,反倒讓別人不喜歡自己的教程).

我呢從來(lái)不嫌麻煩,而且知識(shí)儲(chǔ)備和自學(xué)能力還可以,所以呢....額,我也不知道該說(shuō)什么,反正還是那句話:我說(shuō)講的東西不會(huì)讓大家感覺(jué)到難,只是會(huì)感覺(jué)繁瑣而已

現(xiàn)在市面上倒賣魚的太多了,真正教給捕魚的少之又少,我所希望的是前期自己捕魚自己吃,后期從賣魚的那里直接買魚吃.等到哪一天賣魚的不再了,你不是還可以自己捕魚.當(dāng)然你學(xué)會(huì)了捕魚,當(dāng)然也可以賣魚,我現(xiàn)在就開始賣魚了,也賣捕魚的方法

扯了這么多.........


就是往這個(gè)寄存器里面的這個(gè)位寫1就可以了

然后就是找地址





?所以RCC_APB2ENR這個(gè)寄存器的地址是

0x4002 1000 ?+ 0x18


*((int*)(0x40021000+0x18)) ?=?0x00000004 ? ?

這個(gè)4 ? ?0100




?下載進(jìn)去試一試


好了好了咱修改修改,去點(diǎn)亮小燈 ? PC13


首先是打開時(shí)鐘? ?


所以是? *((int*)(0x40021000+0x18)) = 0x00000010;?




配置為輸出50M



?說(shuō)一下哈?CRL是配置0-7引腳號(hào) ? CRH是配置8-15引腳號(hào) ? 所以選擇CRH


?*((int *)(0x40011000 + 0x04)) = 0x44344444;? 默認(rèn)的咱就默認(rèn)是4



配置輸出高電平


?*((int *)(0x40011000 + 0x0C)) = 0x00002000;



?下載進(jìn)去



?現(xiàn)在熄滅



?好了這一節(jié)就說(shuō)到這里,自己去消化消化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子答恶,更是在濱河造成了極大的恐慌湾趾,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)圣拄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)毁欣,“玉大人庇谆,你說(shuō)我怎么就攤上這事∑敬” “怎么了饭耳?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)执解。 經(jīng)常有香客問(wèn)我寞肖,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任新蟆,我火速辦了婚禮觅赊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琼稻。我一直安慰自己吮螺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布欣簇。 她就那樣靜靜地躺著规脸,像睡著了一般坯约。 火紅的嫁衣襯著肌膚如雪熊咽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天闹丐,我揣著相機(jī)與錄音横殴,去河邊找鬼。 笑死卿拴,一個(gè)胖子當(dāng)著我的面吹牛衫仑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播堕花,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼文狱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了缘挽?” 一聲冷哼從身側(cè)響起瞄崇,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎壕曼,沒(méi)想到半個(gè)月后苏研,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腮郊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年摹蘑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轧飞。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衅鹿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出过咬,到底是詐尸還是另有隱情大渤,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布援奢,位于F島的核電站兼犯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜切黔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一砸脊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纬霞,春花似錦凌埂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至伏恐,卻和暖如春孩哑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翠桦。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工横蜒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人销凑。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓丛晌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親斗幼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澎蛛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容