牛人的STM32學(xué)習(xí)筆記寄存器版本_第1頁(yè)
牛人的STM32學(xué)習(xí)筆記寄存器版本_第2頁(yè)
牛人的STM32學(xué)習(xí)筆記寄存器版本_第3頁(yè)
牛人的STM32學(xué)習(xí)筆記寄存器版本_第4頁(yè)
牛人的STM32學(xué)習(xí)筆記寄存器版本_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、GP10 口的配置STM32的DGPI0 口最多可以有 7組(GPI0aGPlOg ),而每一組 GPIO 口均有16個(gè) 雙向10組成。并且沒(méi)個(gè)10 口均可配置成8種模式(4種輸入模式,4種輸出模式)。不管 配置哪個(gè)10 口也不論將其配置成哪種模式(但是配置成哪種模式要看具體應(yīng)用,參考中 文參考手冊(cè)第105頁(yè))都可以按以下步驟來(lái)進(jìn)行配置:(1)使能 P0RTX(x=AG )時(shí)鐘這里就得操作寄存器 RCC_APB2ENR ( 32為寄存器)了15141312111098ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENlOP GEN76543210QP

2、FENOP EENOP DENlOP CENlOP BENlOP AEN保留AFIOENRCC_APB2ENR 的 0-15 位(0632 位保留)第28分別是使能GPI0AGPIOG時(shí)鐘的,只要將其置“ 1 ”即可,如RCC_APB2ENR|=1CRL&=OXFFFFFOFF ; GPIOD-CRL|=0X00000300 ; /PD.2 推挽輸出;其余 10 口的 低8位以此類(lèi)推。3130292827262524CNF151:0MODE151:0CNF141:0MODE141:02322212019181716CNF131:0MODE131:0CNF121:0MODE121:0151413

3、12111098CNF111:0MODE111:0CNF101:0M0DE101:076543210CNF91:0MODE91:0CNF81:0MODE81:0GPIOx_CRH(端口配置高寄存器 x=AE)該寄存器用于配置 GPIOx的高8位,具體8種模式的配置見(jiàn)中文參考手冊(cè)例如:GPIOA-CRH&=0XFFFFFFF0; ; GPl0A-CRH|=0X00000003 ; /PA8 推挽輸出;其余 10 口 的高8位以此類(lèi)推。15141312111098DR15IDR14IDR13IDR12IDR11IDR10IDR9IDR876543210DR7IDR6IDR5IDR4IDR3IDR2

4、IDR1IDR0(3)端口的輸入和輸出電平配置15141312111098ODR15ODR14ODR13ODR12ODR11ODR10ODR9ODR876543210ODR7ODR6ODR5ODR4ODR3ODR2ODR1ODR0GPIOx_IDR (端口輸入數(shù)據(jù)寄存器 x=AE) 該寄存器配置IO 口的015位的輸入數(shù)據(jù),以16位讀出。GPIOx_ODR (端口輸出數(shù)據(jù)寄存器 x=AE)該寄存器配置IO 口的015位的輸入初始狀態(tài), 例如:GPIOA-ODR|=1APB2ENR|=1CRL&=0XFFFFFFF0;/ PA0 設(shè)置成輸入GPI OA-CRL|=0X00000008;GP IO

5、A-CR H&=0X0F0FFFFF;/ PA13,15 設(shè)置成輸入GPI OA-CRH|=0X80800000;GPI OA-ODR|=1ODR|=1A PB2ENR|=1A PB2ENR|=1CR H&=0XFFFFFFF0;GPI OA-CRH|=0X00000003;/ PA8GPI OA-ODR|=1CRL&=0XFFFFF0FF;GPIO D-CRL|=0X00000300;/ PD.2GPIO D-ODR|=12;/P D.2推挽輸出輸出高15141312111098ADC3RSTUSART1RST1M8RSTSP I1RSTTIM1RSTADC2RSTADC1RSTIOP GR

