stm32入門程序解釋_第1頁
stm32入門程序解釋_第2頁
stm32入門程序解釋_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、接觸了 STM32的開發(fā)板快一周了 , 拿到板子廠商提供了些 DEMO程序 , 其他想自己學(xué)習(xí) , 看了 ST的資料手冊 , 感覺看下來 , 一個(gè)工具還是不知道怎么用 , 還好現(xiàn)在網(wǎng)絡(luò)強(qiáng)大 , 在論壇上可以去找自己需要的資料 . 我把搜集的資料整理了一下 , 以及自己加了一些自己的 , 方便自己以后再用到 , 方便查找 , 同時(shí)和網(wǎng)友們一起分享 , 希望你們有什么新的想法也提出來, 一起分享 .開始吧 ! 嘿嘿簡述1STM32的輸入輸出管腳有下面8 種可能的配置 :( 4 輸入 +2 輸出 +2 復(fù)用輸出) 浮空輸入 _IN_FLOATING 帶上拉輸入 _IPU 帶下拉輸入 _IPD( 所謂

2、上拉就是接一電阻到電源;下拉就是接一電阻到地。也就是說帶上拉就是口初始的時(shí)候是高電平,下拉就是低電平。 ) 模擬輸入 _AIN 開漏輸出 _OUT_OD 推挽輸出 _OUT_PP 復(fù)用功能的推挽輸出_AF_PP 復(fù)用功能的開漏輸出_AF_ODI/O口的輸出模式下,有3 種輸出速度可選 (2MHz、10MHz和 50MHz),這個(gè)速度是指I/O 口驅(qū)動電路的響應(yīng)速度而不是輸出信號的速度, 輸出信號的速度與程序有關(guān)(芯片內(nèi)部在I/O 口的輸出部分安排了多個(gè)響應(yīng)速度不同的輸出驅(qū)動電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動電路)。通過選擇速度來選擇不同的輸出驅(qū)動模塊,達(dá)到最佳的噪聲控制和降低功耗的目的

3、。高頻的驅(qū)動電路,噪聲也高,當(dāng)不需要高的輸出頻率時(shí),請選用低頻驅(qū)動電路, 這樣非常有利于提高系統(tǒng)的 EMI 性能。當(dāng)然如果要輸出較高頻率的信號,但卻選用了較低頻率的驅(qū)動模塊,很可能會得到失真的輸出信號。關(guān)鍵是 GPIO的引腳速度跟應(yīng)用匹配(推薦 10 倍以上)。比如:對于串口,假如最大波特率只需,那么用2M的GPIO的引腳速度就夠了,既省電也噪聲小。對于 I2C 接口,假如使用 400k 波特率,若想把余量留大些,那么用 2M的 GPIO的引腳速度或許不夠, 這時(shí)可以選用 10M的 GPIO 引腳速度。對于 SPI 接口,假如使用 18M或 9M波特率,用 10M的GPIO的引腳速度顯然不夠了

4、,需要選用 50M的 GPIO的引腳速度。所有端口都有外部中斷能力。 為了使用外部中斷線,端口必須配置成輸入模式。GPIO 口的配置具有上鎖功能,當(dāng)配置好 GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復(fù)位才能解鎖。2在 STM32中如何配置片內(nèi)外設(shè)使用的IO 端口首先,一個(gè)外設(shè)經(jīng)過 配置輸入的時(shí)鐘和 初始化后即被激活 ( 開啟) ;如果使用該外設(shè)的輸入輸出管腳, 則需要配置相應(yīng)的 GPIO端口(否則該外設(shè)對應(yīng)的輸入輸出管腳可以做普通 GPIO管腳使用);再對外設(shè)進(jìn)行詳細(xì)配置。對應(yīng)到外設(shè)的輸入輸出功能有下述三種情況:一、外設(shè)對應(yīng)的管腳為輸出: 需要根據(jù)外圍電路的配置選擇對應(yīng)的管腳為復(fù)用功

