在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            STM32 IO 口操作

            作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
            STM32IO口操作STM32的0x2000_0000到0x200F_FFFF單元的SRAM被定義成BitBandRegion,共1MB字節(jié),與之相對(duì)應(yīng)的是0x2200_0000到0x23FF_FFFF單元32MB。

            本文引用地址:http://www.biyoush.com/article/201611/316352.htm

            (一)開啟時(shí)鐘

            在初始化IO的時(shí)候,首先要初始化IO的時(shí)鐘。

            APB1ENR

            APB2ENR

            兩個(gè)從字面上看都是AdvancedPeripheryBusEnable,不同之處一個(gè)是1,一個(gè)是2。區(qū)別在哪里?IO初始化的應(yīng)該根據(jù)需要開啟哪個(gè)時(shí)鐘總線?

            APB1外設(shè)時(shí)鐘使能寄存器(RCC_APB1ENR)低速APB使能,最大允許頻率36MHz

            APB2外設(shè)時(shí)鐘使能寄存器(RCC_APB2ENR)高速APB使能,最大允許頻率72MHz

            首先搞清楚這里的外設(shè)是相對(duì)CortexM3的內(nèi)核來(lái)講的。這兩個(gè)寄存器都是32的,占用四個(gè)字節(jié)。

            APB1外設(shè)時(shí)鐘使能寄存器的可用位為20位,這些都是R/W,對(duì)應(yīng)的“外設(shè)”時(shí)鐘有:(1)DAC接口時(shí)鐘使能,(2)電源接口時(shí)鐘使能,(3)備份接口時(shí)鐘使能,(4、5)Can2和Can1接口時(shí)鐘使能,(6、7)IIC2和IIC1接口時(shí)鐘使能,(8、9、10、11)USART5、USART4、USART3、USART2接口時(shí)鐘使能,(12、13)SPI3和SPI2接口時(shí)鐘使能,(14)窗口看門狗時(shí)鐘使能,(15-20)定時(shí)器2-7時(shí)鐘使能,可以看得出,一個(gè)位對(duì)應(yīng)一個(gè)“外設(shè)”,0關(guān)閉,1打開。

            APB2外設(shè)時(shí)鐘使能寄存器,在跑馬燈程序的IO_Configration函數(shù)初始化的第一個(gè)寄存器就是它。說明一下,這兩個(gè)寄存器都位于結(jié)構(gòu)體RCC_TypeDef中,名字叫APB1ENR和APB2ENR。操作的時(shí)候就是RCC->APB1ENR=xxxxxxxx,這里是舉個(gè)例子。同樣這個(gè)寄存器和上面的1不一樣,它只有11個(gè)bit有效,其余的bit保留(保留位讀為0),開放出來(lái)的bit都是R/W(可讀可寫的)。這些外設(shè)都是:(1)USART1接口時(shí)鐘使能,

            (2)SPI1接口時(shí)鐘使能(3)定時(shí)器1時(shí)鐘使能,(4、5)ADC2和ADC1接口時(shí)鐘使能,(6-10)端口A-E時(shí)鐘使能,(11)輔助功能IO時(shí)鐘使能??梢钥吹贸觯彩且粋€(gè)位對(duì)應(yīng)一個(gè)外設(shè),1打開,0關(guān)掉。

            來(lái)看這段代碼

            RCC->APB2ENR|=1<<2;//使能PORTA時(shí)鐘

            RCC->APB2ENR|=1<<5;//使能PORTD時(shí)鐘

            上面這兩個(gè)操作就是打開端口A的端口D的時(shí)鐘。更為簡(jiǎn)潔的寫法:

            RCC->APB2ENR|=0x00000014;//訪問:字,半字和字節(jié)訪問

            //這里采用字訪問

            或者

            RCC->APB2ENR|=(U32)0x14;//訪問:字,半字和字節(jié)訪問

            //這里采用字訪問

            (二)設(shè)置輸入輸出模式

            CRH-xcontrolregisterhigh端口配置高寄存器

            CRL-xcontrolregisterlow端口配置低寄存器

            //STM32每個(gè)端口有16個(gè)口線,GPIOA,GPIOB,GPIOC,GPIOD,GPIOE,//GPIOF,GPIOG.目前IO口的數(shù)目最多的A-G,總共112個(gè)。

            后面的X表示屬于那一個(gè)端口,每個(gè)端口對(duì)應(yīng)一個(gè)控制寄存器。GPIOA->CRH=0xxxxxxxx;

            就可以實(shí)現(xiàn)對(duì)A端口CRH的操作。

            CRL-x和CRH-x都是32位的寄存器,每一位都是RW。必須以字(32位)的方式操作這些外設(shè)寄存器。其中四位控制一個(gè)端口的輸入輸出模式,比如說速率是50M,2M,還是20M,輸出是OD,還是PP,輸入是FLOATING還是IPU。這個(gè)設(shè)置在庫(kù)函數(shù)中的體現(xiàn)就是GPIO_InitStructure.GPIO_Mode和GPIO_InitStructure.GPIO_Speed的參數(shù)配置。

            (三)讀寫端口數(shù)據(jù)

            端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)(x=A..E),要寫數(shù)據(jù)到端口就給這個(gè)寄存器賦值。32位寄存器,高16位保留。低16位對(duì)應(yīng)IO。

            端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)(x=A..E),要讀取端口上的狀態(tài),就讀取這個(gè)寄存器的值。32位寄存器,高16位保留,低16位對(duì)應(yīng)IO。

            (四)還有三個(gè)寄存器

            GPIOx_BSRRgpiobitsetorresetregister端口位設(shè)置清除寄存器

            這是一個(gè)32位寄存器,位寫1有效,寫0無(wú)影響,高16位寫清除對(duì)應(yīng)的位,即對(duì)應(yīng)位輸出0;低16位寫1置位對(duì)應(yīng)位,對(duì)應(yīng)位輸出1。該寄存器只能寫,不能讀,并且只支持字操作。

            GPIOx_BRRgpiobitresetregister端口位清除寄存器

            少了個(gè)S,對(duì)比上面的功能上了少了置位功能,其它相同。

            GPIOx_LCKRgpiolockregister端口位配置鎖定寄存器

            這個(gè)暫時(shí)估計(jì)不用,就不說了。



            關(guān)鍵詞: STM32IO口操

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