STM32文件中缺省的補充_第1頁
STM32文件中缺省的補充_第2頁
STM32文件中缺省的補充_第3頁
STM32文件中缺省的補充_第4頁
STM32文件中缺省的補充_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

LiberationSerif低端的stm32采用的仍然是馮若依曼架地址總線數據總線數據分離的程序總線和數據總線允許在一個機器周期內同時獲得指令字(來自程序存儲器)和操作數(來自數據存儲器),從而提高執(zhí)行速度和數據的吞吐率。馮若依曼架構哈佛架構存儲器類型單一的存儲器指令與數據存儲分離總線類型單一的總線:用于傳輸指令與數據兩套獨立的總線:一套指令,一套數據優(yōu)點簡化了硬件設計降低了復雜性與成本高性能,低延時同時讀取指令與數據局限性由于指令與數據共享總線,可能會產生瓶頸多套獨立的存儲器與總線應用總線系統(tǒng)。在這個系統(tǒng)中,AHB總線主要用于高性能模塊(如CPU、DMA和DSP等)之間的3:驅動與IO控制一通用DMA1(directmemoryaccess)和通用DM●四個被動單元一內部閃存存儲器圖1系統(tǒng)結構總線矩陣總線矩陣企企 BKPIWDGbxCANWWDGTIM7TIM6TIM5TIM4TIM3Flash接口我們可以拓展內存,如外部的NORFLASH,NANDFLASH,SRAM等,通過FSMC接口ST注意:當對APB寄存器進行8位或者16位訪問時,該訪問會問,橋會自動將8位或者32位的數據擴展以配合32位的向量。每個GPI/0端口有兩個32位配置寄存器(GPI0xCRL,GPIOxCRH),兩個32位數據寄存除寄存器輸出數據寄存器輸入數據奇存器模擬輸入復用功能輸入至片上外設讀出保護除寄存器輸出數據寄存器輸入數據奇存器模擬輸入復用功能輸入至片上外設讀出保護二極管-□10引腳[輸入驅動器寫入二二二二二二極管或關閉復用功能輸出GPIO可以被配置為8種狀態(tài),其中輸入輸出各4種狀態(tài)。輸出模式有:①通用推挽輸出②通用開漏輸出③復用功能推挽輸出模式④復用功能開漏輸出模式輸入模式有:⑤模擬輸入模式⑥浮空輸入模式⑦上拉輸入模式⑧下拉輸入模式開漏輸出:推挽輸出:推挽輸出則是一種使用一對選擇性地從相連負載灌電流或者拉電流的器件的電路。它通常使用一對參數相同的功率三極管或MOSFET管,以推挽方式存在于電路中。推挽輸出可以GPI0內部示意圖輸出關閉打開打開—打開低電平浮空/高阻態(tài)開漏模GPIO內部示意圖實現了5V單片機對33V芯片的控偉高阻態(tài)—→被R1拉到3.3V低鬼平輸出特性:推挽輸出能夠直接輸出高、低電平,這使得它能夠直接連接數字器件。相比之下,開漏輸出在輸出高電平時并沒有驅動能力,需要借助外部的上拉電阻(I0基本架構中有出現)才能真正輸出高電平。因此,開漏輸出在輸出特性上更加依賴于外部電路的配置。電流驅動能力:推挽輸出在電路中能夠向負載灌電流,也可以從負載抽取電流,因此其驅動能力相對較強。而開漏輸出更適合做電流型的驅動,其吸收電流的能力一般在20mA以內,表現出一定的局限性??偨Y1:輸出高低電平與電源電壓基本沒有壓差。2:高低電平驅動能力較強,一般數字芯片推挽輸出I0口驅動電流最大可到20mA。3:電平切換速度快不支持線與(多個GPIO輸出連接在一起)開漏(OD)輸出內部結構輸出控制G輸出控制S_芯片內部1:可實現電平轉換,輸出電平取決與上拉電阻電源。2:可以實現IO的線與。1:高電平驅動能力差,取決與外部上拉電阻。2:電平切換速度速率取決與外部上拉電阻,電阻越小速度越快。(1)APB總線對應引腳控制的外設使能,打開時鐘線。(2)定義初始化結構體(3)對引腳,時鐘頻率,模式的配置。(3)調用函數完成對應引腳的初始化。//無需大功率時可使用開漏輸出OD(Open_D(4)引腳電平設置GPI0_ResetBits(GPIOA,GPIO_Pin_8);//設置低電平GPI0_SetBits(GPIOC,GP(5)讀取低電平charread_num=GPIO_ReadInputDataBit(GPIOA,GPI01:文件中將GPI0x類型定義為指針類型,其他許多名詞都定義為了指針。1409fdefine2:pin腳定義為映射內存地址。(強轉為16位)#define#define#define#define#definefdefine#define#define#define GPIo_Pin_3GPIO_Pin_5GPIO_Pin_6GPIo_Pin_7GPIo_Pin_8GPIo_Pin_9GPIO_Pin_12GPIO_Pin_13GPIo_Pin_14GPIo_Pin_15GPIo_Pin_Ai1 /*Checktheparameters*GPIO_Mode_IN_FLOATING=0x04,*@brief微秒級延時SysTick->LOAD=72*xus;//設置定時器重裝值SysTick->VAL=0x00;//清空當前計數值SysTick->CTRL=0x00000005;//設置時鐘源為HCLK,啟動定時器while(!(SysTick->CTRL&0x00010000));//等待計數到0SysTick->CTRL=0x00000004;//關閉定時器*@brief毫秒級延時*@paramxms延時時長,范圍:0~4294967295*@brief秒級延時*@paramxs延時時長,范圍:0~4294967295voidDelay_s(uint32_t除了GPI0_ResetBits與GPIO_SetBits之外還可以使用GPIO_WriteBit控制單個位以及GPIO_Write控制整個寄存器。引名庫523PC140SC32.IN45607859OWKUP/USART2.CTS/ADC12.INO/TIM2.CH1.USAR12,RTS/ADC12INI/USART2DXADC12N2/TIM2OT5OSP12NSS/202SMBAWUSART3.CKT0TSP12.50/USART3.0IS/TSP2MSOUSART3RIS/TifTUSARTI.CTsUS8DM/CANRX/TIMI0USART1.RTS/U58OP/CANDVTiM5T0M2O1ETR/PA1SsP11N3PB3/TRACESWO/TIM2.O42/5P1.55以PA9,PA10配置串口1為例(2)端口重映射配置1:打開GPI0時鐘與重映射時鐘(重映射一定要使能AFI0時鐘)//借助|可以對多個對象實現統(tǒng)一操作GargGPIo_PartialRemap_QargGPIO_PartialRemapQargGPIO_Partia1RemGargGPIo_Remap2_caNiθargGPIo_Remap_sWJ_JTAQargGPIo_Remap_sWJ_ADCIExternalIriggerInsectedConvADCIExternalTriggerReqularConversionremapADC2ExternalIriggerInjectedConversionremappingADC2ExternalTriggerReqularConversionremappingEthernetremapping(onlyforConnecFullsWJEnabled(sfAG-DP+SW-DE)butwlthoutSPI3/I253AlternateFunetionmapping(onlyforWhentheSPI3/12531sremappedusingthisGPIO端口串行線調試,借助復用功能切換調試方式)自此,將JTAG-DP功能的禁用,從而PA15可作為普通GPI0口使用,但是PA14與PA13端GPI0初始化結構體配置1:使能被重映射到的I0端口時鐘;4:進行重映射.按鍵的電平變化當單片機處于數字輸入模式時,由于輸入的是不確定的信號,實際輸入值會在0/1之間跳在沒有外部信號輸入時,如果加上上拉電阻則采集到的值一直是1;而接下拉電阻后,常態(tài)時I0引腳上為確定的低電平,I0引腳輸入為確定的低電平信號,而兩者“懸浮”,造成電路的不穩(wěn)定。 性質浮空輸入數字輸入則電平不確定上拉輸入數字輸入懸空時默認高電平下拉輸入數字輸入懸空時默認低電平開漏輸出數字輸出推挽輸出數字輸出復用開漏輸出數字輸出復用推挽輸出數字輸出由片上外設控制,高電平接VDD,低電平接VSS引腳接連片上外設可以是1:GPIO_ReadInputDataBit(GPIOB,GPI0_Pin_0);讀取引腳輸入的高低電平狀態(tài)。if(!GPI0_ReadInputDataBit(GPIOB,G問題Delay_ms(20);//在檢測到低電平時不確定是否進入穩(wěn)定狀態(tài),借助Delay避免while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin}2:GPI0_ReadInputDataBit(GPIOA,GPI0_Pin_8)讀取上一刻引腳的輸出寄存器中數值,從而{if(!GPIO_ReadInputDataBit(GPIOA,GGPIO_WriteBit(GPIOA,GPI0_PinGPIO_WriteBit(GPIOA,GPIO_Pin_時鐘樹與51只提供一個外部晶振與一個內部晶振不同的是stm32提供了更多的晶振,并且通過預分頻器將不同頻率的信號發(fā)送給外設。hspratercanbethsfledperlpheral/FCLKCortex自由運行時鐘APB2外設預分頻器2至定時器1和8至定時器1和8LK最人14MHz主時鐘輸出LSI。低速內部時鐘信號主時鐘輸出在stm32系列中,main函數并不不是第一個執(zhí)行的函數,在著之前會先函數。Vectors_sizeEQUVectorsE 位帶操作:通過位帶操作可以實現對對寄存器的單個位進行操作,但是在一般的stm32中官方文檔對寄存器的操作都是以16位整體進行操作:{曰{曰白白/*Checktheparametersif(BitVal!={}{}如果只是想單獨對一個位進行操作時,使用官方的 (現場保留),需要對多個寄存器進行操作,因此通過對單個位進行位帶操作可以避免如此因此在Corttex-M3內核操作中,未來能達到直接操作某一個Bit的目的,就在內核中開辟了一塊區(qū)域(位帶別名):可以將ODR這類Bit位(位帶區(qū))映射到位帶別名區(qū)域對應的地址,只需要操作映射后的地址,就可以實現操作這個Bit位,簡單來說就是映射二個則是片內外設區(qū)的最低1MB范圍。1.SRAM區(qū)的最低1MB(0x20000000---0x200FFFFF)映射到(0x22000000---2.片內外設區(qū)的最低1MB(0x40000000---0x400FFFFF)映射到(0x42000000---其實就是映射到偏移(距離自身)0x02000000外的32MB空間(位帶別名區(qū)),如下 0x6C000000-0x6FFFFFFF0x6800.0000-0x68FFFFFF0x6400.0000-0x67FFFFFF0x40024400-0x5FFFFFFF0x40023000-0x400233FF8Bit,它是映射到偏移0x02000000外的32Bit(4Byte)空間上。我們讀寫0x22000000這個地址,其實就是操作0x20000000中的Bit0位。這就是所謂的“比特的膨脹對應關系”,1Bit膨脹到32Bit(4字節(jié))。4字節(jié)對應的就是那1Bit位的地址(CPU為32位,寄存器為32位,數據線與地址線都是以32位,因此一個地址位32位),而這個地址中的數據只有最低一位才有效(LSB),對其操作時也就是位帶操作的主要目的:通過Bit位地址(A)計算得到別名區(qū)地址(Addr)。1.SARM區(qū)計算公式(A為所在GPIO的基地址,n為對應第幾號引腳)Addr=0x22000000+((A-0x20000000)*8+n)*4=0x22000000+(A-0x20000000)*32+n*42.Addr=0x42000000+((A-0x40000000)*8+n)*4=0x42000000+(A-0x40000000)*32+n*4AliasAddr=((A&0xF0000000)+0x02000000+((A&0x000FFFFF)<<5)+(n<<2))#definePAout(x)*(volatileuint32_t*)(0x42000000+(GPIOA_BASE+0x0C-#definePBin(x)*(volatileuint32_t*)(0x42000000+(GPIOB_BASE+0x08-{對寄存器的直接操作屬于原子操作,這樣的操作相當快,并且可以有源競爭(對硬件的操作時無法被異常狀態(tài)打斷)

溫馨提示

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

評論

0/150

提交評論