STM32學(xué)習(xí)心得筆記_第1頁
STM32學(xué)習(xí)心得筆記_第2頁
STM32學(xué)習(xí)心得筆記_第3頁
STM32學(xué)習(xí)心得筆記_第4頁
STM32學(xué)習(xí)心得筆記_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上窗體頂端窗體底端 STM32學(xué)習(xí)心得筆記 時(shí)鐘篇在STM32中,有五個(gè)時(shí)鐘源,為HSI、HSE、LSI、LSE、PLL。、HSI是高速內(nèi)部時(shí)鐘,RC振蕩器,頻率為8MHz。、HSE是高速外部時(shí)鐘,可接石英/陶瓷諧振器,或者接外部時(shí)鐘源,頻率范圍為4MHz16MHz。、LSI是低速內(nèi)部時(shí)鐘,RC振蕩器,頻率為40kHz。、LSE是低速外部時(shí)鐘,接頻率為32.768kHz的石英晶體。、PLL為鎖相環(huán)倍頻 輸出 ,其時(shí)鐘 輸入 源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為216倍,但是其輸出頻率最大不得超過72MHz。其中40kHz的LSI供獨(dú)立看門狗IWDG使

2、用,另外它還可以被選擇為實(shí)時(shí)時(shí)鐘RTC的時(shí)鐘源。另外,實(shí)時(shí)時(shí)鐘RTC的時(shí)鐘源還可以選擇LSE,或者是HSE的128分頻。RTC的時(shí)鐘源通過RTCSEL1:0來選擇。STM32中有一個(gè)全速 功能 的 USB 模塊 ,其串行 接口 引擎需要一個(gè)頻率為48MHz的時(shí)鐘源。該時(shí)鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當(dāng)需要使用USB模塊時(shí),PLL必須使能,并且時(shí)鐘頻率配置為48MHz或72MHz。另外,STM32還可以選擇一個(gè)時(shí)鐘 信號(hào) 輸出到MCO腳(PA8)上,可以選擇為PLL輸出的2分頻、HSI、HSE、或者 系統(tǒng) 時(shí)鐘。系統(tǒng)時(shí)鐘SYSCLK,它是供STM32中絕大部

3、分部件工作的時(shí)鐘源。系統(tǒng)時(shí)鐘可選擇為PLL輸出、HSI或者HSE。系統(tǒng)時(shí)鐘最大頻率為72MHz,它通過AHB分頻器分頻后送給各模塊使用,AHB分頻器可選擇1、2、4、8、16、64、128、256、512分頻。其中AHB分頻器輸出的時(shí)鐘送給5大模塊使用:、送給AHB 總線 、內(nèi)核、內(nèi)存和DMA使用的HCLK時(shí)鐘。、通過8分頻后送給Cortex的系統(tǒng) 定時(shí)器 時(shí)鐘。、直接送給Cortex的空閑運(yùn)行時(shí)鐘FCLK。、送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設(shè)使用(PCLK1,最大頻率36MHz),另一路送給定時(shí)器(Timer)2、3、4倍頻器使用。該倍

4、頻器可選擇1或者2倍頻,時(shí)鐘輸出供定時(shí)器2、3、4使用。、送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設(shè)使用(PCLK2,最大頻率72MHz),另一路送給定時(shí)器(Timer)1倍頻器使用。該倍頻器可選擇1或者2倍頻,時(shí)鐘輸出供定時(shí)器1使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。在以上的時(shí)鐘輸出中,有很多是帶使能控制的,例如AHB總線時(shí)鐘、內(nèi)核時(shí)鐘、各種APB1外設(shè)、APB2外設(shè)等等。當(dāng)需要使用某模塊時(shí),記得一定要先使能對(duì)應(yīng)的時(shí)鐘。需要注意的是定時(shí)器的倍頻器,當(dāng)APB的分頻

5、為1時(shí),它的倍頻值為1,否則它的倍頻值就為2。連接在APB1(低速外設(shè))上的 設(shè)備 有: 電源 接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、Timer2、Timer3、Timer4。注意USB模塊雖然需要一個(gè)單獨(dú)的48MHz時(shí)鐘信號(hào),但它應(yīng)該不是供USB模塊工作的時(shí)鐘,而只是提供給串行接口引擎(SIE)使用的時(shí)鐘。USB模塊工作的時(shí)鐘應(yīng)該是由APB1提供的。 連接在APB2(高速外設(shè))上的設(shè)備有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PAPE)、第二功能IO口。 下圖是STM32用戶手冊(cè)中的時(shí)鐘系統(tǒng)結(jié)構(gòu)圖,

