06 STM32的LED燈06 STM32 LED講解_第1頁
06 STM32的LED燈06 STM32 LED講解_第2頁
06 STM32的LED燈06 STM32 LED講解_第3頁
06 STM32的LED燈06 STM32 LED講解_第4頁
06 STM32的LED燈06 STM32 LED講解_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、學習STM32一、基本學習階段:1.相關原則。2.主題要求,結構圖,也許是為了實現(xiàn)想法3.熟悉相關庫函數(shù)及其使用方法以及固件庫驅動程序實例。編寫實現(xiàn)特定功能的驅動程序。5.在現(xiàn)有項目上加載驅動程序文件、調試器。模擬波形以在物理上實現(xiàn)。其次,一些重要文件(文件夾)位置:固件庫:嵌入式項目決賽現(xiàn)場資料STM32固件庫v 3.5 STM32 F10 x _ STD phoh _ lib STM32 F10 x _ STD PAH _ lib _ v 3 . 5 . 0STM32F10x固件庫中文解釋: SCM技術實踐-基于C51和STM32STM32相關數(shù)據(jù)STM32_CN.pdf參考手冊:嵌入式項

2、目最終現(xiàn)場資源數(shù)據(jù)手冊stm32f103rbt6.pdf:嵌入式項目決賽現(xiàn)場資源數(shù)據(jù)手冊藍橋杯嵌入式備賽手冊:https:/blog . csdn . net/Zach _ z/article/details/8048423原理圖文件:嵌入式項目決賽現(xiàn)場數(shù)據(jù)CT117E電路結構圖。pdf總原理圖如下所示6 STM32的LED指示燈6.1 GPIO基本原理6.1.1STM32的地址映射地址映射是將芯片上的存儲或I/O等資源與地址建立一對一對應關系。如果地址與寄存器相對應,則可以使用c語言指針指定地址,并修改此地址的內容以修改寄存器的內容。Cortex-M3有32個地址行,因此尋址空間大小為2 3

3、2位=4 GB。ARM設計為預配置這些4 GB的尋址空間。為片上外圍設備分配0x4000000到0x5 fffff (512mb)之間的地址。將片上外圍設備的寄存器映射到此地址區(qū)域,即可輕松訪問內存和訪問這些外圍設備的寄存器,從而控制外圍設備的操作。這樣片上外設可以用c語言工作。有關CM3內存映射,請參閱圖。STM32f10x.h此文件的重要內容是將stm32的所有寄存器映射到地址。6.1.2總線外圍設備STM32其他外圍設備安裝在其他總線上。6.1.3適用于STM32的時鐘系統(tǒng)首先,讓我們全面了解一下STM32的時鐘系統(tǒng)。具體參照圖片。STM32具有四個時間源:(1)高速外部時鐘(HSE):

4、使用外部正弦作為時間表,正弦頻率是4-16 MHz范圍內的所需頻率,我們通常使用8 MHz正弦。2)高速內部時鐘(HSI):由內部RC振蕩器產(chǎn)生,頻率為8 MHz,但不穩(wěn)定。3)低速外部時鐘(LSE):使用外部正弦作為分貝源,主要在實時時鐘模塊上提供,通常使用32.768 kHz。4)低速率內部時鐘(LSI):由內部RC振蕩器生成,主要提供給40 kHz頻率的實時時鐘模塊。讓我們以最常用的高速度外部鎖定(HSE)為例進行分析。首先,假設外部提供的晶體頻率為8MHz。從原理圖來看,外部正震為8MHz。(1)從左端的OSC_OUT和OSC_IN開始,兩個接腳分別連接至外部結晶的兩端。(2)8 MH

5、z時鐘遇到了第一個分頻器PLLXTPRE(HSE divider for PLL entry),可以通過寄存器配置選擇其輸出。輸出時鐘可以是輸入時鐘的降級或降級。我們通常不以分頻器為基礎,因此經(jīng)過PLLXTPRE后,仍然是8MHz時鐘。(3)在8MHz時鐘上遇到PLL src開關時,可以選擇輸出為外部高速時鐘(HSE)或內部高速時鐘(HSI)。在這里,選擇輸出為HSE,然后遇到PLL。倍頻作用。您可以在此輸入pllmultiplication factor。通過鎖相環(huán)的時鐘稱為PLLCLK。倍增器系數(shù)我們設定為9倍頻。也就是說,經(jīng)過PLL后,我們的手表從原來的8MHz HSE變?yōu)?2 MHz

