硬石ys-f1pro開發(fā)板手冊hal庫_第1頁
硬石ys-f1pro開發(fā)板手冊hal庫_第2頁
硬石ys-f1pro開發(fā)板手冊hal庫_第3頁
硬石ys-f1pro開發(fā)板手冊hal庫_第4頁
硬石ys-f1pro開發(fā)板手冊hal庫_第5頁
已閱讀5頁,還剩730頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

YS-F1Pro開發(fā)板開發(fā)手冊(HAL庫 系列技術(shù): 話(硬石電 STM32Cube是一個全面的軟件平臺,包括ST產(chǎn)品的每個系列,(STM32Cube_F1是針對STM32F1系列STM32Cube硬件抽象層(HAL)和一套中間組件(RTOS,USB,FS,TCP等等。STM32Cube是由ST公司倡議,旨在減少開發(fā)負(fù)擔(dān)、時間和費(fèi)用,為開(HAL外設(shè)的接口函數(shù)(USB以太網(wǎng)等復(fù)雜外設(shè)),代碼結(jié)構(gòu)強(qiáng)壯,已通過CodeSonar認(rèn)證。同時,HAL還集成了廣泛的例程,可以運(yùn)行在不同意法半導(dǎo)體YS-F1Pro開發(fā)板是硬石團(tuán)隊(duì)研發(fā)的針對STM32F103的綜合性實(shí)驗(yàn)測試平臺,開發(fā)板幾乎囊括了所有的外設(shè),這對新手是非常好的學(xué)臺,開發(fā)板幾乎所有采購來著嘉立創(chuàng)平臺,質(zhì)量有保證,這與還是有很最終掌握STM32的基本編程方法,學(xué)會將STM32CubeMX應(yīng)用到自己DIY應(yīng)用YS-F1ProSTM32的知識也就那如果有原作者認(rèn)為我們不能您的著作內(nèi)容,請務(wù)必們,我們會把本文檔參考大量文檔而編寫完成,部分內(nèi)容可能直接網(wǎng)絡(luò)文檔,所以在們會虛心求教,我們會根據(jù)情況本店模塊以表示我們的誠意。F1Pro 硬石YS-F1Pro開發(fā)板HAL庫例程持續(xù)更新 (一 硬件設(shè) 第1 YS-F1Pro開發(fā)板硬件設(shè) YS-F1Pro開發(fā)板硬件資 YS-F1Pro開發(fā)板跳帽配置說 YS-F1Pro開發(fā)板IO分 第2 YS-F1Pro開發(fā)板原理圖詳 微控制 FSMC—擴(kuò)展SRAM和TFT液 擴(kuò)展 LCD液 電源管 STM32F103供 開發(fā)板供 SWD和ISP接 SWD接 ISP方 數(shù)據(jù)設(shè) 串行 串行 SD USB從設(shè)備(USB CAN通 紅外接收2.4G無線模 W5500以太網(wǎng)模 電機(jī)模 步進(jìn)電 舵 直流電 AD轉(zhuǎn) 其他功能電 LED燈電 獨(dú)立按 電容式按 蜂鳴 溫濕度傳感器接 頭接 所有 第3 3.5寸液晶模組電路設(shè) 液晶顯 電阻觸摸實(shí) (二 軟件設(shè) 第4 HAL庫介 STM32軟件編 HAL庫是什 HAL庫發(fā)展趨 HAL庫特 第5 開發(fā)軟件安裝及使 Keil安 Keil軟件獲 Keil軟件安 Keil軟件IAR安 IAR軟件獲 IAR軟件安 IAR軟件的STM32CubeMX軟 使用CubeMX新建工 第6 KEILv5和IAR軟件使 KEILv5軟件使 IAR軟件使 第7 程序編譯和Keil軟件方 ST-Link驅(qū)動安 工程位 配 環(huán) 編 ISP方 安裝USB轉(zhuǎn)串口驅(qū) 硬件連 設(shè)置工具選 成功畫 第8 另類HAL庫版本工程創(chuàng) STM32CubeF1固件 建立工 調(diào) 第9 寄存 寄存器定 微控制 內(nèi)部總 器映 位帶操 外 時鐘和復(fù) 復(fù) 時鐘 第10章Cortex-M3內(nèi) CM3內(nèi)核簡化模 寄存 寄存器應(yīng)用分 第11章GPIO—流水 GPIO介 GPIO相 LED燈硬件設(shè) GPIO外設(shè)結(jié)構(gòu) GPIO編程流程分 流水燈代碼實(shí) 蜂鳴器控 蜂鳴器驅(qū)動電路設(shè) 蜂鳴器控制代碼實(shí) 第12章工程文件結(jié)構(gòu)和復(fù)位啟 例程文件結(jié) 啟動代 復(fù)位啟動流 第13章GPIO—按鍵輸入掃 按鍵輸入硬件設(shè) 按鍵掃描編程流程分 按鍵輸入掃描代碼實(shí) 第14章EXTI—按鍵中斷輸 NVIC寄存 中斷優(yōu)先級分 優(yōu)先級分 NVIC相關(guān)函 中斷配置實(shí) EXTI功能框圖分 按鍵中斷編程流程分 按鍵中碼實(shí) 第15章USART—RS-232串口通 串口通信協(xié) 物理 協(xié)議層 STM32的USART簡 串口通信硬件設(shè) 使用CubeMX軟件生成USART工 USART結(jié)構(gòu) 編程要 USART代碼實(shí) 第16章USART-指令控 USART的調(diào)試應(yīng) 使用CubeMX生成工 編程要 USART串口指令代碼實(shí) 第17章DMA—直接內(nèi)存 DMA功能框 DMA硬件設(shè) DMA外設(shè)結(jié)構(gòu) DMA編程流程分 內(nèi)存數(shù)據(jù)拷貝代碼實(shí) 第18章DMA-USART1接 DMA器到外設(shè)模 使用CubeMX軟件生成工 編程流程分 DMA器到外設(shè)代碼實(shí) 第19章SysTick—系統(tǒng)滴答定時 SysTick介 相關(guān)寄存器介 系統(tǒng)滴答定時器硬件設(shè) SysTick編程流程分 SysTick實(shí)現(xiàn)定時代碼實(shí) 第20章TIM-基本定時 基本定時器簡 基本定時器功能框 TIM6&TIM7編程流程分 TIM6&TIM7基本定時代碼實(shí) 第21章TIM-高級控制定時 高級控制定時 輸入捕獲模 輸入模 強(qiáng)置輸出模 輸出比較模 模 互補(bǔ)輸出和死區(qū)插 在外部時清除OCxREF信 產(chǎn)生六 輸 單脈沖模 編接口模 與霍爾傳感器的接 TIMx定時器和外部觸發(fā)的同 高級控制定時器外設(shè)結(jié)構(gòu) 高級控制定時器生 編程流程分 高級控制定時器生 代碼實(shí) 第22章TIM-通用定時器(電容按鍵 電容按鍵原 電容按鍵硬件設(shè) STM32Cube生成工 觸摸按鍵外設(shè)結(jié)構(gòu) 觸摸按鍵編程流程分 觸摸按鍵代碼實(shí) 第23章TIM-通用定時器(呼吸燈 呼吸燈功能實(shí) 使用CubeMX軟件生成代 呼吸燈編程流程分 呼吸燈代碼實(shí) 第24章ADC-電壓STM32ADC介 DMA傳輸在ADC中的應(yīng) ADC硬件電路設(shè) ADC外設(shè)機(jī)構(gòu)體分 ADC編程流程分 基于DMA傳輸?shù)亩嗤ǖ繟D轉(zhuǎn)換代碼實(shí) 雙ADC慢速交叉模式代碼實(shí) 第25章DAC-電壓輸 DAC簡 DAC硬件電路設(shè) 使用CubeMX生成DAC正弦波工 DAC外設(shè)結(jié)構(gòu)體分 正弦波輸出代碼實(shí) 可調(diào)電壓輸出代碼實(shí) 第26章LCD-液晶顯 LCD簡 LCD控制器簡 FSMC簡 LCD硬件設(shè) 使用CubeMX生成工 FSMC外設(shè)結(jié)構(gòu) LCD編程流程分 LCD顯示代碼實(shí) 第27章LCD顯示中英文(字模在內(nèi)部 ASCII編 字 制作字 使用CubeMX生成工 LCD顯示字符及漢字編程流程分 LCD顯示字符代碼實(shí) LCD顯示漢字代碼實(shí) 第28章FSMC-外部SRAM實(shí) SRAM簡 SRAM硬件電路設(shè) 使用CubeMX生成工 FSMC-外部SRAM外設(shè)結(jié)構(gòu) FSMC-外部SRAM編程流程分 FSMC-外部SRAM代碼實(shí) FSMC-擴(kuò)展SRAM內(nèi)存管理代碼實(shí) 第29章SDIO-SD SDIO簡 SD卡物理結(jié) SDIO功能框 SDIO總 總線拓 總線協(xié) 命 響 SDIO-SD卡硬件電路設(shè) 使用CubeMX生成工 SDIO外設(shè)結(jié)構(gòu)體分 SDIO編程流程分 SDIO-SD卡讀寫代碼實(shí) 第30章SDIO-基于SD卡的FatFS文件系 文件系 FatFS簡 使用CubeMX生成工 第31章SPI-串行 SPI簡 SPI物理 SPI協(xié)議 SPI框架剖 SPI通訊過 SPI-串行Flash硬件設(shè) 使用CubeMX軟件生成工 SPI-串行Flash結(jié)構(gòu) SPI-串行Flash編程流程分 SPI-串行Flash代碼實(shí) 第32章SPI-基于串行Flash的FatFS文件系 使用CubeMX生成工 SPI-基于串行Flash的FatFS文件系統(tǒng)編程流程分 SPI-基于串行Flash的FatFS文件系統(tǒng)代碼實(shí) 第33章I2C- I2C簡 I2C物理 協(xié)議 STM32的I2C特性及架 I2C-EEPROM硬件設(shè) 使用CubeMX生成工 I2C-EEPROM編程流程分 I2C-EEPROM代碼實(shí)現(xiàn)(硬件 I2C-EEPROM代碼實(shí)現(xiàn)(軟件模擬 第34章LCD-顯示漢字(字庫在SD卡 中文編 字模的生 LCD-顯示函數(shù)(字庫在SD卡)編程流程分 LCD-顯示函數(shù)(字庫在SD卡)代碼實(shí) 第35章LCD-顯示漢字(字庫在串行 燒寫中文字庫到串行 燒寫中文字庫到串行Flash代碼實(shí) 第36章LCD-顯示(在SD卡 36.1格式簡 BMP頭文件格 生成BMP圖 LCD-顯示(在SD卡)結(jié)構(gòu) LCD-顯示(在SD卡)編程流程分 LCD-顯示(在SD卡)代碼實(shí) 第37章LCD-觸摸畫 觸摸屏簡 電阻觸摸屏檢測原 觸摸屏硬件電路設(shè) 使用CubeMX生成工 第38章CAN-雙機(jī)通信測 CAN簡 CAN物理 CAN協(xié)議 STM32的CAN外設(shè)簡 CAN總體描 CAN通訊硬件電路設(shè) 使用CubeMX生成工 第39章RS-485通 RS-485通信簡 RS-485通信硬件電路分 RS-485通訊編程流程分 RS-485通訊代碼實(shí) 第40章以太網(wǎng)- 以太網(wǎng)簡 以太網(wǎng)模 以太網(wǎng)分層概 以太網(wǎng)接入方 W5500的Socket初始 W5500相關(guān)例程功能簡 以太網(wǎng)W5500硬件設(shè) 使用CubeMX生成工 以太網(wǎng)-W5500結(jié)構(gòu) TCP-Server編程流程分 TCP-Server代碼實(shí) 第41章WIFI- ESP-8266簡 主要參 功能描 接口說 ESP-8266硬件電路設(shè) 端設(shè) 使用CubeMX生成工 ESP8266結(jié)構(gòu) ESP-8266控制開發(fā)板編程流程分 ESP-8266控制開發(fā)板代碼實(shí) 第42章串口 IAP簡 Keil軟件設(shè) 更新 IAP結(jié)構(gòu)體分 IAP編程流程分 第43章STemWin圖像界面軟件 第44章uC/OS-Ⅲ移植-HAL庫版 (一) YS-F1Pro開發(fā)板硬件設(shè)YS-F1Pro開發(fā)板YS-F1Pro1-11-2圖1-1YS-F1ProYS-F1ProSTM32F103ZET6這個控制器的內(nèi)STM32F103的內(nèi)部資源,都可以在此開發(fā)板上圖1-2YS-F1ProYS- 開發(fā)板跳帽為盡可能發(fā)揮STM32F103ZET6這顆微控制器的性能、提供的接口,開發(fā)板設(shè)計(jì)使用了跳帽選擇實(shí)現(xiàn)不同的功能,具體情況參考圖1-3和表格1-1:圖1-3表格1-1 1CH340GUSART1CH340G2PB0PG6ULN2003PG6ULN2003PD3與頭接口有共345左邊:RS-485右邊:RS-2326W5500VS1053、2.4G無線需要W55007YS-F1ProIOYS-F1ProSTM32F103ZET61-表格1-2YS-F1Pro開發(fā)板IO選連接藍(lán)牙HC-05、GPS、GSM模塊選連接藍(lán)牙HC-05、GPS、GSM模塊PB2-78PC14-9PC15-OutputEnable)Write12345圖1-4YS-F1Pro第2章YS-F1Pro微控制STM32F103ZETT6擁有的資源包括:64KBSRAM、512KBFLASH、2時器、4個通用定時器、2個高級定時器、2DMA控制器(12個通道、3SPI2IIC5個串1USB1CAN312ADC112DAC、1SDIO接口、1FSMC接口以及112IO口。(GPIO2-1,還有一部分是電源引腳(屬于電源模塊部分2-圖2-1STM32F103ZET6別對于把SWD接口功能引腳做為模塊功能引腳時特別注意需要關(guān)閉的JTAG和SWD功能。STM32F103有多種啟動模式可以選擇。啟動模式理解是:微控制器允許從理解,比如,大廳對應(yīng)區(qū)0,存放了一個房號,這個房號就是由BOOT0和BOOT1引腳決定的;房間1對應(yīng)內(nèi)Flash2RAM,房間3對應(yīng)系統(tǒng)開發(fā)板默認(rèn)通過兩個10K歐的電阻把BOOT0和BOOT1引腳都拉低Flash2-2圖2-2這里需要需要注意的一點(diǎn),BOOT0BOOT1引腳是有可能被拉高為高電平的,因?yàn)檫@里有10K歐電阻的存在,后面在模塊電路會用到BOOT0引腳。我們需要為STM32F103提供一個時鐘源,一般使用8MHz的無源石英晶振,見。實(shí)際上,STM32F103內(nèi)部有一個主時鐘源,也為8MHz,但一般我們不年歷)還需要提供32.768KHz的時鐘源。電路設(shè)計(jì)見圖2-3。圖2-32-圖2-4STM32F103ZET6NRESET為低電平時,CPU處R6C5RC復(fù)位電路。當(dāng)系統(tǒng)上電時,C50,CPU處于復(fù)位狀態(tài)VDD(3.3V)電源通R6C5充電C5的電壓升CPU的高電平門檻電壓時,CPU退出復(fù)位狀態(tài)轉(zhuǎn)入運(yùn)行狀態(tài)。在設(shè)計(jì)電路時,需要選擇適當(dāng)?shù)腞值和C值,以保證NRESET低電平持續(xù)時間滿足CPU復(fù)位最小脈寬的要求。(FSMCFlashcontroller所有的外部器共享控制器輸出的地址、數(shù)據(jù)和控制信號,每個外部設(shè)備SRAMStaticRAM的縮寫,它是一種具有靜止存取功能的內(nèi)存,不需這是和Flash最大的區(qū)別。YS-F1Pro開發(fā)板板載1片1MX16的靜態(tài)器(1M問模式。電路設(shè)計(jì)見圖2-5。圖2-5擴(kuò)展2-表格2-1SRAM高字節(jié)控制(I/O8~低字節(jié)控制(I/O0~A0~I/O0~LCD液STM32F103ZET6沒有內(nèi)置LCD控制器,因此需要選用帶控制器的XPT2046TSC2046STM32F103ZET6SPISPI接口資源緊張我們使用普通的IO接口模擬SPI通信時序時序與TSC2046正常通信,實(shí)際測試觸摸效果并沒有因?yàn)槭褂媚MSPI時序而影響。TSC2046具有中斷輸出口線,當(dāng)觸摸屏被按壓時PENIRQ口線輸出低電平。2-6圖2-6TFT2-表格2-2STM3212觸摸從機(jī)輸34觸摸從機(jī)輸56觸摸時鐘7~LCD_DB0~電源管STM32F103供則是通過一個電感后與3.3V連接,參考圖2-7。圖2-7STM32F103ZET6開發(fā)板供開發(fā)板不同模塊可能需要的電源電壓有+5V和+3.3V兩種。5V電源可以有兩MINIUSBUSB線5V電壓,這種方法非常方便,通常都是使用這種方法的,該最大可輸出3A電流,驅(qū)動力十足,一般只有在開發(fā)板接上很多模塊才要這種供電方法。3.3V電源則是利用AMS1117-3.3從5V電源轉(zhuǎn)換得到。電路設(shè)計(jì)見圖2-8。其中,D6SMAJ5.0A5V外圖2-85V3.3VSWD和ISP接SWD接JTAGARM20SWD接口只6個引腳。YS-F1Pro開發(fā)板僅支持SWD調(diào)試接口JTAG接口,這樣JTAG其余的功能引腳可以用作普通的GPIO使用。SWD接口調(diào)試接口和原理圖見圖2-9圖2-9SWDRESET#是STM32的硬件復(fù)位引腳。仿真器(比如J-Link和ST-Link仿真于大多數(shù),我們還是建議在調(diào)試口中增加RESET引腳。電的。對于J-Link仿真器,是必須的,因?yàn)镴-Link仿真器內(nèi)部的電平轉(zhuǎn)換芯ST-Link仿真器,這個電源引腳可以不接,因缺省就是3.3V的。JTMS/SWDIO(PA13)、JTCK/SWCLK(PA14SWD調(diào)試接口的數(shù)圖設(shè)計(jì)了一個ST-LinkV2仿真器,實(shí)物圖和開發(fā)板連接圖見圖2-10。圖2-10ST-Linkv2JTAG轉(zhuǎn)成與我們開發(fā)板匹配的準(zhǔn),即功能引腳排序可以自行設(shè)計(jì)。實(shí)物連接見圖2-11。圖2-11ST-Linkv2JTAGSWD轉(zhuǎn)換板就可以了,僅支持SWD模式。另外我們還提供了把我們的ST-Linkv2仿真器轉(zhuǎn)換成標(biāo)準(zhǔn)的JTAG接口的轉(zhuǎn)換方案,不過僅支持SWD模式,實(shí)物連接參考圖2-12,注意這里使用的紅圖2-12硬石STLinkv2轉(zhuǎn)JTAG接ISP方STM32F103支持ISP(InSystemProgram)程序,電路設(shè)計(jì)見圖2-13,ISP電路使用到CH340G,它是一個USB轉(zhuǎn)串口IC,這里使用STM32的當(dāng)STM32F103被設(shè)置為從系統(tǒng)代碼啟動后,通過通信設(shè)定后,可以接收USART1數(shù)據(jù)更新內(nèi)部Flash內(nèi)容,這樣達(dá)到程序目的,當(dāng)再次從內(nèi)部Flash啟動時就0)STM32F1032-13中下方把BOOT0拉高,這樣STM32F103就可以進(jìn)入ISP模式,注意這里是可以進(jìn)定啟動模式,所以現(xiàn)在需要讓STM32F103進(jìn)行一次復(fù)位,這時就要看DTR#引腳的功能了。當(dāng)DRT#為高電平時Q1三極管導(dǎo)通,原本RTS#引腳就為低電平,Q1導(dǎo)通后U4的第2引腳(標(biāo)識為“Z”)也是低電平,而U4是74HC1G66GW,實(shí)際上低電平,此時STM32F103進(jìn)入復(fù)位狀態(tài)。74HC1G66GW在這里起到系統(tǒng)上電后延時RTS#引腳信號對RESET#引腳的好了,在成功復(fù)位之后就可以需要把DTR#引腳拉高,此時RESET#引腳也被拉高,現(xiàn)在ISP軟件就可以對STM32F103程序。等程序完之后,RTS#BOOT0引腳為低電平,這樣等一切就緒之后,在復(fù)位一下STM32F103就可以從Flash啟動,并運(yùn)行新程序。圖2-13ISP接數(shù)據(jù)設(shè)開發(fā)板提供多種數(shù)據(jù)方式,有串行Flash、EEPROM、SD卡USB串行128Mbit(16M字節(jié))Flash,型號為W25Q128FVSIG,它掛載在STM32F103SPI1接口上,電路設(shè)計(jì)見圖2-14。圖2-14串行2-表格2-3FlashSTM32片選(ChipSelect)CS由高變低時,被能。在命令傳輸器件,CE串行數(shù)據(jù)輸出(SerialData寫保護(hù)使能(Write3.3V電源,缺省是串行數(shù)據(jù)輸入(SerialData數(shù)據(jù)輸出到Flash時停止SPI通信通過上拉電阻接電源,SPI串行EEPROMSTM32I2CI2C2線I2CI2C主設(shè)備(STM32F103控制器,可以允許并接很多I2C從設(shè)備,這些設(shè)備必須具備唯一的地址以便于區(qū)分。1-10KI2C256個字節(jié),對于我們普通應(yīng)用來說是足夠了的。當(dāng)然,你也可以選擇換大容量的,因?yàn)槲覀兊碾娐吩谠砩鲜羌嫒軦T24C02~24C512全系列EEPROM芯片的。電路參考圖2-15。圖2-15AT24C02程序的時候要注意這點(diǎn)。I2C_SCLSTM32F103PB6上,I2C_SDAPB7I2CI2C通信方SDSTM32F103ZET6SDIOSD卡操作,YS-F1Pro開發(fā)板設(shè)電路設(shè)計(jì)參考圖2-16。圖2-16SDSD4SDIO12MB/S,非常適USB從設(shè)備(USBSTM32F1031USBUSBDevice設(shè)備。USBDevice接USBUSBUSBHost。使用這個接口,我們可以做U盤實(shí)驗(yàn)(將開發(fā)板SD卡和串Flash虛擬2U盤可以通過電腦讀寫文件。另外,也可以利用該USB接口實(shí)現(xiàn)模擬串口效果。2-17USBD_ENBLE(PG13)Q3三極管導(dǎo)通是,USBDevice接口才有效。圖2-17USB數(shù)據(jù)傳輸—通信實(shí)STM32F103集成多個通口,包括5個UART、CAN通信等等,YS-F1Pro開發(fā)板充STM32F103性能,集成了多種形式的通信方法RS-232串口通信等等,并擴(kuò)展了GSM()模塊和GPS模塊。USART2—WiFi、GSM、GPS、藍(lán)GSM模塊,NEO-7MGPSHC-05藍(lán)牙模塊,使用我們配套的杜體可閱讀1.2小節(jié)。圖2-18USART2YS-F1ProESP-12FWiFi模塊。ESP-12FWiFi模塊TensilicaL10632位微型MCU16位精簡模式,主頻支該模塊支持標(biāo)準(zhǔn)的IEEE802.11b/g/n協(xié)議,完整的TCP/IP協(xié)議棧。用戶可以USART3—RS-232、RS-RS-232RS-485在設(shè)備應(yīng)用中非常普遍,開發(fā)板提供1RS-232(DB9連接器)1RS-485接口,見圖2-19。圖2-19USART3這里選擇SP3232E,實(shí)現(xiàn)標(biāo)準(zhǔn)RS-232電平轉(zhuǎn)換為STM32支持的TTL電平。RS-485接口情況類似,采用差分信號負(fù)邏輯,邏輯"0”PB2PB2RS-485發(fā)則是兩個偏置電阻,以保證靜默狀態(tài)時,RS-485總線維持邏輯1。RS-485是在RS-2321200MCAN通YS-F1ProSN65HVD230作為CAN驅(qū)動器。CAN5.08mm間距的接線端子引出,參考圖2-20。圖2-20CANCAN120CAN總線的一個中間節(jié)點(diǎn)使用,那么可能需要去掉這個120歐阻抗匹配電阻。CAN總線的數(shù)8腳的電1.2V時,收發(fā)器處于允許發(fā)送(也可以接收。R36電阻的阻值可以控制波形的斜率。阻值越小,波形的上升沿和下大波特率也是1Mbps。SN65HVD230的第4腳是接收到的信號輸出,為推挽輸出模式,因此和STM32相連時,無需外加上拉電阻。紅外接外接收管,電路設(shè)計(jì)見圖2-21。圖2-21該信號連接在PB1上。2.4G無線模無線通信在很多場合非常有用,YS-F1ProRFID2-22圖2-222.4GNRF24L012Mbps,傳輸距離最大可以到15米左右(空曠地,無干擾SPI3PB3是SWDSDO功能引腳,所以使用SPI3時必須禁用SWD接口功能。W5500W5500以太網(wǎng)模塊包含了一個硬件TCP/IP協(xié)議棧W5500以及一個含RJ-4(HR911105A。其中,W5500TCP/IP嵌入式以太網(wǎng)控制器,為嵌入式系統(tǒng)提供了更加簡易的互聯(lián)網(wǎng)連接方案.使用硬件邏TCP/IP協(xié)議棧的傳輸層及網(wǎng)絡(luò)層(如:TCP,UDP,ICMP,IPv4,ARP,IGMPPPPoE等協(xié)議32KRAM作為數(shù)據(jù)收發(fā)緩存。使得上位機(jī)主控,只需承擔(dān)TCP/IP應(yīng)用層控制信息的YS-F1Pro開發(fā)板集成了一個整個W5500圖2-23W5500圖2-23中上半部分是W5500及其電路,W5500需要外接一個25MHz的晶振。W5500SPISTM32F103SPI3接口,W5500PF11,W5500中斷輸出引腳同樣通過一個跳線帽連接至PF9W5500的復(fù)位硬件與STM32F103的復(fù)位引腳直接在一起。VS10532-24,VS1053可以使用SPI通信進(jìn)行通信,這里預(yù)留設(shè)計(jì)SPI3接口做為VS1053的通口,同時IO供使用,實(shí)際上預(yù)留的這個接口也是可以給其他模塊使用圖2-24VS1053這里要特PB3SWD接口SDO功能引腳以使SPI3時必須禁用SWD接口功能。電機(jī)模步進(jìn)電系統(tǒng)。ULN2003A7組達(dá)林頓晶體管陣列和相應(yīng)的電阻網(wǎng)絡(luò)以及鉗位二極絡(luò)構(gòu)成,具有同時驅(qū)動7組負(fù)載的能力,為單片雙極型大功率高速集成電路。ULN2003一般用于小型步進(jìn)電機(jī)驅(qū)動。YS-F1Pro開發(fā)板集成了一個ULN2003A和對應(yīng)的接口,電路設(shè)計(jì)參考圖2-2528BYJ-4842、57類型步進(jìn)電機(jī)是使用控制,類似直流電機(jī)的控制方法。圖2-25圖2-26舵作原理是由發(fā)出訊號給舵機(jī),經(jīng)由電路板上的IC判斷轉(zhuǎn)動方向,再驅(qū)動子,并將磁鐵置於圓柱體內(nèi),這就是無馬達(dá)。舵機(jī)解剖圖參考圖2-27。圖2-27圖2-28里還需要注意,PA15JTAG接口引腳,在編程時注意禁JTAG接口功能,PA15直流電STM32STM32IO接口驅(qū)動能力動器從而來實(shí)現(xiàn)電機(jī)的旋轉(zhuǎn)控制。STM32一般是通過產(chǎn)生信號控制電機(jī)驅(qū)動器,所以需要用到STM32定時器功能。STM32F103ZET6有兩個高級控制定時器TIM1和TIM8,非常適合復(fù)雜的電機(jī)控制場合,YS-F1Pro開發(fā)板設(shè)計(jì)時將圖2-29。圖2-29ADAD轉(zhuǎn)換顧名思義就是模擬量轉(zhuǎn)換成數(shù)字量,實(shí)際應(yīng)用中很多信號都是模擬STM32F103內(nèi)部集成了一個12位ADC是一種逐次近型模擬數(shù)字?jǐn)?shù)字3.3V2^12=4096等分,在特定的輸入引腳上的某一電YS-F1Pro6AD轉(zhuǎn)換引腳,其中兩個引腳可以直接通過跳線帽短接至光敏電阻和精密電位器,電路設(shè)計(jì)參考圖2-30。圖2-30AD6ADADC1、ADC2ADC3其他功能電LED燈電YS-F1Pro3LED2-31圖2-31LEDLED1GND(0V)PB0引腳上(中間還JP3默認(rèn)使用跳線帽短路PB0引腳為高電平(3.3V)的話,此時電路存在電壓差,電流從LED1燈正極流向負(fù)極再經(jīng)電阻流入GND,此時LED1PB0引腳的高或者低電平就可以自由控制LED1燈的亮滅。LED2LED3控制原理與LED1是相同的。獨(dú)立按以做為系統(tǒng)喚醒和TAMPER(侵入)功能,電路設(shè)計(jì)見圖2-32。圖2-32KEY1按鍵通過R43電阻接在PA0R44電平。KEY1按鍵可以做為系統(tǒng)喚醒功能。KEY2PC13R45作用后PC13慢慢上升自3.3V。KEY2按鍵可用于系統(tǒng)侵入功能。電容式按電容式觸摸感應(yīng)按鍵的基本原理如圖2-33所示,當(dāng)(手指)接觸金屬形成一個電容,感應(yīng)電容量通常有幾pF到幾十pF。利用這個最基本的原理,在外圖2-33圖2-34蜂鳴YS-F1Pro2-35STM32I/O口是無法直接驅(qū)圖2-35別是GPIO連接此基極的時候,一般在GPIO所在IC剛剛上電初始化的時GPIO的內(nèi)部也處于一種上電狀態(tài),很不穩(wěn)定,容易產(chǎn)生噪聲,引起誤動(的電流由電阻流入地)當(dāng)三極管開關(guān)作用時,ONOFF時間越短越好,OFF時,因晶體管中的殘留電荷引起的時間滯后,B,ER起到放電溫濕度傳感器接YS-F1ProDS18B20、DHT11、AM2302等型號溫度傳感器和溫濕度傳感器,電路設(shè)計(jì)參考圖2-36。圖2-36頭接塊,電路設(shè)計(jì)見圖2-37。圖2-37頭接 I2C1_SCLSCCB接口的控制時鐘(I2C接口類似I2C1_SDASCCB接口的串行數(shù)據(jù)輸入(出)端(I2C接口類似 FIFO_WENFIFO寫使能(1為允許CMOS寫入到FIFO,0為);FIFO_RCLKFIFO內(nèi)存時鐘控制端;FIFO_WRST—FIFO寫指針服務(wù)端;FIFO_OEFIFO關(guān)斷控制;FIFO_RRST—FIFO讀指針復(fù)位端。所有板把所有的GPIO通過排針引出,參考圖2-38。圖2-38GPIO 3.5寸液晶模組電路設(shè)為配合YS-F1Pro開發(fā)板做人機(jī)交互界面,我們專門設(shè)計(jì)了一個3.5寸液晶顯示模組,該液晶模組是320*480的真彩屏,驅(qū)動為ILI9488。該屏使用16bit總線模式,采用6個白色LED作為背光源。液晶顯3-18bit16bit數(shù)據(jù)并口,我們默認(rèn)16bit接口,這樣才可以充分發(fā)stm32的優(yōu)勢。背光采用圖3-1電阻觸參考圖3-2。圖3-2(二) HAL庫介相信會來閱讀本文的同學(xué)都大概知道STM32微控制器是什么東西,本文討論的是STM32F103ZET6,實(shí)際上合適STM32F1系列。微控制器最簡單如PA0,輸出高電平,要怎么辦呢?編寫程序,然后編譯程序并到開發(fā)板運(yùn)使用Keil或者IAR。ST為廣大使用者方便編程已經(jīng)提供了與硬件底層相關(guān)的C語言文件,節(jié)省了我們很多時間,我們重點(diǎn)是學(xué)習(xí)如何使用。STM32C語言編程可以是直接寄存器編程、標(biāo)準(zhǔn)固件庫編程以及新推出的HAL庫編程。直接寄存器編程是直接操作寄存器方法,比如語句:PB1引腳,0x0003對應(yīng)PB0PB1GPIOBBSRR是什么東西,如果要展開講有太多了,簡單講就是ST已經(jīng)為我們定義好的東GPIOBBSRRSTM32編程的一個軟件函數(shù)庫,就是目前還流行的標(biāo)準(zhǔn)固件庫。使用如下語句,就可以控制PB0引腳輸出高電平:10年以來受廣大使用者推崇,就是現(xiàn)在還有大部分工程師、公司都在使用。不過,現(xiàn)實(shí)情況有點(diǎn),ST已經(jīng)不再更新STM32標(biāo)準(zhǔn)固件庫,STM32F12013年后沒有正式發(fā)布更新版本,所以現(xiàn)在都停留在V3.5.0版本。現(xiàn)在ST全力推新的軟件編程庫:HAL庫,現(xiàn)在使用HAL庫實(shí)現(xiàn)PB0輸出高電平編程如下:用誰知道,總體來說HAL庫還是比較人性化的,并且配合STM32CubeMX軟件使用可以簡化編程。關(guān)于HAL庫詳細(xì)介紹請繼續(xù)看。HAL在解釋HAL庫之前,我們先認(rèn)識STM32CubeMX(簡稱CubeMX,下同。它是ST推出的一種STM32設(shè)置和初始化C代碼的,界面見圖4-1。圖4-1STM32CubeMX就是CubeMX軟件是一個工具軟件,我們只要在上面簡單的點(diǎn)點(diǎn)點(diǎn)就可以生成我們的工作量,我們的工作重點(diǎn)放在項(xiàng)目任務(wù)的實(shí)現(xiàn)。CubeMX的使用介紹將會HAL的全稱是:Hardware 的函數(shù)庫,因?yàn)楹虷AL關(guān),在這里,我們便稱為HAL庫。HAL庫是一個由ST基于硬件抽象層而設(shè)計(jì)的軟件函數(shù)包,它由程序、HAL庫,無需深入掌握底層硬件細(xì)節(jié),開發(fā)者就可以輕松應(yīng)用每一個外API(applicationprogramminginterface應(yīng)用編程界面)驅(qū)動,API對該驅(qū)動程序的結(jié)構(gòu),函數(shù)和參數(shù)名稱都進(jìn)行了標(biāo)準(zhǔn)化。在ST的中,HAL庫是大勢所趨,在ST公司開發(fā)的部分中,只有HAL庫而沒有標(biāo)準(zhǔn)庫,從這點(diǎn)便可以說明,以后的目標(biāo)是逐漸的轉(zhuǎn)向HALCubeMX生成代碼后,工程項(xiàng)目和初始化代碼已經(jīng)完成。簡便了很多,而且最重要的是ST的大力推廣,未來功能會更加的完善,CubeMX功能示意參考圖4-2。圖4-2CubeMXSTM32CubeMX現(xiàn)在已經(jīng)支持STM32的全系列,列出F1的系列,見圖4-3CubeMX支持的F1HALAPI類型(通用和擴(kuò)展,API(應(yīng)用程序編程接口)是一些預(yù)先定義的可以了。或者說更簡單的:比如別人已經(jīng)做好了一塊幾何處理程序,你想拿來APISTM32各系列產(chǎn)品的特有功能和擴(kuò)展性能,提高HAL驅(qū)動的擴(kuò)展性。圖4-4推出HAL庫的一個特點(diǎn)。回調(diào)函數(shù)由外設(shè)初始化、中斷、處理完成/出錯觸發(fā)回調(diào)。如圖4-5,此時,我們只需關(guān)心如何處理中斷和異常。圖4-5 開發(fā)軟件安裝及使序編寫和調(diào)試我們一般都是使用Keil或者IAR軟件,所以安裝CubeMX軟件之前請大家先安裝STM32開發(fā)工具。Keil圖5-1Keil:ht /download/product/到Keil下載版本軟件。不過過程需要等操作,另外速度一般較為緩圖5-2Keilh /dd2/st/stm32f103ze/到ST官方網(wǎng)站下載最新STM32F103ZE系列關(guān)于Keil軟件平臺的驅(qū)動包,得到Keil.STM32F1xx_DFP.2.0.0.pack文件。圖5-3stm32f103ze系列驅(qū)硬石云盤云盤: /s/1hr8bwk0:KEILC51、ADS軟件建議先卸載掉,不然很容易造成KEILSTM32軟件無法正常使用。圖5-4Keil圖5-5證協(xié)擇默認(rèn)即可,點(diǎn)擊Next按鈕進(jìn)入下一步。圖5-6Keil圖5-7Keil5-8Finish按鈕完成安裝,這時會自動彈出驅(qū)動包安裝軟件界面,見圖5-9,這時我們點(diǎn)擊彈出的框中的OK按鈕。圖5-8圖5- Keil軟 驅(qū)動包安裝界 STM32F103Keil.STM32F1xx_DFP.2.0.0.pack文件,導(dǎo)入之后就會自動安裝,等待安裝完成后關(guān)閉驅(qū)動包安裝軟件就好,見圖5-10。圖5-10導(dǎo)入STM32F103系列驅(qū)動圖5- 驅(qū)動包安裝完Keil32KB的工程,比如無法編譯YS_F1Pro開發(fā)板的出廠程序,這時我們需要使用Keil工具Keil,得到完整限。Keil軟Keil的相關(guān)工具因涉及 使用管理員(這個是必須的)打開Keil軟件,選擇打開Keil證管理窗口(File->LicenseManagement…),見圖5-12。圖5-12Keil軟 圖5-13Keil軟 準(zhǔn)版的Keil軟件,就不受32KB編譯大小限制了。圖5-14獲 證數(shù)據(jù)因?yàn)槲覀冞€需要使用到STemWin和OS等功能,還需要“RealTimeOS”選項(xiàng)。重新設(shè)置軟件,見圖5-15,同樣證數(shù)據(jù)都Keil軟件證管理器中,見圖5-16。這樣Keil軟件完成。圖5-15獲 證數(shù)據(jù)圖5- Keil軟件完只需要一個選項(xiàng)就好了,效果參考圖5-17和圖5-18。圖5-17獲取證數(shù)據(jù)—專業(yè)圖5- IARIAR軟件獲圖5-19IAR可以到硬石云盤云盤: /s/1hr8bwk0:IAR軟件安5-19圖5-20IAR圖5-21IAR圖5-22IAR圖5-23IAR

圖5-24IAR圖5-25IAR圖5-26IARFinish按鈕后,有確認(rèn)的點(diǎn)擊確認(rèn)(安裝驅(qū)動圖5-27IAR經(jīng)過上述步驟,IAR軟件只是安裝完成了,下面是對IAR進(jìn)行IAR軟件圖5-28IAR第一源很豐富。這里提供的IAR軟件版本是7.40,相應(yīng)的機(jī)即可。圖5-29IAR第二機(jī)設(shè)置見圖5-30,點(diǎn)擊Generate按鈕,生成碼圖5-30IAR機(jī)設(shè)圖5-31 如圖5-32,需要選擇存放激活文件位置,ActivationInfo.txt。文件的存放位置,同安 圖5-32 打開IAR機(jī),如圖5-33,點(diǎn)擊“Activatelicense”后,進(jìn)入存放路徑選擇(如果該路徑內(nèi)存在此文件,替換即可圖5-33IAR第五圖5-34 第七個步驟是選擇激活回應(yīng)文件,如圖5-35。點(diǎn)擊“下一步”,完成圖5-35 STM32CubeMXSTM32CubeMX軟件可以直接ST,具體如下 /catalog/tools/PF259242圖5-36STCebeMX STM32CubeF1版本為V1.3.0,截圖見圖5-37:圖5-37STM32CubeF1界對于STM32F1系列版本應(yīng)該是V1.3.1,ST以補(bǔ)丁形式給出,要求更新,該補(bǔ)丁地址:5-

圖5-38Patch_CubeFW_F1中,需要直接到我們云盤即可。 STM32CubeF1V1.3.0V1.3.1STM32CubeF1另外特別注意,從ST都是版本的,并且要求STM32CubeMX軟件和STM32CubeF1這兩個文件一起,不要使用舊版本文件和版本搭按照STM32CubeMX軟件時首先會要求安裝Java,大家根據(jù)自己電腦安裝就可我們把重點(diǎn)放在新建STM32CubeMX工程上。安裝支持

圖5-39CubeMXYS-F1Pro開發(fā)板型號為STM32F103ZET6,這里需要安裝STM32F1系列的支持包,見圖5-40。圖5-40STM32F103系列支持包安圖5-41圖5-42入見圖5-43。圖5-43STM32F103系 支持包導(dǎo)入完新建工首先選擇“NewProject”5-44圖5-44圖5-45,然后點(diǎn)擊OK按鈕,自動彈出工程設(shè)置界面。圖5-45選擇型發(fā)板,這里設(shè)置使用外部晶振,并把PB0、PG6和PG7三個引腳設(shè)置為輸出模式,見圖5-46。圖5-46圖5-47界面內(nèi)容與中的設(shè)置關(guān)。我們選擇“GPIO”選項(xiàng),在彈出的界面中設(shè)置圖5-48GPIO同時,我們還可以查看與RCC圖5-49見圖5-50。圖5-50圖5-51堆棧大alloc或者malloc函設(shè)置使用KEILv5編譯器的,我們還提供了基于IAR編譯器的例程,設(shè)置見圖圖5-52設(shè)置工程名稱和路徑、KEILv5圖5-53設(shè)置工程名稱和路徑、IAR5-54圖5-545-55圖5-555-56圖5-56圖5-57KEILv5IAR5-58圖5-58IAR KEILv5和IAR軟件使KEILv55STM32CubeMX生成工程時,Keil軟件的工程配置,許多都軟件的目標(biāo)工具選項(xiàng)(OptionsforTarget“魔術(shù)棒”。圖6-1KEIL(DeviceCPU,編號2的區(qū)域是該CPU的一些描述。生設(shè)置CubeMX時,我們已選擇圖6-2(arget圖6-3RO(Flash地址,Size一欄輸入大小。HEXCubeMX6-4圖6-4(Listing圖6-5(User圖6-6讓編譯器能找到自己程序中包含的庫文件,其實(shí)這和我們在程序中添加#include<>的原理是一樣的。只不過是KEIL給我們一個更好的處理。在圖6-7C/C++編程,所以不必理會。Linker是連接選項(xiàng)卡,對于不是特別大或者特殊的程(DebugCubeMXSetting,進(jìn)入硬件調(diào)試仿真設(shè)置界面6-9FlashDownload界面,主要是對燒寫程序的功能選項(xiàng),CubeMX軟件生成的配置是沒有勾選ResetandRun的,在這里,勾選它是為了更方圖6-8圖6-9DebugCubeMXKEIL的在硬石HAL庫例程中,為了使整體的程序界面更加清晰,提高易讀性,以及方例程LEDBSP。具體工程組件、配置工具環(huán)境及管理書(管理工程項(xiàng)目bsp_led.c文圖6-10圖6-11編譯圖6-12成功實(shí)物IARIAREmbeddedWorkbenchforARMIARSystemsARM微處理器開發(fā)的一個集成開發(fā)環(huán)境(IARARM開發(fā)環(huán)境,IAR具有入在介紹IAR軟件的使用方法,是針對CubeMX生成的工程來進(jìn)行,首先是打開.夾下,打開工程“YS-F1Pro”,文件類型是:IARIDEWorkspace。圖6-13IAR個工程。鼠標(biāo)工程,選擇Options,如圖6-14。圖6-14進(jìn)入Options第一步是進(jìn)行的選擇,如圖6-15圖6-15圖6-16運(yùn)行庫配置,如圖6-17所示,選擇None表示應(yīng)用程序不運(yùn)行庫;選擇Normal表示普通運(yùn)行庫,其中沒有Locale接口和CLocale,不支持文件描述符,printfandscanf不支持多字節(jié)操作;選擇Full表示完整運(yùn)置文件。這里一般選擇Full。圖6-17Full。GeneralOptions的后面還有兩個選項(xiàng),因圖6-18圖6-19C/C++language2Charchar作為無符按無符號類型編譯的,因此運(yùn)行庫時選擇Signed可能導(dǎo)致類型不匹配錯誤。選項(xiàng)情況如圖6-20。圖6-20Char(OPtimization圖6-211和編2所示。定義預(yù)處理符號在上一章節(jié)中已經(jīng)講解過。圖6-22Converter圖6-23nker,6-25、圖6-26。圖6-24器選圖6-25內(nèi)部FLASHRAM圖6-266-27圖6-27MAPMCU6-28圖6-28MAPger選擇ST-Link作為硬件調(diào)試設(shè)備。圖6-29設(shè)置,這里選擇“FLASHLoader”6-30圖6-30設(shè)ST-Link6-31ST-LinkOK,完成工程的配置。其量很大,可見CubeMX的優(yōu)勢之處。圖6-31ST-Link圖6-32點(diǎn)擊編譯按鈕,編譯完成后,點(diǎn)擊調(diào)試按鈕,出現(xiàn)如圖6-33所示調(diào)試界面,點(diǎn)擊全速運(yùn)行,即可觀察到硬石開發(fā)板上LED呈流水燈亮暗。圖6-33 程序編譯和我們開發(fā)板默認(rèn)使用STLINK,原因是德產(chǎn)JLINK器價格十分昂貴,而大陸版的JLINK因原因已無法在淘寶。其他器聲稱能代替JLINK,但過市場考驗(yàn)。終上所述,我們還是推薦ST的STLINKV2器。Keil軟件方ST-Link驅(qū)動安ST-Link驅(qū)動地址為云盤 /s/1gfHHvY7ST-Linkv27-1圖7-1ST-Linkv2ST-Linkv2_upgradeST-LinkV2固件升級工具,大家可以根據(jù)需要更新,我們出貨時候已經(jīng)測試可以使用的,所以一般不更新都是可以的。解壓stsw-link009壓縮包,得到如圖7-2的內(nèi)容:圖7-2ST-LinkV2dpinst_amd64.exe文件,如果安裝之后沒有提裝dpinst_x86.exe文件即可(因?yàn)橛行?qū)動并不認(rèn)CPU,大家嘗試安裝下)。圖7-3ST-LinkV2管理器,可以看到會多一個設(shè)備:win10環(huán)境下可能顯示為:說明ST-Link驅(qū)動安裝已經(jīng)成接下來我們只需要在MDK工程里配工程位打開文件工程,下面我將以我們流水燈工程為例,介紹如何編譯與:首先打開光盤資料,尋找.uvprojx文件,我們的工程一般是在Project 7-4圖7-4配置環(huán)圖7-5ST-LinkV2連接方 方式,如示圖7-圖7-6設(shè)置模進(jìn)入環(huán)境設(shè)置,如圖7-圖7-7器環(huán)境設(shè)設(shè)置主FLASH大小,STM32F103ZET6FLASH大小為512K,設(shè)置方式如圖7-8,如已經(jīng)設(shè)置好了,就無需設(shè)置:圖7-8配置主FLASH大編譯7-9圖7-9ST-LinkV2成ISP方USB轉(zhuǎn)串口驅(qū), /s/1jH87LWy:76og。我們光盤里也有提供\YS-F1Pro光盤A_配套資料\5.包,請以管理員進(jìn)行驅(qū)動安裝。找到串口,如圖7-10:圖7-10USB硬件連默認(rèn)接上),如圖7-11所示:圖7-11USB設(shè)置工具選設(shè)置方式設(shè)置電平點(diǎn)擊圖7-12ISP軟件設(shè)成功畫圖7-13ISP成功界 另類HAL庫版本工程創(chuàng)5STM32CubeMx軟件創(chuàng)建合適我們自己開發(fā)平HALSTM32CubeMx軟件確實(shí)可以減少我們很多工作,STM32CubeF1固件取,仔細(xì)的尋找下你總會找到。了我們開發(fā)板的可以直接在光盤中尋找到,命名為:en.stm32cubef1V1.4.0.zip的壓縮文件;或者可以到官網(wǎng)去,這里提供一個:.cn/content/stcom/zh.html;你也可以自己搜索,搜索框中輸入“ST”,進(jìn)入官網(wǎng),然后如下圖8-1,接著搜索框輸入“Cube”,在搜索結(jié)果中,選擇第②步中的STM32CubeF1,點(diǎn)擊進(jìn)入。圖8-1圖8-2圖8-3HALDrivers:里面有三個文件包,分別是BSP、CMSIS、STM32F1xx_HAL_DriverCMSISBSP庫(BSP_LIB文件,Cortex-代碼/系統(tǒng)文件等(Device文件夾。STM32StemWinUSB庫等。Third_Party文件夾是第中間件,這些中間價都是非常成開源解決方案。建立工圖8-4圖8-5KEIL8-6圖8-6KEILSTMicroelectronics->STM32F1Series->STM32F103ZE。選擇好后點(diǎn)擊OK。圖8-7KEIL這里我們并沒使用到,點(diǎn)擊Cancel即可圖8-8KEIL然后我們打開我們移植工程的MDK-ARM文件夾,可以看到圖8-9,Listings和Objects是用來MDK編譯過程的一些中間文件,這里其刪除,替換成一個YS-F1Pro文件夾用作中間文件(后面會用到圖8-9工程MDK- 下的是,在之前,首先將各個HAL庫的Drivers文件夾,選擇屬性,在常規(guī)選項(xiàng)中,將只讀屬性的勾去掉,如果去掉了就不用理了。STM32Cube_F1_V1.40\STM32F1xx_HAL_Driver這個文件夾到移植工程\Driver中,保留STM32F1xx_HAL_Drever文件夾中的Inc和Src文件夾,其余全部刪在DriversCMSISSTM32Cube_FW_F1_V1.4.0\Drivers\CMSIS。①:文件夾中的Device到移植工程\Drivers\CMSIS;②:文件夾中的DSP_Lib到移植工程\Drivers\CMSIS,保留DSP_Lib中的Source文件夾,其余全部刪除;③:文件夾中的Include到移植工程\Drivers\CMSIS。一些關(guān)鍵的頭文件和源文件到我們的工程。定位到:STM32Cube_FW_F1_V1.4.0\Projects\STM32F103RB-Nucleo\Temtes\Inc文件夾,將stm32f1xx_hal_conf.h和stm32f1xx_it.h到移植工程\Inc中;定位中,將main.c、stm32f1xx_hal_msp.c、stm32f1xx_it.c三個文件到移植工程\Src 中;接下來我們還需要一個文件,讓我們定位到:lates,將system_stm32f1xx.c文件到移植工程\Src此外,我們還需要將硬石編寫的bsp文件夾進(jìn)來,打開我們硬石《YSF1_HAL-002.GPIO-流水燈》工程,將Src中的bsp文件到移植工(argets(Groups圖8-10ManagementProject\\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Temtes\arm,文件名為Drivers/CMSIS:添加system_stm32f1xx.c文件,這里主要是定義了系統(tǒng)初始SystemInitSystemCoreClockUpdate。路徑為:GPIOstm32f1xx_hal_gpio.c文件即可,(arget圖8-11RO(Flash地址,Size一欄輸入大小。HEX文件,前面的章節(jié)已經(jīng),這里將OUTPUT選擇輸出文件夾和LISTING的輸出文件夾都選擇為我們之前創(chuàng)建的YS-F1Pro文件夾。如圖8-12和圖圖8-12圖8-13(User圖8-14C/C++選項(xiàng)卡,在圖8-15中,定義預(yù)處理符號,和頭文件路徑的設(shè)置,是圖8-15C/C++圖8-16編程,所以不必理會。Linker是連接選項(xiàng)卡,對于不是特別大或者特殊的程(DebugSetting8-18FlashDownload界面,主要是對燒寫程序的功能選項(xiàng),比如勾選上ResetandRun,這樣我們每一次完成后開發(fā)板會自動復(fù)位開始工作。圖8-17圖8-18Debugstm32f1xx_hal_msp.cCubeMX生成的工程時,main.c文件和stm32f1xx.c文件,根據(jù)自己工程的需求做出修改即可,這里直接《YSF1_HAL-002.GPIO-流水燈》例程中的對應(yīng)內(nèi)容。點(diǎn)擊編譯,運(yùn)行,調(diào)8-19F7編譯無錯誤后,按下圖中的①調(diào)試(Debug)按鈕,進(jìn)F11,每點(diǎn)一次按鈕,程序運(yùn)行一步,遇到函數(shù)會跳進(jìn)F10,沒按一次按鈕,程序運(yùn)行一行,遇到函數(shù)跳過函圖8-19Watch窗口,比如我們要查看“count”這個變量的值,將count為全局變Add‘count’to…Watch1,然后在下方就會出現(xiàn)Watch窗口,可以觀察到Watch圖8-20WatchMemory窗口,我們根據(jù)上一步驟,count變量,選擇Add前加一個‘&’并按下回車鍵,將顯示變量的物理地址改為0x 擊窗口并選擇Unsigned/Int,如圖8-21所示,現(xiàn)在count的值便以32位的Memory,即可修改對應(yīng)地址的值。圖8-21Memory口,如圖8-22。圖8-22CallStack+Lcoals窗口,該窗口每當(dāng)程序停止時會顯示調(diào)用棧和當(dāng)前函數(shù)的所以局部變量。如果可能,局部變量的值會顯示,否則顯示<notinscope>。菜View/CallStackWindowCallStack+Locals窗口顯示或隱藏。們一個函數(shù)名,點(diǎn)擊”ShowCallerCode”和”ShowCalleeCode”即可進(jìn)圖8-23 yzerDebug8-24圖8-24TraceEnabl:使能SWV和ITM,這個選項(xiàng)只能在編輯模式修改,不會影響Watch和Memory窗口的更新。PCSamplingPC指針的采樣,Prescaler,1024*1616384PC指針會顯示1個,其他的不會;Periodieriod,使能PC指針采樣;onData能和數(shù)據(jù)有關(guān),但與PC采樣無關(guān)。ITMStimulusPorts:使能用于在uVision中輸出數(shù)據(jù)的類似printf的語句的3231KeilRTXViewer0用于六進(jìn)制數(shù),代表哪些端口是使能的;ricilegeRTOSITM端口TraceEventsCPU計(jì)數(shù)器。CPI,從第一個指令到每個指令所用的眠模式的累積周期數(shù),使用FCLK時鐘;LSU,從第一個周期開始,花費(fèi)在該選項(xiàng)使能TraceExceptions窗口中異常的顯示。完成上述步驟后編譯并打開Debug,打開菜單View/ysisWindows,Logicyzer8-25即可,同時可以可以使用編號⑤的快捷方圖8-25打開窗口后,count變量,將其Add到Logicyzer。點(diǎn)擊第④步的Setup按鈕,選count變量,將DispayRange的值改0x07,如圖8-26,最后點(diǎn)擊close。圖8-26run(全速運(yùn)行)8-27,點(diǎn)擊ZoomOut可以改變DebugCoreClock的數(shù)值,甚至可能需要重新上電開發(fā)板。Logicyzer4個變量,必須是全局變量、靜態(tài)變量或原始圖8-27 寄存寄存器(Register部件中,包含的寄存器有指令寄存器(IR)和程序計(jì)數(shù)器。在處理器的算術(shù)微控制微控制器是將微型計(jì)算機(jī)的主要部分集成在一個上的單微型計(jì)算不作區(qū)別,單片機(jī)就是微控制器,微控制器就是單片機(jī)。STM32F103ST公ARMCortex-M3內(nèi)核的微控制器。幾個章節(jié)內(nèi)容,見附件1)說明Cortex-M3內(nèi)核:Cortex‐M3處理器內(nèi)核是單片機(jī)的處理單元(CPU。完整的基于的MCU還需要很多其它組件。在制造商(比如ST、NXP、TI、Atmel等等)得到CM3處理器內(nèi)核的使用后,它們就可以把CM3內(nèi)核用在自己的硅片設(shè)計(jì)中,添加器,外設(shè),I/O以及其它功能塊,框圖見圖9-1。不同廠家設(shè)計(jì)出的單片機(jī)會有不同的配置,包括器容量、類型、外設(shè)等都各具特色。圖9-1Cortex-M3ortex‐M3是一個32位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路徑是32位的,寄存器是32位的,器接口也是2位的。M3采用了哈佛結(jié)構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)并行不悖。這樣一來數(shù)據(jù)不再占用指令總線,從而提升了性能。為實(shí)現(xiàn)這個特性,CM3內(nèi)部含有好幾條總線接口,每條都為自己的應(yīng)用場合優(yōu)化過,并且它們可以并行工作。但是另一方面,指令總線和數(shù)據(jù)總線共享同一個器空間(一個統(tǒng)一的器系統(tǒng)。換句話說,不是因?yàn)橛袃蓷l總線,可尋址空間就變成GB了。 比,圖9-1中的CM3內(nèi)核就相當(dāng)于電腦的CPU,器相當(dāng)于電腦的硬盤和內(nèi)存,內(nèi)部總線相當(dāng)于電腦的CPU與主板連接的導(dǎo)線…儲器結(jié)構(gòu)。處理器首先到程序指令器中程序指令內(nèi)容,后常是執(zhí)行。想了解什么是哈佛結(jié)構(gòu)與馮諾依曼結(jié)構(gòu)可以閱讀附件2M3是一個32位處理器內(nèi)核”,這樣的一個結(jié)果就是CM3可以非常方便的找到地址在4G大小之內(nèi)的地址,就是從0x 到0xFFFFFFFF。這個4G內(nèi)部總圖9-2。圖9-2STM32F1x9-2CM3STM32CPU;ICode、DCode、SystemCode分別叫指令總線、數(shù)據(jù)總線、以及系統(tǒng)總線,這三個對應(yīng)圖9-1中根線,可以傳輸32位數(shù)據(jù)。ICodeFlashCM3FlashFlash9-1中存儲器的一種,叫做程序器,我們編寫程序后程序一般就是在FlashDCodeSystemCode連接在一個叫總線矩陣的東西上面,實(shí)際上,掛在總DMA、Flash接口、SRAM、FSMCAHB系統(tǒng)總線這幾個部件。這里的SRAM相當(dāng)于電腦的內(nèi)存,屬于圖9-1中器的一種,叫做數(shù)據(jù)器,另外通過FSMC可以連接擴(kuò)展SRAM,達(dá)到增加SRAM效果,就是添加一條DMA究竟是什么東西,在這里也沒打算細(xì)講,它的全稱是:Directmemoryaccesscontroller(直接器存取控制器知道它是個操DMAFlash空間上數(shù)據(jù)傳輸SRAM上,這個過程可以無CM3內(nèi)核的控制CPU是可以做其他運(yùn)算工作的。關(guān)于DMA的其他內(nèi)容我們在后面會詳細(xì)講解。 器映性地址空間內(nèi),可的器空間被分成8個主要塊,每個塊為512MB,其他的”器映射見圖9-3,很多細(xì)節(jié)部分由半導(dǎo)體廠家自行定義。圖9-3Cortex-M3器映射預(yù)定STM32F10x系列器映射情況見圖9-4圖9-4STM32F1的器映射實(shí)通過把片上外設(shè)的寄存器映射到外設(shè)區(qū)就可以簡單地以內(nèi)存的方式來這些外設(shè)的寄存器,從而控制外設(shè)的工作。結(jié)果,片上外設(shè)可以使用C語言來操作。這種預(yù)定義的映射關(guān)系,也使得對速度可以做高度的優(yōu)化,而且對0到4GB,這些地址的存在使得我們編程變得統(tǒng)一化、簡單化。比如把 ~0x40010BFF總共0x3FF長度的地址空間分配給PortA即端口A,端口A可以實(shí)現(xiàn)STM32的最基本功能:控制引腳輸出高低電平,實(shí)際上端口A總共有16個引腳的,定義為PA0~PA15,每個引腳都可以單獨(dú)控制的。當(dāng)然端口A現(xiàn)這么多復(fù)雜的功能,顯然就需要分配0x3FF長度空間給它用才行(實(shí)際上一般都是用不完的)。這樣,比如,我們直接編寫程序往0x 0x0001就可以使得PA0這個引腳輸出高電平了,如果寫入是0x0003就可以使得PA0和PA1都輸出高電平。為什么會這樣子呢?因?yàn)樵赟TM32F103內(nèi)部硬 于GPIO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論