




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
YS-F1Pro開發(fā)板開發(fā)手冊(HAL庫 系列技術: 話(硬石電 STM32Cube是一個全面的軟件平臺,包括ST產品的每個系列,(STM32Cube_F1是針對STM32F1系列STM32Cube硬件抽象層(HAL)和一套中間組件(RTOS,USB,FS,TCP等等。STM32Cube是由ST公司倡議,旨在減少開發(fā)負擔、時間和費用,為開(HAL外設的接口函數(shù)(USB以太網等復雜外設),代碼結構強壯,已通過CodeSonar認證。同時,HAL還集成了廣泛的例程,可以運行在不同意法半導體YS-F1Pro開發(fā)板是硬石團隊研發(fā)的針對STM32F103的綜合性實驗測試平臺,開發(fā)板幾乎囊括了所有的外設,這對新手是非常好的學臺,開發(fā)板幾乎所有采購來著嘉立創(chuàng)平臺,質量有保證,這與還是有很最終掌握STM32的基本編程方法,學會將STM32CubeMX應用到自己DIY應用YS-F1ProSTM32的知識也就那如果有原作者認為我們不能您的著作內容,請務必們,我們會把本文檔參考大量文檔而編寫完成,部分內容可能直接網絡文檔,所以在們會虛心求教,我們會根據(jù)情況本店模塊以表示我們的誠意。F1Pro 硬石YS-F1Pro開發(fā)板HAL庫例程持續(xù)更新 (一 硬件設 第1 YS-F1Pro開發(fā)板硬件設 YS-F1Pro開發(fā)板硬件資 YS-F1Pro開發(fā)板跳帽配置說 YS-F1Pro開發(fā)板IO分 第2 YS-F1Pro開發(fā)板原理圖詳 微控制 FSMC—擴展SRAM和TFT液 擴展 LCD液 電源管 STM32F103供 開發(fā)板供 SWD和ISP接 SWD接 ISP方 數(shù)據(jù)設 串行 串行 SD USB從設備(USB CAN通 紅外接收2.4G無線模 W5500以太網模 電機模 步進電 舵 直流電 AD轉 其他功能電 LED燈電 獨立按 電容式按 蜂鳴 溫濕度傳感器接 頭接 所有 第3 3.5寸液晶模組電路設 液晶顯 電阻觸摸實 (二 軟件設 第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驅動安 工程位 配 環(huán) 編 ISP方 安裝USB轉串口驅 硬件連 設置工具選 成功畫 第8 另類HAL庫版本工程創(chuàng) STM32CubeF1固件 建立工 調 第9 寄存 寄存器定 微控制 內部總 器映 位帶操 外 時鐘和復 復 時鐘 第10章Cortex-M3內 CM3內核簡化模 寄存 寄存器應用分 第11章GPIO—流水 GPIO介 GPIO相 LED燈硬件設 GPIO外設結構 GPIO編程流程分 流水燈代碼實 蜂鳴器控 蜂鳴器驅動電路設 蜂鳴器控制代碼實 第12章工程文件結構和復位啟 例程文件結 啟動代 復位啟動流 第13章GPIO—按鍵輸入掃 按鍵輸入硬件設 按鍵掃描編程流程分 按鍵輸入掃描代碼實 第14章EXTI—按鍵中斷輸 NVIC寄存 中斷優(yōu)先級分 優(yōu)先級分 NVIC相關函 中斷配置實 EXTI功能框圖分 按鍵中斷編程流程分 按鍵中碼實 第15章USART—RS-232串口通 串口通信協(xié) 物理 協(xié)議層 STM32的USART簡 串口通信硬件設 使用CubeMX軟件生成USART工 USART結構 編程要 USART代碼實 第16章USART-指令控 USART的調試應 使用CubeMX生成工 編程要 USART串口指令代碼實 第17章DMA—直接內存 DMA功能框 DMA硬件設 DMA外設結構 DMA編程流程分 內存數(shù)據(jù)拷貝代碼實 第18章DMA-USART1接 DMA器到外設模 使用CubeMX軟件生成工 編程流程分 DMA器到外設代碼實 第19章SysTick—系統(tǒng)滴答定時 SysTick介 相關寄存器介 系統(tǒng)滴答定時器硬件設 SysTick編程流程分 SysTick實現(xiàn)定時代碼實 第20章TIM-基本定時 基本定時器簡 基本定時器功能框 TIM6&TIM7編程流程分 TIM6&TIM7基本定時代碼實 第21章TIM-高級控制定時 高級控制定時 輸入捕獲模 輸入模 強置輸出模 輸出比較模 模 互補輸出和死區(qū)插 在外部時清除OCxREF信 產生六 輸 單脈沖模 編接口模 與霍爾傳感器的接 TIMx定時器和外部觸發(fā)的同 高級控制定時器外設結構 高級控制定時器生 編程流程分 高級控制定時器生 代碼實 第22章TIM-通用定時器(電容按鍵 電容按鍵原 電容按鍵硬件設 STM32Cube生成工 觸摸按鍵外設結構 觸摸按鍵編程流程分 觸摸按鍵代碼實 第23章TIM-通用定時器(呼吸燈 呼吸燈功能實 使用CubeMX軟件生成代 呼吸燈編程流程分 呼吸燈代碼實 第24章ADC-電壓STM32ADC介 DMA傳輸在ADC中的應 ADC硬件電路設 ADC外設機構體分 ADC編程流程分 基于DMA傳輸?shù)亩嗤ǖ繟D轉換代碼實 雙ADC慢速交叉模式代碼實 第25章DAC-電壓輸 DAC簡 DAC硬件電路設 使用CubeMX生成DAC正弦波工 DAC外設結構體分 正弦波輸出代碼實 可調電壓輸出代碼實 第26章LCD-液晶顯 LCD簡 LCD控制器簡 FSMC簡 LCD硬件設 使用CubeMX生成工 FSMC外設結構 LCD編程流程分 LCD顯示代碼實 第27章LCD顯示中英文(字模在內部 ASCII編 字 制作字 使用CubeMX生成工 LCD顯示字符及漢字編程流程分 LCD顯示字符代碼實 LCD顯示漢字代碼實 第28章FSMC-外部SRAM實 SRAM簡 SRAM硬件電路設 使用CubeMX生成工 FSMC-外部SRAM外設結構 FSMC-外部SRAM編程流程分 FSMC-外部SRAM代碼實 FSMC-擴展SRAM內存管理代碼實 第29章SDIO-SD SDIO簡 SD卡物理結 SDIO功能框 SDIO總 總線拓 總線協(xié) 命 響 SDIO-SD卡硬件電路設 使用CubeMX生成工 SDIO外設結構體分 SDIO編程流程分 SDIO-SD卡讀寫代碼實 第30章SDIO-基于SD卡的FatFS文件系 文件系 FatFS簡 使用CubeMX生成工 第31章SPI-串行 SPI簡 SPI物理 SPI協(xié)議 SPI框架剖 SPI通訊過 SPI-串行Flash硬件設 使用CubeMX軟件生成工 SPI-串行Flash結構 SPI-串行Flash編程流程分 SPI-串行Flash代碼實 第32章SPI-基于串行Flash的FatFS文件系 使用CubeMX生成工 SPI-基于串行Flash的FatFS文件系統(tǒng)編程流程分 SPI-基于串行Flash的FatFS文件系統(tǒng)代碼實 第33章I2C- I2C簡 I2C物理 協(xié)議 STM32的I2C特性及架 I2C-EEPROM硬件設 使用CubeMX生成工 I2C-EEPROM編程流程分 I2C-EEPROM代碼實現(xiàn)(硬件 I2C-EEPROM代碼實現(xiàn)(軟件模擬 第34章LCD-顯示漢字(字庫在SD卡 中文編 字模的生 LCD-顯示函數(shù)(字庫在SD卡)編程流程分 LCD-顯示函數(shù)(字庫在SD卡)代碼實 第35章LCD-顯示漢字(字庫在串行 燒寫中文字庫到串行 燒寫中文字庫到串行Flash代碼實 第36章LCD-顯示(在SD卡 36.1格式簡 BMP頭文件格 生成BMP圖 LCD-顯示(在SD卡)結構 LCD-顯示(在SD卡)編程流程分 LCD-顯示(在SD卡)代碼實 第37章LCD-觸摸畫 觸摸屏簡 電阻觸摸屏檢測原 觸摸屏硬件電路設 使用CubeMX生成工 第38章CAN-雙機通信測 CAN簡 CAN物理 CAN協(xié)議 STM32的CAN外設簡 CAN總體描 CAN通訊硬件電路設 使用CubeMX生成工 第39章RS-485通 RS-485通信簡 RS-485通信硬件電路分 RS-485通訊編程流程分 RS-485通訊代碼實 第40章以太網- 以太網簡 以太網模 以太網分層概 以太網接入方 W5500的Socket初始 W5500相關例程功能簡 以太網W5500硬件設 使用CubeMX生成工 以太網-W5500結構 TCP-Server編程流程分 TCP-Server代碼實 第41章WIFI- ESP-8266簡 主要參 功能描 接口說 ESP-8266硬件電路設 端設 使用CubeMX生成工 ESP8266結構 ESP-8266控制開發(fā)板編程流程分 ESP-8266控制開發(fā)板代碼實 第42章串口 IAP簡 Keil軟件設 更新 IAP結構體分 IAP編程流程分 第43章STemWin圖像界面軟件 第44章uC/OS-Ⅲ移植-HAL庫版 (一) YS-F1Pro開發(fā)板硬件設YS-F1Pro開發(fā)板YS-F1Pro1-11-2圖1-1YS-F1ProYS-F1ProSTM32F103ZET6這個控制器的內STM32F103的內部資源,都可以在此開發(fā)板上圖1-2YS-F1ProYS- 開發(fā)板跳帽為盡可能發(fā)揮STM32F103ZET6這顆微控制器的性能、提供的接口,開發(fā)板設計使用了跳帽選擇實現(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選連接藍牙HC-05、GPS、GSM模塊選連接藍牙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接口功能引腳做為模塊功能引腳時特別注意需要關閉的JTAG和SWD功能。STM32F103有多種啟動模式可以選擇。啟動模式理解是:微控制器允許從理解,比如,大廳對應區(qū)0,存放了一個房號,這個房號就是由BOOT0和BOOT1引腳決定的;房間1對應內Flash2RAM,房間3對應系統(tǒng)開發(fā)板默認通過兩個10K歐的電阻把BOOT0和BOOT1引腳都拉低Flash2-2圖2-2這里需要需要注意的一點,BOOT0BOOT1引腳是有可能被拉高為高電平的,因為這里有10K歐電阻的存在,后面在模塊電路會用到BOOT0引腳。我們需要為STM32F103提供一個時鐘源,一般使用8MHz的無源石英晶振,見。實際上,STM32F103內部有一個主時鐘源,也為8MHz,但一般我們不年歷)還需要提供32.768KHz的時鐘源。電路設計見圖2-3。圖2-32-圖2-4STM32F103ZET6NRESET為低電平時,CPU處R6C5RC復位電路。當系統(tǒng)上電時,C50,CPU處于復位狀態(tài)VDD(3.3V)電源通R6C5充電C5的電壓升CPU的高電平門檻電壓時,CPU退出復位狀態(tài)轉入運行狀態(tài)。在設計電路時,需要選擇適當?shù)腞值和C值,以保證NRESET低電平持續(xù)時間滿足CPU復位最小脈寬的要求。(FSMCFlashcontroller所有的外部器共享控制器輸出的地址、數(shù)據(jù)和控制信號,每個外部設備SRAMStaticRAM的縮寫,它是一種具有靜止存取功能的內存,不需這是和Flash最大的區(qū)別。YS-F1Pro開發(fā)板板載1片1MX16的靜態(tài)器(1M問模式。電路設計見圖2-5。圖2-5擴展2-表格2-1SRAM高字節(jié)控制(I/O8~低字節(jié)控制(I/O0~A0~I/O0~LCD液STM32F103ZET6沒有內置LCD控制器,因此需要選用帶控制器的XPT2046TSC2046STM32F103ZET6SPISPI接口資源緊張我們使用普通的IO接口模擬SPI通信時序時序與TSC2046正常通信,實際測試觸摸效果并沒有因為使用模擬SPI時序而影響。TSC2046具有中斷輸出口線,當觸摸屏被按壓時PENIRQ口線輸出低電平。2-6圖2-6TFT2-表格2-2STM3212觸摸從機輸34觸摸從機輸56觸摸時鐘7~LCD_DB0~電源管STM32F103供則是通過一個電感后與3.3V連接,參考圖2-7。圖2-7STM32F103ZET6開發(fā)板供開發(fā)板不同模塊可能需要的電源電壓有+5V和+3.3V兩種。5V電源可以有兩MINIUSBUSB線5V電壓,這種方法非常方便,通常都是使用這種方法的,該最大可輸出3A電流,驅動力十足,一般只有在開發(fā)板接上很多模塊才要這種供電方法。3.3V電源則是利用AMS1117-3.3從5V電源轉換得到。電路設計見圖2-8。其中,D6SMAJ5.0A5V外圖2-85V3.3VSWD和ISP接SWD接JTAGARM20SWD接口只6個引腳。YS-F1Pro開發(fā)板僅支持SWD調試接口JTAG接口,這樣JTAG其余的功能引腳可以用作普通的GPIO使用。SWD接口調試接口和原理圖見圖2-9圖2-9SWDRESET#是STM32的硬件復位引腳。仿真器(比如J-Link和ST-Link仿真于大多數(shù),我們還是建議在調試口中增加RESET引腳。電的。對于J-Link仿真器,是必須的,因為J-Link仿真器內部的電平轉換芯ST-Link仿真器,這個電源引腳可以不接,因缺省就是3.3V的。JTMS/SWDIO(PA13)、JTCK/SWCLK(PA14SWD調試接口的數(shù)圖設計了一個ST-LinkV2仿真器,實物圖和開發(fā)板連接圖見圖2-10。圖2-10ST-Linkv2JTAG轉成與我們開發(fā)板匹配的準,即功能引腳排序可以自行設計。實物連接見圖2-11。圖2-11ST-Linkv2JTAGSWD轉換板就可以了,僅支持SWD模式。另外我們還提供了把我們的ST-Linkv2仿真器轉換成標準的JTAG接口的轉換方案,不過僅支持SWD模式,實物連接參考圖2-12,注意這里使用的紅圖2-12硬石STLinkv2轉JTAG接ISP方STM32F103支持ISP(InSystemProgram)程序,電路設計見圖2-13,ISP電路使用到CH340G,它是一個USB轉串口IC,這里使用STM32的當STM32F103被設置為從系統(tǒng)代碼啟動后,通過通信設定后,可以接收USART1數(shù)據(jù)更新內部Flash內容,這樣達到程序目的,當再次從內部Flash啟動時就0)STM32F1032-13中下方把BOOT0拉高,這樣STM32F103就可以進入ISP模式,注意這里是可以進定啟動模式,所以現(xiàn)在需要讓STM32F103進行一次復位,這時就要看DTR#引腳的功能了。當DRT#為高電平時Q1三極管導通,原本RTS#引腳就為低電平,Q1導通后U4的第2引腳(標識為“Z”)也是低電平,而U4是74HC1G66GW,實際上低電平,此時STM32F103進入復位狀態(tài)。74HC1G66GW在這里起到系統(tǒng)上電后延時RTS#引腳信號對RESET#引腳的好了,在成功復位之后就可以需要把DTR#引腳拉高,此時RESET#引腳也被拉高,現(xiàn)在ISP軟件就可以對STM32F103程序。等程序完之后,RTS#BOOT0引腳為低電平,這樣等一切就緒之后,在復位一下STM32F103就可以從Flash啟動,并運行新程序。圖2-13ISP接數(shù)據(jù)設開發(fā)板提供多種數(shù)據(jù)方式,有串行Flash、EEPROM、SD卡USB串行128Mbit(16M字節(jié))Flash,型號為W25Q128FVSIG,它掛載在STM32F103SPI1接口上,電路設計見圖2-14。圖2-14串行2-表格2-3FlashSTM32片選(ChipSelect)CS由高變低時,被能。在命令傳輸器件,CE串行數(shù)據(jù)輸出(SerialData寫保護使能(Write3.3V電源,缺省是串行數(shù)據(jù)輸入(SerialData數(shù)據(jù)輸出到Flash時停止SPI通信通過上拉電阻接電源,SPI串行EEPROMSTM32I2CI2C2線I2CI2C主設備(STM32F103控制器,可以允許并接很多I2C從設備,這些設備必須具備唯一的地址以便于區(qū)分。1-10KI2C256個字節(jié),對于我們普通應用來說是足夠了的。當然,你也可以選擇換大容量的,因為我們的電路在原理上是兼容AT24C02~24C512全系列EEPROM芯片的。電路參考圖2-15。圖2-15AT24C02程序的時候要注意這點。I2C_SCLSTM32F103PB6上,I2C_SDAPB7I2CI2C通信方SDSTM32F103ZET6SDIOSD卡操作,YS-F1Pro開發(fā)板設電路設計參考圖2-16。圖2-16SDSD4SDIO12MB/S,非常適USB從設備(USBSTM32F1031USBUSBDevice設備。USBDevice接USBUSBUSBHost。使用這個接口,我們可以做U盤實驗(將開發(fā)板SD卡和串Flash虛擬2U盤可以通過電腦讀寫文件。另外,也可以利用該USB接口實現(xiàn)模擬串口效果。2-17USBD_ENBLE(PG13)Q3三極管導通是,USBDevice接口才有效。圖2-17USB數(shù)據(jù)傳輸—通信實STM32F103集成多個通口,包括5個UART、CAN通信等等,YS-F1Pro開發(fā)板充STM32F103性能,集成了多種形式的通信方法RS-232串口通信等等,并擴展了GSM()模塊和GPS模塊。USART2—WiFi、GSM、GPS、藍GSM模塊,NEO-7MGPSHC-05藍牙模塊,使用我們配套的杜體可閱讀1.2小節(jié)。圖2-18USART2YS-F1ProESP-12FWiFi模塊。ESP-12FWiFi模塊TensilicaL10632位微型MCU16位精簡模式,主頻支該模塊支持標準的IEEE802.11b/g/n協(xié)議,完整的TCP/IP協(xié)議棧。用戶可以USART3—RS-232、RS-RS-232RS-485在設備應用中非常普遍,開發(fā)板提供1RS-232(DB9連接器)1RS-485接口,見圖2-19。圖2-19USART3這里選擇SP3232E,實現(xiàn)標準RS-232電平轉換為STM32支持的TTL電平。RS-485接口情況類似,采用差分信號負邏輯,邏輯"0”PB2PB2RS-485發(fā)則是兩個偏置電阻,以保證靜默狀態(tài)時,RS-485總線維持邏輯1。RS-485是在RS-2321200MCAN通YS-F1ProSN65HVD230作為CAN驅動器。CAN5.08mm間距的接線端子引出,參考圖2-20。圖2-20CANCAN120CAN總線的一個中間節(jié)點使用,那么可能需要去掉這個120歐阻抗匹配電阻。CAN總線的數(shù)8腳的電1.2V時,收發(fā)器處于允許發(fā)送(也可以接收。R36電阻的阻值可以控制波形的斜率。阻值越小,波形的上升沿和下大波特率也是1Mbps。SN65HVD230的第4腳是接收到的信號輸出,為推挽輸出模式,因此和STM32相連時,無需外加上拉電阻。紅外接外接收管,電路設計見圖2-21。圖2-21該信號連接在PB1上。2.4G無線模無線通信在很多場合非常有用,YS-F1ProRFID2-22圖2-222.4GNRF24L012Mbps,傳輸距離最大可以到15米左右(空曠地,無干擾SPI3PB3是SWDSDO功能引腳,所以使用SPI3時必須禁用SWD接口功能。W5500W5500以太網模塊包含了一個硬件TCP/IP協(xié)議棧W5500以及一個含RJ-4(HR911105A。其中,W5500TCP/IP嵌入式以太網控制器,為嵌入式系統(tǒng)提供了更加簡易的互聯(lián)網連接方案.使用硬件邏TCP/IP協(xié)議棧的傳輸層及網絡層(如:TCP,UDP,ICMP,IPv4,ARP,IGMPPPPoE等協(xié)議32KRAM作為數(shù)據(jù)收發(fā)緩存。使得上位機主控,只需承擔TCP/IP應用層控制信息的YS-F1Pro開發(fā)板集成了一個整個W5500圖2-23W5500圖2-23中上半部分是W5500及其電路,W5500需要外接一個25MHz的晶振。W5500SPISTM32F103SPI3接口,W5500PF11,W5500中斷輸出引腳同樣通過一個跳線帽連接至PF9W5500的復位硬件與STM32F103的復位引腳直接在一起。VS10532-24,VS1053可以使用SPI通信進行通信,這里預留設計SPI3接口做為VS1053的通口,同時IO供使用,實際上預留的這個接口也是可以給其他模塊使用圖2-24VS1053這里要特PB3SWD接口SDO功能引腳以使SPI3時必須禁用SWD接口功能。電機模步進電系統(tǒng)。ULN2003A7組達林頓晶體管陣列和相應的電阻網絡以及鉗位二極絡構成,具有同時驅動7組負載的能力,為單片雙極型大功率高速集成電路。ULN2003一般用于小型步進電機驅動。YS-F1Pro開發(fā)板集成了一個ULN2003A和對應的接口,電路設計參考圖2-2528BYJ-4842、57類型步進電機是使用控制,類似直流電機的控制方法。圖2-25圖2-26舵作原理是由發(fā)出訊號給舵機,經由電路板上的IC判斷轉動方向,再驅動子,并將磁鐵置於圓柱體內,這就是無馬達。舵機解剖圖參考圖2-27。圖2-27圖2-28里還需要注意,PA15JTAG接口引腳,在編程時注意禁JTAG接口功能,PA15直流電STM32STM32IO接口驅動能力動器從而來實現(xiàn)電機的旋轉控制。STM32一般是通過產生信號控制電機驅動器,所以需要用到STM32定時器功能。STM32F103ZET6有兩個高級控制定時器TIM1和TIM8,非常適合復雜的電機控制場合,YS-F1Pro開發(fā)板設計時將圖2-29。圖2-29ADAD轉換顧名思義就是模擬量轉換成數(shù)字量,實際應用中很多信號都是模擬STM32F103內部集成了一個12位ADC是一種逐次近型模擬數(shù)字數(shù)字3.3V2^12=4096等分,在特定的輸入引腳上的某一電YS-F1Pro6AD轉換引腳,其中兩個引腳可以直接通過跳線帽短接至光敏電阻和精密電位器,電路設計參考圖2-30。圖2-30AD6ADADC1、ADC2ADC3其他功能電LED燈電YS-F1Pro3LED2-31圖2-31LEDLED1GND(0V)PB0引腳上(中間還JP3默認使用跳線帽短路PB0引腳為高電平(3.3V)的話,此時電路存在電壓差,電流從LED1燈正極流向負極再經電阻流入GND,此時LED1PB0引腳的高或者低電平就可以自由控制LED1燈的亮滅。LED2LED3控制原理與LED1是相同的。獨立按以做為系統(tǒng)喚醒和TAMPER(侵入)功能,電路設計見圖2-32。圖2-32KEY1按鍵通過R43電阻接在PA0R44電平。KEY1按鍵可以做為系統(tǒng)喚醒功能。KEY2PC13R45作用后PC13慢慢上升自3.3V。KEY2按鍵可用于系統(tǒng)侵入功能。電容式按電容式觸摸感應按鍵的基本原理如圖2-33所示,當(手指)接觸金屬形成一個電容,感應電容量通常有幾pF到幾十pF。利用這個最基本的原理,在外圖2-33圖2-34蜂鳴YS-F1Pro2-35STM32I/O口是無法直接驅圖2-35別是GPIO連接此基極的時候,一般在GPIO所在IC剛剛上電初始化的時GPIO的內部也處于一種上電狀態(tài),很不穩(wěn)定,容易產生噪聲,引起誤動(的電流由電阻流入地)當三極管開關作用時,ONOFF時間越短越好,OFF時,因晶體管中的殘留電荷引起的時間滯后,B,ER起到放電溫濕度傳感器接YS-F1ProDS18B20、DHT11、AM2302等型號溫度傳感器和溫濕度傳感器,電路設計參考圖2-36。圖2-36頭接塊,電路設計見圖2-37。圖2-37頭接 I2C1_SCLSCCB接口的控制時鐘(I2C接口類似I2C1_SDASCCB接口的串行數(shù)據(jù)輸入(出)端(I2C接口類似 FIFO_WENFIFO寫使能(1為允許CMOS寫入到FIFO,0為);FIFO_RCLKFIFO內存時鐘控制端;FIFO_WRST—FIFO寫指針服務端;FIFO_OEFIFO關斷控制;FIFO_RRST—FIFO讀指針復位端。所有板把所有的GPIO通過排針引出,參考圖2-38。圖2-38GPIO 3.5寸液晶模組電路設為配合YS-F1Pro開發(fā)板做人機交互界面,我們專門設計了一個3.5寸液晶顯示模組,該液晶模組是320*480的真彩屏,驅動為ILI9488。該屏使用16bit總線模式,采用6個白色LED作為背光源。液晶顯3-18bit16bit數(shù)據(jù)并口,我們默認16bit接口,這樣才可以充分發(fā)stm32的優(yōu)勢。背光采用圖3-1電阻觸參考圖3-2。圖3-2(二) HAL庫介相信會來閱讀本文的同學都大概知道STM32微控制器是什么東西,本文討論的是STM32F103ZET6,實際上合適STM32F1系列。微控制器最簡單如PA0,輸出高電平,要怎么辦呢?編寫程序,然后編譯程序并到開發(fā)板運使用Keil或者IAR。ST為廣大使用者方便編程已經提供了與硬件底層相關的C語言文件,節(jié)省了我們很多時間,我們重點是學習如何使用。STM32C語言編程可以是直接寄存器編程、標準固件庫編程以及新推出的HAL庫編程。直接寄存器編程是直接操作寄存器方法,比如語句:PB1引腳,0x0003對應PB0PB1GPIOBBSRR是什么東西,如果要展開講有太多了,簡單講就是ST已經為我們定義好的東GPIOBBSRRSTM32編程的一個軟件函數(shù)庫,就是目前還流行的標準固件庫。使用如下語句,就可以控制PB0引腳輸出高電平:10年以來受廣大使用者推崇,就是現(xiàn)在還有大部分工程師、公司都在使用。不過,現(xiàn)實情況有點,ST已經不再更新STM32標準固件庫,STM32F12013年后沒有正式發(fā)布更新版本,所以現(xiàn)在都停留在V3.5.0版本。現(xiàn)在ST全力推新的軟件編程庫:HAL庫,現(xiàn)在使用HAL庫實現(xiàn)PB0輸出高電平編程如下:用誰知道,總體來說HAL庫還是比較人性化的,并且配合STM32CubeMX軟件使用可以簡化編程。關于HAL庫詳細介紹請繼續(xù)看。HAL在解釋HAL庫之前,我們先認識STM32CubeMX(簡稱CubeMX,下同。它是ST推出的一種STM32設置和初始化C代碼的,界面見圖4-1。圖4-1STM32CubeMX就是CubeMX軟件是一個工具軟件,我們只要在上面簡單的點點點就可以生成我們的工作量,我們的工作重點放在項目任務的實現(xiàn)。CubeMX的使用介紹將會HAL的全稱是:Hardware 的函數(shù)庫,因為和HAL關,在這里,我們便稱為HAL庫。HAL庫是一個由ST基于硬件抽象層而設計的軟件函數(shù)包,它由程序、HAL庫,無需深入掌握底層硬件細節(jié),開發(fā)者就可以輕松應用每一個外API(applicationprogramminginterface應用編程界面)驅動,API對該驅動程序的結構,函數(shù)和參數(shù)名稱都進行了標準化。在ST的中,HAL庫是大勢所趨,在ST公司開發(fā)的部分中,只有HAL庫而沒有標準庫,從這點便可以說明,以后的目標是逐漸的轉向HALCubeMX生成代碼后,工程項目和初始化代碼已經完成。簡便了很多,而且最重要的是ST的大力推廣,未來功能會更加的完善,CubeMX功能示意參考圖4-2。圖4-2CubeMXSTM32CubeMX現(xiàn)在已經支持STM32的全系列,列出F1的系列,見圖4-3CubeMX支持的F1HALAPI類型(通用和擴展,API(應用程序編程接口)是一些預先定義的可以了?;蛘哒f更簡單的:比如別人已經做好了一塊幾何處理程序,你想拿來APISTM32各系列產品的特有功能和擴展性能,提高HAL驅動的擴展性。圖4-4推出HAL庫的一個特點?;卣{函數(shù)由外設初始化、中斷、處理完成/出錯觸發(fā)回調。如圖4-5,此時,我們只需關心如何處理中斷和異常。圖4-5 開發(fā)軟件安裝及使序編寫和調試我們一般都是使用Keil或者IAR軟件,所以安裝CubeMX軟件之前請大家先安裝STM32開發(fā)工具。Keil圖5-1Keil:ht /download/product/到Keil下載版本軟件。不過過程需要等操作,另外速度一般較為緩圖5-2Keilh /dd2/st/stm32f103ze/到ST官方網站下載最新STM32F103ZE系列關于Keil軟件平臺的驅動包,得到Keil.STM32F1xx_DFP.2.0.0.pack文件。圖5-3stm32f103ze系列驅硬石云盤云盤: /s/1hr8bwk0:KEILC51、ADS軟件建議先卸載掉,不然很容易造成KEILSTM32軟件無法正常使用。圖5-4Keil圖5-5證協(xié)擇默認即可,點擊Next按鈕進入下一步。圖5-6Keil圖5-7Keil5-8Finish按鈕完成安裝,這時會自動彈出驅動包安裝軟件界面,見圖5-9,這時我們點擊彈出的框中的OK按鈕。圖5-8圖5- Keil軟 驅動包安裝界 STM32F103Keil.STM32F1xx_DFP.2.0.0.pack文件,導入之后就會自動安裝,等待安裝完成后關閉驅動包安裝軟件就好,見圖5-10。圖5-10導入STM32F103系列驅動圖5- 驅動包安裝完Keil32KB的工程,比如無法編譯YS_F1Pro開發(fā)板的出廠程序,這時我們需要使用Keil工具Keil,得到完整限。Keil軟Keil的相關工具因涉及 使用管理員(這個是必須的)打開Keil軟件,選擇打開Keil證管理窗口(File->LicenseManagement…),見圖5-12。圖5-12Keil軟 圖5-13Keil軟 準版的Keil軟件,就不受32KB編譯大小限制了。圖5-14獲 證數(shù)據(jù)因為我們還需要使用到STemWin和OS等功能,還需要“RealTimeOS”選項。重新設置軟件,見圖5-15,同樣證數(shù)據(jù)都Keil軟件證管理器中,見圖5-16。這樣Keil軟件完成。圖5-15獲 證數(shù)據(jù)圖5- Keil軟件完只需要一個選項就好了,效果參考圖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按鈕后,有確認的點擊確認(安裝驅動圖5-27IAR經過上述步驟,IAR軟件只是安裝完成了,下面是對IAR進行IAR軟件圖5-28IAR第一源很豐富。這里提供的IAR軟件版本是7.40,相應的機即可。圖5-29IAR第二機設置見圖5-30,點擊Generate按鈕,生成碼圖5-30IAR機設圖5-31 如圖5-32,需要選擇存放激活文件位置,ActivationInfo.txt。文件的存放位置,同安 圖5-32 打開IAR機,如圖5-33,點擊“Activatelicense”后,進入存放路徑選擇(如果該路徑內存在此文件,替換即可圖5-33IAR第五圖5-34 第七個步驟是選擇激活回應文件,如圖5-35。點擊“下一步”,完成圖5-35 STM32CubeMXSTM32CubeMX軟件可以直接ST,具體如下 /catalog/tools/PF259242圖5-36STCebeMX STM32CubeF1版本為V1.3.0,截圖見圖5-37:圖5-37STM32CubeF1界對于STM32F1系列版本應該是V1.3.1,ST以補丁形式給出,要求更新,該補丁地址:5-
圖5-38Patch_CubeFW_F1中,需要直接到我們云盤即可。 STM32CubeF1V1.3.0V1.3.1STM32CubeF1另外特別注意,從ST都是版本的,并且要求STM32CubeMX軟件和STM32CubeF1這兩個文件一起,不要使用舊版本文件和版本搭按照STM32CubeMX軟件時首先會要求安裝Java,大家根據(jù)自己電腦安裝就可我們把重點放在新建STM32CubeMX工程上。安裝支持
圖5-39CubeMXYS-F1Pro開發(fā)板型號為STM32F103ZET6,這里需要安裝STM32F1系列的支持包,見圖5-40。圖5-40STM32F103系列支持包安圖5-41圖5-42入見圖5-43。圖5-43STM32F103系 支持包導入完新建工首先選擇“NewProject”5-44圖5-44圖5-45,然后點擊OK按鈕,自動彈出工程設置界面。圖5-45選擇型發(fā)板,這里設置使用外部晶振,并把PB0、PG6和PG7三個引腳設置為輸出模式,見圖5-46。圖5-46圖5-47界面內容與中的設置關。我們選擇“GPIO”選項,在彈出的界面中設置圖5-48GPIO同時,我們還可以查看與RCC圖5-49見圖5-50。圖5-50圖5-51堆棧大alloc或者malloc函設置使用KEILv5編譯器的,我們還提供了基于IAR編譯器的例程,設置見圖圖5-52設置工程名稱和路徑、KEILv5圖5-53設置工程名稱和路徑、IAR5-54圖5-545-55圖5-555-56圖5-56圖5-57KEILv5IAR5-58圖5-58IAR KEILv5和IAR軟件使KEILv55STM32CubeMX生成工程時,Keil軟件的工程配置,許多都軟件的目標工具選項(OptionsforTarget“魔術棒”。圖6-1KEIL(DeviceCPU,編號2的區(qū)域是該CPU的一些描述。生設置CubeMX時,我們已選擇圖6-2(arget圖6-3RO(Flash地址,Size一欄輸入大小。HEXCubeMX6-4圖6-4(Listing圖6-5(User圖6-6讓編譯器能找到自己程序中包含的庫文件,其實這和我們在程序中添加#include<>的原理是一樣的。只不過是KEIL給我們一個更好的處理。在圖6-7C/C++編程,所以不必理會。Linker是連接選項卡,對于不是特別大或者特殊的程(DebugCubeMXSetting,進入硬件調試仿真設置界面6-9FlashDownload界面,主要是對燒寫程序的功能選項,CubeMX軟件生成的配置是沒有勾選ResetandRun的,在這里,勾選它是為了更方圖6-8圖6-9DebugCubeMXKEIL的在硬石HAL庫例程中,為了使整體的程序界面更加清晰,提高易讀性,以及方例程LEDBSP。具體工程組件、配置工具環(huán)境及管理書(管理工程項目bsp_led.c文圖6-10圖6-11編譯圖6-12成功實物IARIAREmbeddedWorkbenchforARMIARSystemsARM微處理器開發(fā)的一個集成開發(fā)環(huán)境(IARARM開發(fā)環(huán)境,IAR具有入在介紹IAR軟件的使用方法,是針對CubeMX生成的工程來進行,首先是打開.夾下,打開工程“YS-F1Pro”,文件類型是:IARIDEWorkspace。圖6-13IAR個工程。鼠標工程,選擇Options,如圖6-14。圖6-14進入Options第一步是進行的選擇,如圖6-15圖6-15圖6-16運行庫配置,如圖6-17所示,選擇None表示應用程序不運行庫;選擇Normal表示普通運行庫,其中沒有Locale接口和CLocale,不支持文件描述符,printfandscanf不支持多字節(jié)操作;選擇Full表示完整運置文件。這里一般選擇Full。圖6-17Full。GeneralOptions的后面還有兩個選項,因圖6-18圖6-19C/C++language2Charchar作為無符按無符號類型編譯的,因此運行庫時選擇Signed可能導致類型不匹配錯誤。選項情況如圖6-20。圖6-20Char(OPtimization圖6-211和編2所示。定義預處理符號在上一章節(jié)中已經講解過。圖6-22Converter圖6-23nker,6-25、圖6-26。圖6-24器選圖6-25內部FLASHRAM圖6-266-27圖6-27MAPMCU6-28圖6-28MAPger選擇ST-Link作為硬件調試設備。圖6-29設置,這里選擇“FLASHLoader”6-30圖6-30設ST-Link6-31ST-LinkOK,完成工程的配置。其量很大,可見CubeMX的優(yōu)勢之處。圖6-31ST-Link圖6-32點擊編譯按鈕,編譯完成后,點擊調試按鈕,出現(xiàn)如圖6-33所示調試界面,點擊全速運行,即可觀察到硬石開發(fā)板上LED呈流水燈亮暗。圖6-33 程序編譯和我們開發(fā)板默認使用STLINK,原因是德產JLINK器價格十分昂貴,而大陸版的JLINK因原因已無法在淘寶。其他器聲稱能代替JLINK,但過市場考驗。終上所述,我們還是推薦ST的STLINKV2器。Keil軟件方ST-Link驅動安ST-Link驅動地址為云盤 /s/1gfHHvY7ST-Linkv27-1圖7-1ST-Linkv2ST-Linkv2_upgradeST-LinkV2固件升級工具,大家可以根據(jù)需要更新,我們出貨時候已經測試可以使用的,所以一般不更新都是可以的。解壓stsw-link009壓縮包,得到如圖7-2的內容:圖7-2ST-LinkV2dpinst_amd64.exe文件,如果安裝之后沒有提裝dpinst_x86.exe文件即可(因為有些驅動并不認CPU,大家嘗試安裝下)。圖7-3ST-LinkV2管理器,可以看到會多一個設備:win10環(huán)境下可能顯示為:說明ST-Link驅動安裝已經成接下來我們只需要在MDK工程里配工程位打開文件工程,下面我將以我們流水燈工程為例,介紹如何編譯與:首先打開光盤資料,尋找.uvprojx文件,我們的工程一般是在Project 7-4圖7-4配置環(huán)圖7-5ST-LinkV2連接方 方式,如示圖7-圖7-6設置模進入環(huán)境設置,如圖7-圖7-7器環(huán)境設設置主FLASH大小,STM32F103ZET6FLASH大小為512K,設置方式如圖7-8,如已經設置好了,就無需設置:圖7-8配置主FLASH大編譯7-9圖7-9ST-LinkV2成ISP方USB轉串口驅, /s/1jH87LWy:76og。我們光盤里也有提供\YS-F1Pro光盤A_配套資料\5.包,請以管理員進行驅動安裝。找到串口,如圖7-10:圖7-10USB硬件連默認接上),如圖7-11所示:圖7-11USB設置工具選設置方式設置電平點擊圖7-12ISP軟件設成功畫圖7-13ISP成功界 另類HAL庫版本工程創(chuàng)5STM32CubeMx軟件創(chuàng)建合適我們自己開發(fā)平HALSTM32CubeMx軟件確實可以減少我們很多工作,STM32CubeF1固件取,仔細的尋找下你總會找到。了我們開發(fā)板的可以直接在光盤中尋找到,命名為:en.stm32cubef1V1.4.0.zip的壓縮文件;或者可以到官網去,這里提供一個:.cn/content/stcom/zh.html;你也可以自己搜索,搜索框中輸入“ST”,進入官網,然后如下圖8-1,接著搜索框輸入“Cube”,在搜索結果中,選擇第②步中的STM32CubeF1,點擊進入。圖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。選擇好后點擊OK。圖8-7KEIL這里我們并沒使用到,點擊Cancel即可圖8-8KEIL然后我們打開我們移植工程的MDK-ARM文件夾,可以看到圖8-9,Listings和Objects是用來MDK編譯過程的一些中間文件,這里其刪除,替換成一個YS-F1Pro文件夾用作中間文件(后面會用到圖8-9工程MDK- 下的是,在之前,首先將各個HAL庫的Drivers文件夾,選擇屬性,在常規(guī)選項中,將只讀屬性的勾去掉,如果去掉了就不用理了。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。一些關鍵的頭文件和源文件到我們的工程。定位到: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文件夾進來,打開我們硬石《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é)已經,這里將OUTPUT選擇輸出文件夾和LISTING的輸出文件夾都選擇為我們之前創(chuàng)建的YS-F1Pro文件夾。如圖8-12和圖圖8-12圖8-13(User圖8-14C/C++選項卡,在圖8-15中,定義預處理符號,和頭文件路徑的設置,是圖8-15C/C++圖8-16編程,所以不必理會。Linker是連接選項卡,對于不是特別大或者特殊的程(DebugSetting8-18FlashDownload界面,主要是對燒寫程序的功能選項,比如勾選上ResetandRun,這樣我們每一次完成后開發(fā)板會自動復位開始工作。圖8-17圖8-18Debugstm32f1xx_hal_msp.cCubeMX生成的工程時,main.c文件和stm32f1xx.c文件,根據(jù)自己工程的需求做出修改即可,這里直接《YSF1_HAL-002.GPIO-流水燈》例程中的對應內容。點擊編譯,運行,調8-19F7編譯無錯誤后,按下圖中的①調試(Debug)按鈕,進F11,每點一次按鈕,程序運行一步,遇到函數(shù)會跳進F10,沒按一次按鈕,程序運行一行,遇到函數(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,即可修改對應地址的值。圖8-21Memory口,如圖8-22。圖8-22CallStack+Lcoals窗口,該窗口每當程序停止時會顯示調用棧和當前函數(shù)的所以局部變量。如果可能,局部變量的值會顯示,否則顯示<notinscope>。菜View/CallStackWindowCallStack+Locals窗口顯示或隱藏。們一個函數(shù)名,點擊”ShowCallerCode”和”ShowCalleeCode”即可進圖8-23 yzerDebug8-24圖8-24TraceEnabl:使能SWV和ITM,這個選項只能在編輯模式修改,不會影響Watch和Memory窗口的更新。PCSamplingPC指針的采樣,Prescaler,1024*1616384PC指針會顯示1個,其他的不會;Periodieriod,使能PC指針采樣;onData能和數(shù)據(jù)有關,但與PC采樣無關。ITMStimulusPorts:使能用于在uVision中輸出數(shù)據(jù)的類似printf的語句的3231KeilRTXViewer0用于六進制數(shù),代表哪些端口是使能的;ricilegeRTOSITM端口TraceEventsCPU計數(shù)器。CPI,從第一個指令到每個指令所用的眠模式的累積周期數(shù),使用FCLK時鐘;LSU,從第一個周期開始,花費在該選項使能TraceExceptions窗口中異常的顯示。完成上述步驟后編譯并打開Debug,打開菜單View/ysisWindows,Logicyzer8-25即可,同時可以可以使用編號⑤的快捷方圖8-25打開窗口后,count變量,將其Add到Logicyzer。點擊第④步的Setup按鈕,選count變量,將DispayRange的值改0x07,如圖8-26,最后點擊close。圖8-26run(全速運行)8-27,點擊ZoomOut可以改變DebugCoreClock的數(shù)值,甚至可能需要重新上電開發(fā)板。Logicyzer4個變量,必須是全局變量、靜態(tài)變量或原始圖8-27 寄存寄存器(Register部件中,包含的寄存器有指令寄存器(IR)和程序計數(shù)器。在處理器的算術微控制微控制器是將微型計算機的主要部分集成在一個上的單微型計算不作區(qū)別,單片機就是微控制器,微控制器就是單片機。STM32F103ST公ARMCortex-M3內核的微控制器。幾個章節(jié)內容,見附件1)說明Cortex-M3內核:Cortex‐M3處理器內核是單片機的處理單元(CPU。完整的基于的MCU還需要很多其它組件。在制造商(比如ST、NXP、TI、Atmel等等)得到CM3處理器內核的使用后,它們就可以把CM3內核用在自己的硅片設計中,添加器,外設,I/O以及其它功能塊,框圖見圖9-1。不同廠家設計出的單片機會有不同的配置,包括器容量、類型、外設等都各具特色。圖9-1Cortex-M3ortex‐M3是一個32位處理器內核。內部的數(shù)據(jù)路徑是32位的,寄存器是32位的,器接口也是2位的。M3采用了哈佛結構,擁有獨立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)并行不悖。這樣一來數(shù)據(jù)不再占用指令總線,從而提升了性能。為實現(xiàn)這個特性,CM3內部含有好幾條總線接口,每條都為自己的應用場合優(yōu)化過,并且它們可以并行工作。但是另一方面,指令總線和數(shù)據(jù)總線共享同一個器空間(一個統(tǒng)一的器系統(tǒng)。換句話說,不是因為有兩條總線,可尋址空間就變成GB了。 比,圖9-1中的CM3內核就相當于電腦的CPU,器相當于電腦的硬盤和內存,內部總線相當于電腦的CPU與主板連接的導線…儲器結構。處理器首先到程序指令器中程序指令內容,后常是執(zhí)行。想了解什么是哈佛結構與馮諾依曼結構可以閱讀附件2M3是一個32位處理器內核”,這樣的一個結果就是CM3可以非常方便的找到地址在4G大小之內的地址,就是從0x 到0xFFFFFFFF。這個4G內部總圖9-2。圖9-2STM32F1x9-2CM3STM32CPU;ICode、DCode、SystemCode分別叫指令總線、數(shù)據(jù)總線、以及系統(tǒng)總線,這三個對應圖9-1中根線,可以傳輸32位數(shù)據(jù)。ICodeFlashCM3FlashFlash9-1中存儲器的一種,叫做程序器,我們編寫程序后程序一般就是在FlashDCodeSystemCode連接在一個叫總線矩陣的東西上面,實際上,掛在總DMA、Flash接口、SRAM、FSMCAHB系統(tǒng)總線這幾個部件。這里的SRAM相當于電腦的內存,屬于圖9-1中器的一種,叫做數(shù)據(jù)器,另外通過FSMC可以連接擴展SRAM,達到增加SRAM效果,就是添加一條DMA究竟是什么東西,在這里也沒打算細講,它的全稱是:Directmemoryaccesscontroller(直接器存取控制器知道它是個操DMAFlash空間上數(shù)據(jù)傳輸SRAM上,這個過程可以無CM3內核的控制CPU是可以做其他運算工作的。關于DMA的其他內容我們在后面會詳細講解。 器映性地址空間內,可的器空間被分成8個主要塊,每個塊為512MB,其他的”器映射見圖9-3,很多細節(jié)部分由半導體廠家自行定義。圖9-3Cortex-M3器映射預定STM32F10x系列器映射情況見圖9-4圖9-4STM32F1的器映射實通過把片上外設的寄存器映射到外設區(qū)就可以簡單地以內存的方式來這些外設的寄存器,從而控制外設的工作。結果,片上外設可以使用C語言來操作。這種預定義的映射關系,也使得對速度可以做高度的優(yōu)化,而且對0到4GB,這些地址的存在使得我們編程變得統(tǒng)一化、簡單化。比如把 ~0x40010BFF總共0x3FF長度的地址空間分配給PortA即端口A,端口A可以實現(xiàn)STM32的最基本功能:控制引腳輸出高低電平,實際上端口A總共有16個引腳的,定義為PA0~PA15,每個引腳都可以單獨控制的。當然端口A現(xiàn)這么多復雜的功能,顯然就需要分配0x3FF長度空間給它用才行(實際上一般都是用不完的)。這樣,比如,我們直接編寫程序往0x 0x0001就可以使得PA0這個引腳輸出高電平了,如果寫入是0x0003就可以使得PA0和PA1都輸出高電平。為什么會這樣子呢?因為在STM32F103內部硬 于GPIO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛保管寄售協(xié)議書
- 人工費外包合同協(xié)議書
- 駕校投資加盟協(xié)議書
- 采樣作業(yè)安全協(xié)議書
- 解除期權股權協(xié)議書
- 代家長陪讀合同協(xié)議書
- 讓老公簽忠誠協(xié)議書
- 農場看護房轉讓協(xié)議書
- 車禍報廢賠償協(xié)議書
- 解除增資擴股協(xié)議書
- 超星爾雅學習通《美學原理(北京大學)》2025章節(jié)測試附答案
- (高清版)DB11∕T2256-2024城市軌道交通鋼軌踏面維修技術規(guī)范
- DB11∕T2279-2024社會單位消防安全評估規(guī)范
- 病歷質量培訓課件
- 機房施工安全培訓
- 中國卒中學會急性缺血性卒中再灌注治療指南+2024解讀
- 裝飾報價單完整版本
- 設計單位現(xiàn)場施工期間配合及技術經驗服務措施
- 【MOOC期末】《英美文學里的生態(tài)》(北京林業(yè)大學)期末中國大學慕課MOOC答案
- 能源管理系統(tǒng)投標技術文件
- 大學生個人職業(yè)生涯規(guī)劃課件模板
評論
0/150
提交評論