在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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之位綁定

            作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
            位綁定的概念:對于51單片機只有8位,對于M3來說,有32位,也就是說把32位中的某一位通過一個簡單的地址的變換的算法來實現(xiàn)對該位的操作,它能夠映射到一個地址的空間,也就是說一個位它占一個地址,就好比如把惠州放在廣東省的某一個地址,叫做惠州市,通過搭去惠州的車票就可以來到惠州市這個地址,別去東莞哈、但是這個位只有在地址的最低位有效,因為地址可能是指向一個32位的內(nèi)存單元、、因為是LSB有效、、所以對其操作的時候就大可不必通過屏蔽其他位來對綁定的位進行操作、也正是最低位有效,所以只要看最低位即可、因為你買的是惠州的車票,所以就不用屏蔽東莞了,因為車不會去東莞、請看“美女”照片:


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

            從圖片中我們可以看出,一個位就綁定了一個地址,看到這,你會覺得奇怪?為什么位帶區(qū)地址是從0x2000 00000開始,而綁定的地址是從0x2200 0000開始的呢?啊哈、、別急哈、、正所謂心急吃不了熱豆腐、、

            由于M3核處理都是按32位整體處理的,并沒有單獨對一個位進行操作,所以位綁定就可以實現(xiàn)CPU對單獨一個位進行操作,只需要一個指令周期、其速度可顯而知、、但是整個M3內(nèi)核并沒有全部允許位綁定,只有兩個區(qū)有,分別為:

            SARM區(qū):0x2000_0000‐0x200F_FFFF 這個SRAM綁定的地址就是從0x2200 0000開始的

            片上外設(shè)區(qū):0x4000_0000‐0x400F_FFFF 這個區(qū)綁定的地址就是從0x4200 0000開始的、、

            其映射表分別如下:





            可以看到GO TO Definition,點擊它,就可以找到GPIOA~E的地址,以此類推,我們就可以找出背后的“大哥大”了、、如圖:









            好了、、有了地址、但是我們還需要每個IO口的輸出輸入寄存器的偏移地址:






            沒錯了、我們以0x08 0x0c為例

            1 #define GPIOA_ODR_A (GPIOA_BASE + 0X0C)
            2 #define GPIOA_IDR_A (GPIOA_BASE + 0X08)3 ...4 #define GPIOA_ODR_E (GPIOE_BASE + 0X0C)5 #define GPIOA_IDR_E (GPIOE_BASE + 0X08)6 7 #define BitBand(Addr,BitNum)  *((volatile unsiged long *)(Addr&0xf0000000)+0x2000000+((Addr&0xfffff)<<5)+(BitNum<<2))8 9 #define PAout(n)  BitBand(GPIOA_ODR_A,n)10 #define PAin(n)   BitBand(GPIOA_IDR_A,n)11 ...12 #define PEout(n)  BitBand(GPIOE_ODR_A,n)13 #define PEin(n)   BitBand(GPIOE_IDR_A,n)

            我來解釋下:

            Addr&0xf0000000   因為我們不知道到底是SRAM還是片上外設(shè)區(qū),所以我們這里取其最高位  因為最高位有可能為4 也有可能為2

            Addr&0xfffff可以看到位綁定的范圍0x2000_0000‐0x200F_FFFF0x4000_0000‐0x400F_FFFF所以我們這里把高三位屏蔽掉,就相當于 A - 0x20000000的效果了、、為什么我這里要用《5 和《2 呢?對比一下、、我們可以知道《5相當于*32《2相當于*4那我們?yōu)槭裁匆米笠品柲???原因在這:因為左移的處理速度要比乘的快很多、、我們盡量把乘除轉(zhuǎn)化為加減和左右移寫到這里、、沒錯了、、這下子我們就可以像操作51那樣方便操作32位的芯片了、、、



            關(guān)鍵詞: STM32位綁

            評論


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

            關(guān)閉