6、PLLCLK。(4)然后出現(xiàn)了另一個交換機軟件。此開關后是STM32系統(tǒng)時鐘(SYSCLK)。通過此交換機可以切換SYSCLK的時間源,您可以從中選擇HSI、PLLCLK或HSE。由于選擇了PLLCLK時鐘,因此SYSCLK為72 MHz。(5)PLLCLK還流向USB自由分頻器,在輸入到SW之前輸出到USB外圍設備的時鐘(USB clk)。6)返回SYSCLK,SYSCLK將經(jīng)過AHB預分頻器,然后重新輸入到其他外圍設備。輸出到稱為HCLK、FCLK的時鐘時,還直接輸出到SDIO外圍設備的SDIOCLK時鐘、存儲控制器FSMC的FSMCCLK時鐘,以及作為APB1和APB2的預失真的輸入端。

7、在此示例中,AHB預防程序將禁用預防程序。也就是說,輸出的頻率是72 MHz。(7)GPIO外圍設備安裝在APB2總線上,APB2上的時鐘是APB2預分配器的輸出,APB2預分配器上的時鐘源是AHB預分配器。因此,如果將APB2預定義器設置為分頻器,則GPIO外圍設備的時鐘也可能與HCLK(72 MHz)相同。通過對表樹的分析,可以看到,一系列的倍頻,分頻后,得到了幾個與我們的開發(fā)密切相關的表。(1)SYSCLK: STM32系統(tǒng)時鐘,大多數(shù)設備的時鐘源,主要由AHB previsor分配給各個部件。(2)HCLK:由AHB預設計器直接輸出并提供給內存、DMA和Cortex內核的高速總線AHB

8、的時鐘信號,CPU時鐘速度與STM32的計算速度、數(shù)據(jù)訪問速度密切相關的Cortex內核的時鐘。(3)PCLK1:從APB1預分配裝置輸出的外圍設備時鐘,最大頻率為36MHz,適用于APB1總線上安裝的外圍設備。(4)PCLK2: APB2預分配器輸出的周邊時鐘,最大頻率為72 MHz,適用于APB2匯流排掛載的周邊裝置。6.2功能和結構實施6.2.1實施功能關閉所有指示燈,使兩個指示燈交替閃爍。6.2.2 LED硬件連接6.3固件庫驅動程序實例和函數(shù)詳細信息從固件庫的“project-STM 32 F10 x _ STD PAH _ examples-gpio-io toggle”文件夾中打

9、開“main.c”默認情況下,它包含所有LED初始化驅動程序所需的代碼,可以直接復制,更改其針腳和映射以創(chuàng)建時鐘。首先定義結構類型變量GPIO_InitStructure。然后調用庫函數(shù)RCC_APB2PeriphClockCmd()打開時鐘。默認情況下,外圍設備時鐘關閉。因此,外圍設備時鐘通常設置為初始化外圍設備時打開(根據(jù)設計產(chǎn)品電源要求,使用時也不會打開)。參考固件庫函數(shù)STM32F10x固件庫中文解釋: SCM技術實踐-基于C51和STM32STM32相關數(shù)據(jù)調用時必須輸入兩個參數(shù)。一個參數(shù)是在要控制的APB2總線上裝載的外圍時鐘,第二個參數(shù)是選擇打開還是關閉時鐘。如果使用I/O的針多

