從今天開始,我們就要了解一下BSP(board support package板級支持包)工程管理了。為什么呢?因為STM32的開發(fā)不同于51單片機開發(fā),其需要的核心庫文件,驅(qū)動庫文件各有用處,我們需要加以區(qū)分,方便后期維護管理與閱讀。以STM32為例,通常包括意法半導體公司提供的驅(qū)動標準庫文件夾Driver,官網(wǎng)可下載STM32F10x_StdPeriph_Lib_V3.5.0,里面是各種基礎外設的驅(qū)動。內(nèi)核支持文件夾Core,主函數(shù)文件main.c和應用層驅(qū)動文件夾App。大致四個文件,可看下圖。其中多出來的兩個是軟件創(chuàng)建工程時自動生成的。
了解之后,我們就知道需要在App中創(chuàng)建我們的LED應用驅(qū)動文件,包括.c和.h文件。實現(xiàn)對LED的控制,首先看硬件連接,根據(jù)開發(fā)板電路原理圖,LED0與PA8引腳(引腳情況看上一篇有介紹)相連,本節(jié)我們就以LED0為例講解。LED1大家就自行看原理圖就知道怎么連接了,PWR是電源指示燈,可以看到,其LED正極一端接地,負極一端接VCC,能夠上電直接點亮。而LED0就需要低電平信號才能夠點亮。
了解了硬件連接后,我們就需要了解驅(qū)動程序的開發(fā)。根據(jù)手冊《stm32F10中文參考手冊》,與51單片機開發(fā)類似,我們?nèi)耘f需要了解GPIO功能模式和控制寄存器。共有八種工作模式:
注:復位期間和剛復位后,GPIO端口配置為浮空輸入模式。
控制和配置寄存器如上圖所示,我們今天的LED是GPIO輸出功能,且端口是PA8,屬于PA中的端口配置高寄存器管理,具體可看手冊介紹。
端口輸出寄存器是ODR
可以看到下面的注:使用BSRR可以對每個位單獨控制,而操作ODR必須同時操作16位。
轉來,我們看看BSRR
可以配置31:16相應位為1,輸出0,而其他位不起作用。
所以上寄存器代碼
RCC- >APB2ENR = 0x00000004;//時鐘使能
RCC- >CFGR=0x06000000;//時鐘配置
GPIOA- >CRH|=0x00000003;//輸出速度最大50MHz 推挽輸出
GPIOA- >BSRR|=0x00100000;
好了,那么我們看下寄存器代碼吧,全是數(shù)據(jù),不看寄存器誰能知道現(xiàn)在是在干什么,哪個位要起作用呢。除此之外,stm32寄存器多達上百,好,誰去記住這些,換個有其他功能的芯片,再去記一下?寄存器代碼的重用性,可讀性,移植性都不是很高,而且看前面的RCC->APB2ENR也是官方定義好的,也沒讓我們操心,至此,我們刨根問底已經(jīng)很可以了,再不行你就去做芯片設計吧,那就不是我能講述的知識了。
這就是標準庫的好處,幫我們打通寄存器與接口調(diào)用的關系,讓我們調(diào)用庫函數(shù)實現(xiàn)這一功能。
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
需要注意一點,第二行是函數(shù)調(diào)用了已經(jīng),第一行是定義變量,一個結構體,如果不把變量定義在函數(shù)之前,就等著報錯吧。
庫函數(shù)使用參考手冊《stm32f10x_stdperiph_lib_um.chm》一個網(wǎng)頁格式的文檔,可以去官網(wǎng)下載,相信我,看熟這個,開發(fā)stm32系列所有芯片都大差不離了。
下面是各個功能模塊的函數(shù)調(diào)用
下面是各個函數(shù)調(diào)用參數(shù)時的結構體定義(將寄存器進行了封裝)
后面還會總結下開發(fā)流程,本篇入門,看看了解下。大家也看到,寫這么多其實還有很多遺漏,所以自學的難度肯定有的,這也是我推出課程的原因。
上一篇:應用筆記 | 建立基于STM32CubeIDE的ClassB工程
下一篇:學習STM32F103的定時器功能
推薦閱讀最新更新時間:2025-06-07 23:43


設計資源 培訓 開發(fā)板 精華推薦
- Bourns 發(fā)布全新大功率金屬片電流檢測電阻, 采用 SMD 2010 緊湊型封裝
- 意法半導體推出先進的 1600 V IGBT,面向高性價比節(jié)能家電市場
- EDPF-NT+分散控制系統(tǒng)網(wǎng)絡防護解決方案
- 基于PLC控制的易驅(qū)變頻器在布袋除塵器上的應用
- 如何利用伺服自動化實現(xiàn)成本降低和產(chǎn)能最大化?
- 壓力傳感器有哪些抗干擾措施?
- 破局!補盲dToF固態(tài)激光雷達輪番“出手”,禾賽FT120也要靠邊
- 利用正壓送風壓力傳感器自動控制火災風口壓力
- 多個傳感器間相互位置關系校準方法
- 樓宇自控BA系統(tǒng)傳感器有哪些?
- 又一國表示不會將華為排除5G建設外,外交部:非常積極的信
- 谷歌和中國合作涉嫌叛國?特朗普揚言對其要加以審視
- 物聯(lián)網(wǎng)模組供應商移遠通信上市首日股價大漲44%
- 成都兌現(xiàn)政策紅利,芯原、華大半導體等28個項目獲支持
- 機器人威脅論,未來人類工作模式將徹底改變?
- 特斯拉開始收集Model 3視頻 為完善自動駕駛數(shù)據(jù)
- 中國電科38所汽車雷達智能制造示范產(chǎn)線三維虛擬監(jiān)控項目
- 華為新舵手新思路:依托芯片等核心競爭力構建創(chuàng)新格局
- 阿里巴巴聯(lián)合清華浙大等五大高校攻堅AI推理
- 可檢測海洋水資源的人工智能顯微鏡被IBM發(fā)布