5、能的推挽輸出或復(fù)用功能的開漏輸出。二、外設(shè)對應(yīng)的管腳為輸入: 則根據(jù)外圍電路的配置可以選擇浮空輸入、帶上拉輸入或帶下拉輸入。三、 ADC對應(yīng)的管腳:配置管腳為模擬輸入。如果把端口配置成復(fù)用輸出功能, 則引腳和輸出寄存器斷開, 并和片上外設(shè)的輸出信號連接。 將管腳配置成復(fù)用輸出功能后, 如果外設(shè)沒有被激活,那么它的輸出將不確定。3通用 IO 端口( GPIO)初始化:GPIO 初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| B |C, ENABLE):使能 APB2總線外設(shè)時(shí)鐘RCC_ APB2PeriphResetCmd (RCC_APB2Per

6、iph_GPIOA | B| C,DISABLE):釋放 GPIO復(fù)位配置各個(gè) PIN 端口(模擬輸入 _AIN、輸入浮空_IN_FLOATING、輸入上拉 _IPU、輸入下拉 _IPD、開漏輸出 _OUT_OD、推挽式輸出 _OUT_PP、推挽式復(fù)用輸出 _AF_PP、開漏復(fù)用輸出 _AF_OD)GPIO 初始化完成=最近剛開始學(xué)習(xí)STM32,所以從最基本的GPIO開始學(xué)起;首先看看 STM32的 datasheet 上對 GPIO口的簡單介紹:每個(gè) GPI/O 端口有兩個(gè) 32 位配置寄存器 (GPIOx_CRL, GPIOx_CRH),兩個(gè) 32 位數(shù)據(jù)寄存器(GPIOx_IDR,GPI

7、Ox_ODR),一個(gè) 32 位置位 / 復(fù)位寄存器 (GPIOx_BSRR),一個(gè) 16 位復(fù)位寄存器 (GPIOx_BRR)和一個(gè) 32 位鎖定寄存器(GPIOx_LCKR)。GPIO 端口的每個(gè)位可以由軟件分別配置成多種模式。 每個(gè) I/O 端口位可以自由編程,然而 I/0 端口寄存器必須按 32 位字被訪問 ( 不允許半字或字節(jié)訪問 ) 。GPIOx_BSRR和 GPIOx_BRR寄存器允許對任何GPIO 寄存器的讀 / 更改的獨(dú)立訪問;這樣,在讀和更改訪問之間產(chǎn)生IRQ 時(shí)不會發(fā)生危險(xiǎn)。端口位配置 CNFx1:0=xxb , MODEx1:0=xxb再看 GPIO功能很強(qiáng)大:1. 通用

8、 I/O(GPIO) :最最基本的功能,可以驅(qū)動 LED、可以產(chǎn)生 PWM、可以驅(qū)動蜂鳴器等等;2. 單獨(dú)的位設(shè)置或位清除: 方便軟體作業(yè), 程序簡單。 端口配置好以后只需 GPIO_SetBits(GPIOx, GPIO_Pin_x) 就可以實(shí)現(xiàn)對 GPIOx的 pinx位為高電平;3. 外部中斷 / 喚醒線:端口必須配置成輸入模式時(shí),所有端口都有外部中斷能力;4. 復(fù)用功能 (AF) :復(fù)用功能的端口兼有IO 功能等。復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,I/O端口被配置成浮空輸入模式:(CNFx1:0=01b ,MODEx1:0=00b) 。5. 軟件重新映射 I/O 復(fù)用功能:為了使不同

9、器件封裝的外設(shè) I/O 功能的數(shù)量達(dá)到最優(yōu), 可以把一些復(fù)用功能重新映射到其他一些腳上。 這可以通過軟件配置相應(yīng)的寄存器來完成。 這時(shí),復(fù)用功能就不再映射到它們的原始引腳上了;鎖定機(jī)制:當(dāng)在一個(gè)端口位上執(zhí)行了所定(LOCK)程序,在下一次復(fù)位之前,將不能再更改端口位的配置。GPIO基本設(shè)置GPIOMode_TypeDef GPIO mode定義及偏移地址GPIO_Mode_AIN = 0x0,.GPIOEGPIO_Pin_X 可以選擇 GPIO_Pin_0,GPIO_Pin_1.這個(gè)最好看下STM32的手冊 , 以及自己的硬件電路 .常用的 GPIO操作函數(shù) :uint8_t GPIO_Rea

10、dInputDataBit(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin);讀 GPIO某一位的輸入uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);讀 GPIO的輸入uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin);讀 GPIO某一位的輸出uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);讀 GPIO的輸出void GPIO_SetBits(GPIO_TypeDef* GPIO

11、x, uint16_t GPIO_Pin);將GPIO的某個(gè)位置位void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin);將GPIO的某個(gè)位復(fù)位void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,BitAction BitVal);寫 GPIO的某個(gè)位voidGPIO_Write(GPIO_TypeDef* GPIOx, uint16_tPortVal);寫 GPIO再來談?wù)勔恍┯龅降男ip在單片機(jī)中,可以通過P0=P0來進(jìn)行位取反,但是stm32 中卻沒有單獨(dú)的位操作,所以我們可以通過如下代碼達(dá)到取反目的:GPIOx->ODR = GPIO_Pin;可以將其寫成庫函數(shù)格式:void GPIO_PinReverse(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx); assert_param(IS_GPIO_PIN(GPIO_Pin);GPIOx->ODR = GPIO_Pin;還可以 :GPIO_Write

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論