10、路復用,則多路復用功能時鐘也將打開。如果GPIOB的Pin0可用作ADC1的輸入針腳,則現(xiàn)在使用它作為ADC1,不僅打開GPIOB時鐘,還打開廣告C1的時鐘,如下所示:RCC _ apb2 periphclockcmd(RCC _ apb2 per iph _ gpiob | RCC _ apb2 per iph _ ADC 1,enable);打開參考固件庫函數(shù)STM32F10x固件庫中文解釋,繼續(xù)查找初始化函數(shù):填充核心成員,然后調用GPIO初始化函數(shù)GPIO_Init()。調用函數(shù)之前,有以下過程:1 GPIO_InitStructure。將值分配給GPIO_Pin結構成員。GPIO的G

11、PIO_InitStructure(如果有多個GPIO集)。指定GPIO_Pin的值并指定該值后,調用GPIO_Init()函數(shù)初始化一次。2)為GPIO_Mode指定值,如果驅動LED,則指定GPIO_Mode_Out_PP,將其設置為通用推式推式拉式模式。3)將值分配給GPIO_Speed,或者在輸出模式下,速度通常設置為GPIO_Speed_50MHz,宏指示插針的最大輸出速度為50MHz,而在輸入模式下,無需設置GPIO_Speed的值。分為四種輸入模式:頂拉動輸入模式、下拉輸入模式、浮動輸入模式和模擬輸入模式。模擬輸入模式(GPIO_Mode_AIN)、無連接、下降電阻、通過其他線路

12、將電壓信號發(fā)送到片上外設模塊。傳輸?shù)紸DC模塊時,ADC收集電壓信號。因此,使用ADC外圍設備時,應將其設置為模擬輸入模式。推拉輸出模式、泄漏輸出模式、多路復用推拉輸出模式和多路復用泄漏輸出模式四種輸出模式。推拉輸出模式根據(jù)工作方法命名。兩個管子交替?zhèn)鲗В粋€負責充電電流,一個負責拉動電流,使其負載能力和開關速度都比一般方式大幅度提高。推拉輸出的低水平為0伏,高水平為3.3伏。在泄漏輸出模式中,控制輸出為0,接地輸出,控制輸出為1,則處于高電阻狀態(tài)。為了正常使用,必須連接一個外部電阻器。如圖所示。典型的推拉輸出模式通常用于輸出級別為0和3.3伏特的情況。另一方面,常規(guī)泄漏輸出模式通常用于電平不

13、匹配。也就是說,如果需要輸出5伏的較高水平,則必須將外部1個上部電阻器、電源5伏、GPIO設置為打開泄漏模式,如果輸出高電阻狀態(tài)較高,則必須從上部拉電阻和電源向外輸出5伏的水平。必須根據(jù)電路圖增加時鐘GPIOC,通過推拉輸出增加GPIO_Pin_8到GPIO_Pin_15設置。設置pin高或低級別的函數(shù)在keil左側的Project中查找“stm32f10x_gpio.h”,轉到文件底部,找到GPIO_SetBits()控制輸出高級別,GPIO_ResetBits()控制輸出低6.4驅動程序文件創(chuàng)建注意事項比賽的時候,有機會的時候可以提前寫一些驅動器代碼,但是如果不能用紙條寫中文筆記,很容易導

14、致亂碼。保存時選擇所有類型* *。評分引擎的情況是用機器評分,只看現(xiàn)象,根據(jù)現(xiàn)象直接評分,不看代碼。6.4.1編寫main函數(shù)文件名為main_led.c,可以直接復制到項目中。/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *文件名:LED閃爍控制*實驗目的:1。確定如何配置外圍設備時鐘* 2 .了解STM32處理器GPIO的工作原理*程序說明:使用程序之前,請確保通過跳線正確連接與LED相關的針腳。*實施功能:關閉所有指示燈,使兩個指示燈交替閃爍。*日期版本:2

15、019-4-12/V1.0a* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */* includes - includes-*/#include stm32f10x.h #include led.h /如果有此詞組,led.h文檔將自動加載到項目中,并且所有.無需用戶手動添加h文件/* private typedef - */* private define - */* private macro - */* private variables - */* private function prototypes - */* private functions - */* *描述* 主函數(shù)* 參數(shù)None* 返回值為None*/Int main(void)unsigned int I;LED _ Init();L

溫馨提示

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

評論

0/150

提交評論