6、ST76543210IOP FRSTIOP ERSTIOP DRSTIOP CRSTIOP BRSTIOP ARST保留AFIORSTRCC_APB2RSTR ( APB2外設(shè)復(fù)位寄存器)寄存器 RCC_APB2RSTR的第14位是進(jìn)行串口 1的復(fù)位如:RCC_APB1RSTR|=114; /將 串口 1復(fù)位,然后結(jié)束復(fù)位 RCC_A PB1RSTR|= ( 114); 結(jié)束串口 1復(fù)位其余串口復(fù)位在寄存器RCC APB1RSTR里如下表:RCC_APB1RSTR (串口 1的復(fù)位)和寄存器這兩個(gè)寄存器如下表二、串口通信STM32最多可以提供5路串口,其串口配置主要有以下步驟: (1)串口時(shí)鐘

7、使能15141312111098ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENIOP GEN76543210QP FENOP EENIOP DENIOP CENIOP BENIOP AEN保留AFIOEN3130292827262524保留DACENP WRENBKPEN保留CANEN保留2322212019181716USBENI2C2ENI2C1ENUART5ENUART4ENUART3ENUART2EN保留15141312111098SPI3ENSP I2EN保留WWDGEN保留76543210保留TIM7ENTIM6ENTIM5ENTIM4EN