6、通過該圖可以從總體上掌握STM32的時(shí)鐘系統(tǒng)。 管腳篇 我們操作STM32過程中對(duì)管腳的操作是比較頻繁的工作之一,我們一般用提供的封裝庫來進(jìn)行操作,因?yàn)樗庇^方便。我們常用的有:GPIO_SetBits();GPIO_Writebit();GPIO_ResetBits();GPIO_ReadInputBit();GPIO_ReadOutputBit();等等它們具體怎么操作的我們是不用管的給我們一個(gè)接口就足夠了,但是想學(xué)好STM32下一步最好使用它的原子操作,下面我們先學(xué)習(xí)一下關(guān)于管腳端口的一些寄存器。由于上述命令操作是調(diào)用的一些函數(shù)故可能在調(diào)用的過程中可能被中斷所打斷產(chǎn)和想不到的后果但是如果

7、調(diào)用寄存器函可以在一個(gè)時(shí)鐘周期內(nèi)完成,所以在一些關(guān)鍵的場(chǎng)合要使用對(duì)原子的直接訪問。要用到的寄存器有置位復(fù)位寄存器GPIOx_BSRR和復(fù)位寄存器GPIOx_BRR,后者是前者的一個(gè)子功能,GPIOx_BSRR包括置和復(fù)位二功功能高16位是復(fù)位功能低16位是置位功能,高16位中對(duì)應(yīng)位置1表示要復(fù)位這一管腳其它寫入0的位不改變?cè)械碾娖?,而?6位置1是真的要使其位輸出置1。對(duì)于GPIOxBRR寄存器寫入對(duì)應(yīng)位1時(shí)表示要復(fù)位輸出這一管腳,復(fù)位時(shí)用哪個(gè)寄存器隨你便好了,但是要使其置1時(shí)只能使用GPIOx_BSRR了。說到這里你可能要說了:GPIOx_ODR不可以嘛?是真的可以,但是這里的輸出0和1都

8、是要反映到管腳是的,對(duì)于我們僅需要操作1個(gè)管腳時(shí)還要兼顧其它不需要改變的PIN,所以我們最好不要用這個(gè)寄存器來進(jìn)行直接的操作。常用的幾個(gè)寄存器: 上面的二個(gè)寄存器是設(shè)置寄存器的是輸入還是輸出,輸入中包括模擬輸入、上拉/下拉輸入、還是懸空輸入。輸出包括:推挽輸出、開漏輸出、復(fù)用推挽輸出、復(fù)用開漏輸出。這個(gè)一個(gè)在程序初始化時(shí)要做的工作,利用封裝的函數(shù)還是挺好的這點(diǎn)要是利用寄存器操作就劃不來了。 讀取端口管腳就是讀取 ch=GPIOx-IDR; 就是這么簡(jiǎn)單。就是把一個(gè)16位的管腳值送給這個(gè)寄存器如:GPIOx-ODRch,如果中改變其中一管腳原來的不變,置1時(shí)沒有問題可以這樣做GPIOx-ODR

9、|=1ODR &= (1BRR=0x方便些。前面的0x只第15腳而已。 下面貼出復(fù)位/置位寄存器和復(fù)位寄存器來不說了。下面通過宏定方,使控制GPIO來的更加方便#define BITBAND(addr bitnum) (addr & 0xF)+0x+(addr&0xFFFFF)5)+(bitnum2) #define MEM_ADDR(addr) *(volatile unsigned long *)(addr) #define BIT_ADDR(addr bitnum) MEM_ADDR(BITBAND(addr bitnum) /IO #define GPIOA_ODR_Addr (GPI

10、OA_BASE+12) /0xC #define GPIOB_ODR_Addr (GPIOB_BASE+12) /0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BASE+12) /0xC #define GPIOD_ODR_Addr (GPIOD_BASE+12) /0xC #define GPIOE_ODR_Addr (GPIOE_BASE+12) /0xC #define GPIOF_ODR_Addr (GPIOF_BASE+12) /0x40011A0C #define GPIOG_ODR_Addr (GPIOG_BASE+12) /0x40011E0

11、C #define GPIOA_IDR_Addr (GPIOA_BASE+8) /0x #define GPIOB_IDR_Addr (GPIOB_BASE+8) /0x40010C08 #define GPIOC_IDR_Addr (GPIOC_BASE+8) /0x #define GPIOD_IDR_Addr (GPIOD_BASE+8) /0x #define GPIOE_IDR_Addr (GPIOE_BASE+8) /0x #define GPIOF_IDR_Addr (GPIOF_BASE+8) /0x40011A08 54#define GPIOG_IDR_Addr (GPIO

