• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      STM32的常用外設(shè)驅(qū)動(dòng)程序的開(kāi)發(fā)

      2021-06-28 08:50:34沈鎬哲
      電子測(cè)試 2021年1期
      關(guān)鍵詞:外設(shè)驅(qū)動(dòng)程序文件夾

      沈鎬哲

      (紹興文理學(xué)院數(shù)理信息學(xué)院,浙江紹興,312000)

      關(guān)鍵字:STM32;Cortex-M;常用外設(shè)驅(qū)動(dòng)開(kāi)發(fā);應(yīng)用拓展

      0 引言

      科技發(fā)展日益迅猛,具有低成本、低功耗、高性能、可裁剪、功能多等優(yōu)勢(shì)ARM結(jié)構(gòu)的STM32系列單片機(jī)成為市場(chǎng)主流的芯片。STM32是意法半導(dǎo)體公司比較早推向市場(chǎng)的基于Cortex-M內(nèi)核的微處理器系列產(chǎn)品,該系列具有許多優(yōu)勢(shì),滿(mǎn)足市場(chǎng)的需求。STM32系列形成芯片家族,用戶(hù)可根據(jù)工程需要選擇,受到大眾的廣泛好評(píng)。STM32的開(kāi)發(fā)一般用固件庫(kù)或者寄存器的開(kāi)發(fā)方式,STM32的內(nèi)核是ARM公司設(shè)計(jì)的處理器體系架構(gòu)。ST公司或其它芯片生產(chǎn)廠商如TI,負(fù)責(zé)設(shè)計(jì)的是在內(nèi)核之外的部件,被稱(chēng)為核外外設(shè)或片上外設(shè)、設(shè)備外設(shè)。STM32的常用外設(shè)與傳統(tǒng)的51單片機(jī)類(lèi)似,網(wǎng)絡(luò)資源比較豐富,但資源較為零散且代碼形式參差不齊,缺少統(tǒng)一開(kāi)發(fā)整理。本次課題將常用的STM32驅(qū)動(dòng)程序開(kāi)發(fā)、調(diào)試完全,并且成體系收集、整理好,可供學(xué)生實(shí)驗(yàn)、課程設(shè)計(jì)、學(xué)科競(jìng)賽、學(xué)生科研使用,對(duì)本行業(yè)的軟硬件工程師開(kāi)展工作也有一定的幫助。

      1 常用外設(shè)驅(qū)動(dòng)庫(kù)結(jié)構(gòu)

      本課題選用STM32F103ZET6為目標(biāo)CPU,其配置強(qiáng)大、資源豐富,為外設(shè)的開(kāi)發(fā)提供了良好的條件。STM32F103ZET6具有 FLASH、SRAM、定時(shí)器、DMA、SPI、IIC、ADC、DAC以及FSMC等功能。STM32F103ZET6常用的外設(shè)有按鍵、顯示器、AD與DA轉(zhuǎn)換器、EEPROM、時(shí)鐘芯片、溫度傳感器、語(yǔ)言模塊等。STM32擴(kuò)展的外設(shè)需要一個(gè)完整的外設(shè)庫(kù)結(jié)構(gòu)加以管理。本課題常用外設(shè)開(kāi)發(fā)做到只需添加需要的外設(shè)到相應(yīng)的文件夾即可調(diào)用使用。

      驅(qū)動(dòng)程序主要包含以下幾個(gè)工程文件:USER、HARD WARE、STSTEM、CORE、FWLib。其 中,USER文 件 下 存 放main.c、stm32f10x_it.c、system_stm32f10x.c這些文件,HARDWARE文件夾下存放相關(guān)外設(shè)的.c文件,SYSTEM文件下一般存放delay.c、sys.c、usart.c文件,CORE文件夾下存放內(nèi)核和不同容量開(kāi)發(fā)板的啟動(dòng)文件,F(xiàn)WLib文件夾存放misc.c、stm32f10x_xxx.c文件。這些文件夾功能不同,使用者想外設(shè)驅(qū)動(dòng)開(kāi)發(fā),應(yīng)在相應(yīng)文件下添加文件。這能使文件分類(lèi)清晰明了,使用方便,可作為工程模板。下圖1以LCD為例說(shuō)明驅(qū)動(dòng)程序結(jié)構(gòu)。

      圖1 LCD的驅(qū)動(dòng)程序結(jié)構(gòu)

      以下舉幾個(gè)常用外設(shè)驅(qū)動(dòng)的例子,說(shuō)明外設(shè)驅(qū)動(dòng)庫(kù)的結(jié)構(gòu)。最簡(jiǎn)單的例子為跑馬燈,除USER和SYSTEM文件與上述一致而無(wú)需改變外,首先需要在HARDWARE文件夾下添加led.c文件,其次在CORE文件夾下放core_cm3.c內(nèi)核文件和startup_stm32f10x_hd.s高容量的STM32啟動(dòng)文件,最后在FWLIB文件下添加misc.c、stm32f10x_gpio.c、stm32f10x_rcc.c、stm32f10x_usart.c文件。其中,led.c文件需要自己編寫(xiě),文件內(nèi)的初始化函數(shù)需要修改引腳模式等參數(shù)。這樣跑馬燈的驅(qū)動(dòng)程序結(jié)構(gòu)就完成了。再如OLED顯示程序,只需要在跑馬燈驅(qū)動(dòng)程序基礎(chǔ)上于HARDWARE文件夾下添加oled.c文件,同樣oled.c文件內(nèi)的函數(shù)需要自己編寫(xiě)修改,這樣便能完成OLED顯示程序。當(dāng)外設(shè)比較高級(jí)時(shí),需要在FWLIB中添加文件。例如使用紅外遙控外設(shè),在工程模板基礎(chǔ)上,在HARDWARE文件夾下添加remote.c文件并在FWLIB文件夾下添加stm32f10x_tim.c文件。在FWLIB文件夾下添加stm32f10x_tim.c文件是因?yàn)榧t外遙控需要使用輸入捕獲。與前述外設(shè)相同,需要自行編寫(xiě)remote.c文件。

      2 常用外設(shè)驅(qū)動(dòng)實(shí)例

      STM32的常用外設(shè)數(shù)量較多、較復(fù)雜,而且外設(shè)之間經(jīng)常需要配合使用,直接操作寄存器不太方便,所以常用外設(shè)驅(qū)動(dòng)程序的開(kāi)發(fā)讓人更容易理解使用STM32。下面以LCD、時(shí)鐘芯片、無(wú)線通信模塊為例,介紹STM32的外設(shè)驅(qū)動(dòng)程序開(kāi)發(fā)成果。

      2.1 TFTLCD

      TFTLCD即薄膜晶體管液晶顯示器。薄膜晶體管液晶顯示器具有重量輕、平板化、低功耗、無(wú)輻射、顯示品質(zhì)優(yōu)良等特點(diǎn),其應(yīng)用領(lǐng)域正在逐步擴(kuò)大。本課題選用2.8寸的ALIENTEK TFTLCD模塊,該模塊支持65K色顯示,顯示分辨率為320×240,接口為16位的80并口,屏幕可觸摸。下圖2是LCD及拓展外設(shè)開(kāi)發(fā)流程圖。

      圖2 LCD及拓展外設(shè)開(kāi)發(fā)流程圖

      本課題的TFTLCD顯示由FSMC接口控制,以下為FSMC相關(guān)的介紹。FSMC為靈活靜態(tài)存儲(chǔ)控制器,能夠與存儲(chǔ)器和PC存儲(chǔ)卡相連,其接口支持SRAM、NAND FLASH、NOR FLASH和PSRAM等存儲(chǔ)器。STM32的FSMC分為3類(lèi)外設(shè):NOR/PSRAM設(shè)備、NAND設(shè)備、PC卡設(shè)備。這些設(shè)備之間用不同的CS區(qū)分,TFTLCD用的就是FSMC_NE4,將TFTLCD視為SRAM。外部SRAM的控制有:地址線、數(shù)據(jù)線、寫(xiě)信號(hào)、讀信號(hào)、片選。而TFTLCD也有類(lèi)似的操作時(shí)序,包含RS、WR、RD、CS等。因此,TFTLCD由FSMC接口控制完全可行,且TFTLCD的初始化函數(shù)與FSMC的三個(gè)寄存器有關(guān),通過(guò)配置FSMC的寄存器即可驅(qū)動(dòng)LCD。FSMC有3類(lèi)外設(shè),分別對(duì)應(yīng)3個(gè)初始化函數(shù),而這3個(gè)初始化函數(shù)內(nèi)初始化了FSMC_BCRx、FSMC_BTRx、FSMC_BWTRx三個(gè)寄存器。通過(guò)編寫(xiě)3個(gè)初始化函數(shù),即可分別控制3類(lèi)外設(shè)。下圖3為L(zhǎng)CD與芯片接口電路圖。

      圖3 LCD與芯片接口電路圖

      2.2 時(shí)鐘芯片

      與STM32配合使用的時(shí)鐘芯片有DS3231、PCF8563、DS1302等,本課題選擇DS3231時(shí)鐘芯片。DS3231是一種低成本、高精度的IIC時(shí)鐘芯片,集成了TCXO和晶體。DS3231時(shí)鐘芯片具有IIC接口,地址與數(shù)據(jù)通過(guò)IIC雙向總線串行傳輸,傳輸速度達(dá)400kHz。本課題選用DS3231芯片,該芯片可直接與STM32的IIC外設(shè)模塊引腳相連,使用方便。STM32F103ZET6與DS3231芯片相對(duì)應(yīng)的引腳連接需4根線,除VCC和GND與相對(duì)應(yīng)連接外,只需PB6與DS3231的SCL、PB7與DS3231的SDA連接,占用引腳較少。

      由于DS3231時(shí)鐘芯片用到的是IIC總線,所以相關(guān)的外設(shè)程序開(kāi)發(fā)都與IIC相關(guān)。以下介紹IIC相關(guān)函數(shù),了解了IIC相關(guān)函數(shù)不僅學(xué)會(huì)如何使用DS3231時(shí)鐘芯片,更能快速了解使用有關(guān)IIC的外設(shè)。首先應(yīng)在stm32f10x_conf.h文件內(nèi)包含相應(yīng)的頭文件,在這個(gè)文件內(nèi)可以一鍵包含所有已列的文件,這樣比較便捷,不必每次再去添加。其次在主函數(shù)內(nèi)加入相應(yīng)頭文件并初始化IIC、DS3231時(shí)鐘芯片,這便能使用固件庫(kù)內(nèi)的函數(shù)。其中,IIC相關(guān)的函數(shù)有初始化 I2C_init()、使能 I2C_Cmd()、I2C_Write1Byte()、I2C_Read1Byte()等。I2C_init()函數(shù)用于設(shè)置相應(yīng)的IO、模式、速率這些參數(shù)。以下是DS3231時(shí)鐘與IIC總線結(jié)合實(shí)例,主要對(duì)DS3231.c文件的編寫(xiě)。第一步文件內(nèi)應(yīng)包含相應(yīng)的DS3231.h和IIC.h頭文件,這兩個(gè)頭文件主要包含預(yù)定義和函數(shù)申明。接下來(lái)最重要的是DS3231時(shí)鐘初始化函數(shù)DS3231_init(),函數(shù)內(nèi)部主要是IIC初始化函數(shù)IIC_init(),而IIC初始化函數(shù)上述已說(shuō)明。此外,DS3231.c文件內(nèi)還包含DS3231讀寫(xiě)函數(shù)、設(shè)定與讀取時(shí)間函數(shù)。而DS3231的讀寫(xiě)需要用到IIC相關(guān)的函數(shù),比如IIC的啟動(dòng)函數(shù)IIC_Start()、IIC發(fā)送字節(jié)函數(shù)IIC_Send_Byte()。編寫(xiě)完上述內(nèi)容,時(shí)鐘芯片相關(guān)文件就完成了。STM32程序在主函數(shù)內(nèi)調(diào)用外設(shè)的.c文件便可使用外設(shè)。當(dāng)需要使用DS3231時(shí),在主函數(shù)內(nèi)調(diào)用DS3231_init()函數(shù)以完成DS3231的初始化,再調(diào)用DS3231_Set()函數(shù)完成時(shí)間設(shè)置,while循環(huán)內(nèi)更新時(shí)間。

      DS3231時(shí)鐘芯片用到的IIC總線可擴(kuò)展其他的外設(shè),例如OLED顯示屏、MAX30102、MAX30205等。因此,通過(guò)DS3231時(shí)鐘芯片的開(kāi)發(fā)使用,即可了解IIC總線的內(nèi)容,進(jìn)而又可快速入門(mén)有關(guān)IIC總線的外設(shè)。

      2.3 無(wú)線通信模塊

      與STM32連接使用的無(wú)線通信模塊有NRF24L01、ME3630-C3B、ATK-GM510等。本課題選用NRF24L01無(wú)線通信模塊,具有不錯(cuò)的穩(wěn)定性。NRF24L01是2.4G無(wú)線通信模塊,最高速度達(dá)2Mbps,抗干擾能力強(qiáng),滿(mǎn)足多點(diǎn)通信的需求。下圖4是NRF24L01的電路圖。

      圖4 NRF24L01的電路圖

      NRF24L01與STM32通過(guò)SPI通信,而SPI的速度最高可達(dá)18MHz,能夠?qū)崿F(xiàn)無(wú)線快速傳輸。NRF24L01的使用要先初始化,函數(shù)為NRF24L01_Init(),函數(shù)內(nèi)部初始化相應(yīng)的引腳及其參數(shù)。此外,該函數(shù)還應(yīng)初始化SPI并設(shè)置相應(yīng)參數(shù)。初始化完成之后還應(yīng)用函數(shù)NRF24L01_Check()檢測(cè)無(wú)線通信模塊是否存在。上述步驟完成之后,即可在主函數(shù)循環(huán)內(nèi)設(shè)置NRF24L01的模式,這兩種模式分別完成收發(fā)。同時(shí),NRF24L01的通信可以配合LCD顯示結(jié)果。以下介紹SPI通信以及其外設(shè)拓展。SPI即串行外圍設(shè)備接口,主要應(yīng)用在EEPROM、FLASH、AD轉(zhuǎn)換器等外設(shè)上。SPI是高速、同步、全雙工的通信總線,只使用MISO、MOSI、SCLK、CS這四條線,使用方便。SPI以主從方式工作,一個(gè)主設(shè)備可以和一個(gè)或多個(gè)從設(shè)備通信,所以多個(gè)外設(shè)可與SPI相連以實(shí)現(xiàn)多個(gè)功能。SPI總線的應(yīng)用有以下幾個(gè)基本步驟:連接SPI外設(shè)時(shí)鐘、連接被復(fù)用的IO外設(shè)時(shí)鐘、設(shè)置IO為推挽輸出、調(diào)用初始化函數(shù)設(shè)置工作模式、使能SPI、收發(fā)數(shù)據(jù)。應(yīng)用在STM32上的常用外設(shè)有OLED、W25Q128等,這些外設(shè)只需按上述步驟操作即能使用。例如驅(qū)動(dòng)FLASH芯片W25Q128,不僅需要初始化使能端口,還應(yīng)初始化SPI時(shí)鐘。初始化完成之后,應(yīng)配置工作模式并使能SPI。上述完成之后便可進(jìn)行對(duì)W25Q128操作。

      3 總結(jié)

      通過(guò)STM32常用外設(shè)驅(qū)動(dòng)程序的開(kāi)發(fā),初學(xué)者將更加容易上手使用STM32,提高了學(xué)習(xí)效率,而工程師能提高工作效率。STM32常用外設(shè)驅(qū)動(dòng)程序的開(kāi)發(fā)開(kāi)拓應(yīng)用領(lǐng)域,更是推動(dòng)了單片機(jī)的更新和換代。

      MVG推出用于全尺寸汽車(chē)天線測(cè)量的多探頭測(cè)量系統(tǒng)SG 3000M

      無(wú)線連接測(cè)試專(zhuān)家MVG近日宣布推出多探頭測(cè)量系統(tǒng)SG 3000M。SG 3000M專(zhuān)為全尺寸汽車(chē)天線測(cè)量和OTA測(cè)試而設(shè)計(jì),可將現(xiàn)有吸波暗室升級(jí)為用于互聯(lián)車(chē)輛的天線測(cè)量和OTA測(cè)試設(shè)備。

      SG 3000M的MV-Scan多探頭技術(shù)和嵌入式過(guò)采樣功能可確保準(zhǔn)確、高效的天線測(cè)量。其寬頻帶覆蓋范圍從200MHz到10GHz,使其能夠支持開(kāi)發(fā)汽車(chē)連接性大多數(shù)現(xiàn)有的端到端測(cè)試協(xié)議。

      猜你喜歡
      外設(shè)驅(qū)動(dòng)程序文件夾
      磁力文件夾
      調(diào)動(dòng)右鍵 解決文件夾管理三大難題
      TC一鍵直達(dá)常用文件夾
      電腦迷(2015年1期)2015-04-29 21:24:13
      Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
      貼身呵護(hù) 必不可少的PSP外設(shè)
      外設(shè)天地行情
      外設(shè)天地行情
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      柏乡县| 玉田县| 综艺| 全州县| 礼泉县| 台湾省| 泸溪县| 龙胜| 长武县| 邵阳县| 德化县| 靖远县| 同德县| 金昌市| 仙游县| 康乐县| 牙克石市| 辽宁省| 微山县| 香河县| 资溪县| 永康市| 盐源县| 德兴市| 西和县| 宝应县| 沁阳市| 镇安县| 阿瓦提县| 富平县| 迁西县| 周口市| 盐源县| 庆安县| 双牌县| 玉山县| 娄底市| 河曲县| 乾安县| 林口县| 犍为县|