8、TIM3ENTIM2ENRCC_APB2ENR 的 0-15 位(1632 位保留)在寄存器RCC_APB2ENR里的第14位就是對(duì)串口 1的時(shí)鐘使能即:RCC_A PB2ENR|=114; 使能串口 1時(shí)鐘,那么除串口 1的時(shí)鐘使能在 RCC_A PB2ENR 外其余的時(shí)鐘使能位在寄存器RCC APB1ENR里,看下表:RCC_AP B1ENR例如:RCC_APB1ENR|=117; /使能串口 2時(shí)鐘,其余串口時(shí)鐘使能以此類(lèi)推。(2)串口復(fù)位即結(jié)束復(fù)位STM32在使用串口時(shí)不管當(dāng)前該串口出于什么狀態(tài)都先要將其復(fù)位,而復(fù)位后要將其 結(jié)束復(fù)位。串口復(fù)位主要在寄存器RCC_A PB2RSTR (

9、其余串口復(fù)位3130292827262524保留DACRSTP WRRSTBKPRST保留CANRST保留2322212019181716USBRSTI2C2RSTI2C1RSTUART5RSIUART4RSUART3RSIUART2RS保留15141312111098SPI3RSTSPI2RST保留WWDGRS保留76543210保留TIM7RSTTIM6RSTTIM5RSTTIM4RSTTIM3RSTTIM2TST151413|1211109|8DIV Ma ntissa11:476|5|432 1|0DIV Ma ntissa3:0DIV Fractio n3:0如:口 2復(fù)位(3)RC

10、C_A PB1RSTR (APB1外設(shè)復(fù)位寄存器)RCC_APB1RSTR|=117; / 復(fù)位串口 2RCC_APB1RSTR|=(1CR1|=0X200C;/1 位停止,無(wú)校驗(yàn)位.0X200C=0010 0000 0000 1100B設(shè)置成使能串口 8個(gè)字長(zhǎng)1個(gè)停止位(USART_CR2中13:12默認(rèn)為“ 0”禁止校驗(yàn),禁止 校驗(yàn)所有中斷,使能發(fā)送和接收。(5 )數(shù)據(jù)發(fā)送和接收15114II 13丨 12 111 10198保留DR87654321 10DR7:0USART_DR(數(shù)據(jù)寄存器)發(fā)送數(shù)據(jù)緩存寄存器(向它寫(xiě)數(shù)據(jù)它會(huì)自動(dòng)發(fā)送數(shù)據(jù)),當(dāng)接收到數(shù)據(jù)時(shí)則存放接收的數(shù)據(jù)(6 )串口控制

11、1511141113121 111 1098保留CTSLBD76543210TXETCRXNELDLEORENEFEPEUSART SR參考程序:void uart_i nit(u32 p clk2,u32 bou nd) float temp;u16 man tissa;u16 fractio n;temp=(float)(pclk2*1000000)/(bound*16);/ 得到 USARTDIV man tissa=tem p;得到整數(shù)部分fraction=(temp-mantissa)*16; / 得到小數(shù)部分man tissaA PB2ENR|=1A PB2ENR|=1CR H&=

12、0XFFFFF00F;GPIO A-CRH|=0X000008B0;/IO 狀態(tài)設(shè)置RCC-A PB2RSTR|=1A PB2RSTR&=(1BRR=ma ntissa; / 波特率設(shè)置/1位停止,無(wú)校驗(yàn)位./如果使能了接收/PE中斷使能/接收緩沖區(qū)非空中斷使能USART1-CR1|=0X200C;#ifdef EN_USART1_RX/使能接收中斷USART1-CR1|=1CR1|=1SR&(1DR;if(USART_RX_STA&0x80)=0)/ 接收未完成 if(USART_RX_STA&0 x40)/ 接收到了 0x0dif(res!=0x0a)USART_RX_STA=0;/ 接收

13、錯(cuò)誤,重新開(kāi)始 else USART_RX_STA|=0x80;/ 接收完成了else /還沒(méi)收到0X0Dif(res=0x0d)USART_RX_STA|=0x40;else USART_RX_BUFUSART_RX_STA&0 X3F=res;USART_RX_STA+;if(USART_RX_STA63)USART_RX_STA=0;/ 接收數(shù)據(jù)錯(cuò)誤,重新開(kāi)始接收以上兩個(gè)函數(shù)已經(jīng)封裝在usart.c中可直接調(diào)用三、外部中斷STM32的每一個(gè)IO 口都可以作為中斷輸入, 要想把IO 口作為中斷輸入則必須將IO 口設(shè)置成上拉/下拉輸入或浮空輸入(設(shè)置成浮空輸入時(shí)要接上拉或下拉電阻否則可能導(dǎo)致

14、中 斷不斷觸發(fā))。下面總結(jié)一下設(shè)置IO 口為外部中斷時(shí)的步驟:(1)將IO 口設(shè)置成輸入模式這個(gè)在第一章總結(jié)過(guò),這里不多說(shuō)。(2)開(kāi)啟IO 口復(fù)用時(shí)鐘,設(shè)置IO 口與中斷線的映射關(guān)系這一步在函數(shù) void Ex_NVIC_Co nfig(u8 GP IOx,u8 BITx,u8 TRIM)中已經(jīng)封裝好可直接調(diào)用這里說(shuō)一下IO 口的復(fù)用時(shí)鐘使能1098ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENlOP GEN76543210OP FENOP EENlOP DENlOP CENlOP BENlOP AEN保留AFIOENRCC_

15、APB2ENRRCC_APB2ENR|=0X01;/使能 10 口復(fù)用時(shí)鐘(3) 開(kāi)啟與該IO 口相對(duì)應(yīng)的線上中斷/事件,并設(shè)置觸發(fā)條件這一步封裝在函數(shù) void Ex_NVIC_Co nfig(u8 GPI Ox,u8 BITx,u8 TRIM)中,可以直接調(diào)用,例如:Ex_NVIC_Config(GPIO_A,0,RTIR); / 設(shè)置 PA(0)上升沿觸發(fā)Ex_NVIC_Config(GPIO_A,13,FTIR);/ 設(shè)置 PA( 13)下降沿觸發(fā)(4) 配置中斷分組(NVIC )并使能中斷這一步封裝在函數(shù) void MY_NVIC_I ni t(u8 NVIC_ Preemp tio

16、 nP riority,u8 NVIC_Sub Priority,u8 NVIC_Cha nn el,u8 NVIC_Grou p) 里面可以直接調(diào)用,例如:MY_NVIC_Init(2,2,EXTI0_IRQChannel,2);搶占 2,子優(yōu)先級(jí) 2,組 2為 LineOLine4這里值得注意的是 EXTI0、EXTI1、EXTI2、EXTI3、EXTI4EXTI15_10 為 Line15Line10EXTI9_5 為 Line9Line5(5) 編寫(xiě)中斷服務(wù)函數(shù)例如: void EXTI15_10_IRQHa ndler(void)delay_ms(10);/ 消抖if(KEY0=0)

17、按鍵LED0=!LED0;else if(KEY1=0)/ 按鍵/清除 LINE13/清除 LINE15上的中斷標(biāo)志位上的中斷標(biāo)志位LED仁!LED1;EXTI- PR=1 PR=1A PB1ENR|=1APB1ENR|=1APB1ENR|=1APB1ENR|=0X01 ; /使能 TIME2 的時(shí)鐘使能;(RCC-APB1ENR|=1DIER|=1DIER|=1CR1|=0x01;/使能定時(shí)器 315114111312111098保留CC4OFCC3OFCC2OFCC1OF保留76543210BIFTIFCOMIFCC4IFCC3IFCC2IFCC1IFUIFTIMx_SR 該寄存器用來(lái)標(biāo)記

18、當(dāng)前預(yù)定時(shí)器相關(guān)的各種事件UIF :更新中斷標(biāo)記,當(dāng)產(chǎn)生更新事件時(shí)該位由硬件置 例如:if(TIM3-SR&0X0001)/ 溢出中斷(5) TIM3中斷分組設(shè)置例如:MY_NVIC_I ni t(1,3,TIM3_IRQCha nn el,2);/搶占直接調(diào)用該函數(shù)就行(6) 編寫(xiě)中斷服務(wù)程序例如:void TIM3_IRQHa ndler(void)/中斷是否發(fā)生。11,子優(yōu)先級(jí)3,組2參考程丿予:if(TIM3-SR&0X0001)/ 溢出中斷 LED仁!LED1;TIM3-SR&=(1A PB1ENR|=1ARR=arr;時(shí)鐘使能/設(shè)定計(jì)數(shù)器自動(dòng)重裝值 剛好1msTIM3-PSC=ps

19、c;預(yù)分頻器7200,得到10Khz的計(jì)數(shù)時(shí)鐘/允許更新中斷 /允許觸發(fā)中斷/使能定時(shí)器3這兩個(gè)東東要同時(shí)設(shè)置才可以使用中斷TIM3-DIER|=1DIER|=1CR1|=0x01;MY_NVIC_Init(1,3,TIM3_IRQChannel,2);/搶占 1,子優(yōu)先級(jí) 3,組 2TIMx_ARR確定頻率和由寄存器TIME2的CH2模式2的PWM輸出:15141312111098OC2CEOC2M2:0OC2 PEOC2FEIC2F3:0IC2 PSC1:0CC2S1:0765 143210OC1CEOC1M2:0OC1 PE OC1FEIC1F3:0IC1 PSC1:0CC1S1:0脈沖

20、寬度調(diào)制模式可以產(chǎn)生一個(gè)由寄存器TIMx_CCRx確定其占空比的 PWM波形; 使能定時(shí)器:RCC-APB1ENR|=1CCMR1|=7vv12;/選擇 PWM 模式 2使能預(yù)裝載寄存器:必須設(shè)置TIMx_CCMRx寄存器OCX PE位以使能相應(yīng)的預(yù)裝載寄存器;15141312111098OC2CEOC2M2:0OC2 PEOC2FEIC2F3:0IC2 PSC1:0CC2S1:076543210OC1CEOC1M2:0OC1 PE OC1FEIC1F3:0IC1 PSC1:0CC1S1:0TIMx_CCMR1(捕獲/比較模式寄存器1)TIM2-CCMR1|=1VV11;/使能預(yù)裝載寄存器使能

21、自動(dòng)重裝載的預(yù)裝載寄存器:最后還要設(shè)置TIMx_CR1寄存器的ARPE位,(在向上計(jì)數(shù)或中心對(duì)稱(chēng)模式中)使能自動(dòng)重裝載的預(yù)裝載寄存器;1514丨131 12 11 11109 11 8保留CKD1:076 1543210ARPECMS1:0DIROPMURSUDISCENTIMx_CR1TIMx_CR1|=lvv7;/使能自動(dòng)裝載的預(yù)分頻寄存器設(shè)置極性:OCX的極性可以通過(guò)軟件在 TIMx_CCER寄存器中的CCxP位設(shè)置,它可以 設(shè)置為高電平有效或低電平有效。TIMx_CCER寄存器中的CCxE位控制OCx輸出使能;151413 11 121111098保留CC4 PCC4E保留CC3 PC

22、C3E71 6543210保留CC2 PCC2E保留CC1PCC1ETIMx_CCER(捕獲/比較使能寄存器) TIM2-CCER&=0X03; TIM2-CCMR|=1vv4;/ /設(shè)置極性并輸出時(shí)能void Timerx2_I nit(u16 arr,u16 psc)RCC-APB1ENR|=1ARR=arr;/設(shè)定計(jì)數(shù)器自動(dòng)重裝值TIM3-PSC=psc;/預(yù)分頻器不分頻/選擇PWM模式2/使能預(yù)裝載寄存器/使能自動(dòng)裝載的預(yù)分頻寄存器/使能定時(shí)器TIM2-CCMR1|=7CCMR1|=1CR1|=1CR1|=1CCER=0X3303;TIM2-CCER|=1A PB1ENR|=1CRL&

23、=0X0FFFFFFF;/ PA7 輸出GPIOA-CRL|=0XB0000000;/ 復(fù)用功能輸出GPI OA-ODR|=1ARR=arr;/設(shè)定計(jì)數(shù)器自動(dòng)重裝值TIM3-PSC=psc;/預(yù)分頻器不分頻 TIM3-CCMR1|=7CCMR1|=1CCER|=1CR1=0x8000;TIM3-CR1|=0x01;其余幾個(gè)定時(shí)器的 PWM輸出寄存器配置依次類(lèi)推。獲計(jì)數(shù)器的值到TIM1_CCR1寄存器中,步以下例子說(shuō)明如何在TI1輸入的上升沿時(shí)捕 驟如下:1使能TIM1時(shí)鐘:15141312111098ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENIOP

24、 GEN76543210OP FENOP EENIOP DENIOP CENIOP BENIOP AEN保留AFIOENRCC_APB2ENR 的 0-15 位(0632 位保留)RCC-APB2ENR|=1CCMR 1 =0X01;/CC1通道選擇輸入,IC1映射在TI1上3、根據(jù)輸入信號(hào)的特點(diǎn),配置輸入濾波器為所需的帶寬(輸入為T(mén)I1時(shí)TIM1_CCMRx寄存器中的ICxF位)。假設(shè)輸入信號(hào)在最多 5個(gè)時(shí)鐘周期的時(shí)間內(nèi)抖動(dòng),我們.配置濾波器的帶長(zhǎng)于5個(gè)時(shí)鐘周期。因此我們可以(以 fDTS頻率)連續(xù)采樣8次,已確認(rèn)在TI1上一次 真實(shí)的邊沿變換,即在 TIM1 CCMR1寄存器中寫(xiě)入IC仆=

25、0011.15141312111098OC2CEOC2M2:0OC2 PEOC2FEIC2F3:0IC2 PSC1:0CC2S1:076543210OC1CEOC1M2:0OC1 PEOC1FEIC1F3:0IC1 PSC1:0CC1S1:0TIM1_CCMR1(捕獲/比較模式寄存器 1)TIM1-CCMR1|=3CCER&=0CCER|=1DIER|=1DIER|=1A PB2ENR|=1A PB2ENR|=1CHL&=OXFFFFFFFO;RCC-CHL|=0X00000004;/設(shè)置PA8為浮空輸入TIM1-ARR=arr ;TIM1-PSC=psc ;TIM1-CCMR1=0X01;

26、/CC1TIM1-CCMR1|=3CCER&=0CCER|=1DIER|=1DIER|=1CR1|=1A PB2ENR|=1A PB2ENR|=1CR1|=0CR1|=1CR1|=1CR1|=1CR1|=0CR1|=1CR1|=1CR1|=7CR1|=0CR1|=1A PB2ENR|=1A PB2ENR|=1CRL&=0X000FFFFF;GPI OA-CRL|=0XBBB00000;/ PA567 復(fù)用GPIOA-ODR|=0X7CR1|=0CR1|=1CR1|=1CR1|=1CR1|=0CR1|=1CR1|=1CR1|=7CR1|=0CR1|=1SR&1SR&1SR&1300)return 0;/若經(jīng)判斷發(fā)送緩沖區(qū)不為空則返回值“0 ”SPI-DR=Txdata;若發(fā)送緩沖區(qū)為空則發(fā)送數(shù)據(jù)temp=0;while(S PI-SR&1SR

溫馨提示

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

評(píng)論

0/150

提交評(píng)論