12、G_BASE+8) /0x40011E08/IO IO!/n 16!#define PAout(n) BIT_ADDR(GPIOA_ODR_Addrn) /#define PAin(n) BIT_ADDR(GPIOA_IDR_Addrn) /#define PBout(n) BIT_ADDR(GPIOB_ODR_Addrn) /#define PBin(n) BIT_ADDR(GPIOB_IDR_Addrn) /#define PCout(n) BIT_ADDR(GPIOC_ODR_Addrn) /#define PCin(n) BIT_ADDR(GPIOC_IDR_Addrn) /#defi

13、ne PDout(n) BIT_ADDR(GPIOD_ODR_Addrn) /#define PDin(n) BIT_ADDR(GPIOD_IDR_Addrn) /#define PEout(n) BIT_ADDR(GPIOE_ODR_Addrn) /#define PEin(n) BIT_ADDR(GPIOE_IDR_Addrn) /#define PFout(n) BIT_ADDR(GPIOF_ODR_Addrn) /#define PFin(n) BIT_ADDR(GPIOF_IDR_Addrn) /#define PGout(n) BIT_ADDR(GPIOG_ODR_Addrn) /

14、#define PGin(n) BIT_ADDR(GPIOG_IDR_Addrn) / #define led0=PAout(8)使用時(shí)可以led0=0; 或者led01;像不像51中的控制。這樣led0就可以像51系統(tǒng)中那樣控制某一管腳的高低了,是不是很方便。這是比前面的應(yīng)用的方便性上更加進(jìn)了一步,只是前面要做一些提前的預(yù)備工作了。 中斷和核心的系統(tǒng)控制部分 typedef structvuc32 CPUID; /CM3vu32 ICSR; /vu32 VTOR; /vu32 AIRCR; /vu32 SCR; /vu32 CCR; /vu32 SHPR3; /vu32 SHCSR; / H

15、andlervu32 CFSR; /MFSR+BFSR+UFSRvu32 HFSR; / faultvu32 DFSR; / faultvu32 MMFAR; /vu32 BFAR; / faultvu32 AFSR; / fault SCB_TypeDef;附件(二):調(diào)查問卷設(shè)計(jì) 據(jù)調(diào)查統(tǒng)計(jì)在對(duì)大學(xué)生進(jìn)行店鋪經(jīng)營(yíng)風(fēng)格所考慮的因素問題調(diào)查中,發(fā)現(xiàn)有50%人選擇了價(jià)格便宜些,有28%人選擇服務(wù)熱情些,有30%人選擇店面裝潢有個(gè)性,只有14%人選擇新穎多樣。如圖(1-5)所示全局中斷禁止和允許2003年,全年商品消費(fèi)價(jià)格總水平比上年上升1%。消費(fèi)品市場(chǎng)銷售平穩(wěn)增長(zhǎng)。全年完成社會(huì)消費(fèi)品零售總額22

16、20.64億元,比上年增長(zhǎng)9.1%。在51系統(tǒng)中都有全局中斷允許/禁止位,那在Cortex-M3中這個(gè)位在哪呢?這的水很深,請(qǐng)看在Core_m3.h中有static _INLINE void _enable_irq() _ASM volatile (cpsie i); static _INLINE void _disable_irq() _ASM volatile (cpsid i); 在我們學(xué)校大約有4000多名學(xué)生,其中女生約占90%以上。按每十人一件飾品計(jì)算,大概需要360多件。這對(duì)于開設(shè)飾品市場(chǎng)是很有利的。女生成為消費(fèi)人群的主體。static _INLINE void _enable_

17、fault_irq() _ASM volatile (cpsie f); static _INLINE void _disable_fault_irq() _ASM volatile (cpsid f); 而手工藝制品是一種價(jià)格適中,不僅能鍛煉同學(xué)們的動(dòng)手能力,同時(shí)在制作過程中也能體會(huì)一下我國(guó)傳統(tǒng)工藝的文化。無論是送給朋友還是親人都能讓人體會(huì)到一份濃厚的情誼。它的價(jià)值是不用金錢去估價(jià)而是用你一顆真誠(chéng)而又溫暖的心去體會(huì)的。更能讓學(xué)生家長(zhǎng)所接受。static _INLINE void _NOP() _ASM volatile (nop); static _INLINE void _WFI() _ASM volatile (wfi); static _INLINE void _WFE() _ASM volatile (wfe); static _INLINE void _SEV() _ASM volatile (sev); static _INLINE void _ISB() _ASM volatile (isb); static _INLINE void _DSB() _ASM volatile (dsb); static _INLINE void _DMB() _ASM volat

溫馨提示

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

評(píng)論

0/150

提交評(píng)論