新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32 GPIO 相關寄存器(二)

        STM32 GPIO 相關寄存器(二)

        作者: 時間:2016-11-29 來源:網絡 收藏
        STM32單片機,有了端口才能和外界聯系,學會了端口控制,才能更好地利用外設。建立和外界的聯系,發揮自身的優點。
        首先介紹一下基本的GPIO相關的寄存器
        1,GPIOX_CRL 低8位端口配置寄存器
        這個寄存器主要是對配置管腳是輸入還是輸出:
        其中1)MODEy[1:0]主要是配置是輸入端口還是輸出端口的。配置為輸出得時候還可以配置輸出的管腳速度等級。
        2)CNFy[1:0] 主要是兩種形式,在端口配置輸入的時候,即MODEy[1:0]位00(輸入),用來配置輸入的模式,主要是模擬輸入,浮空輸入,上拉模式和下拉模式。
        3)CNFy[1:0]在端口配置為輸出的時候,用來控制輸入的模式。具體看手冊吧。
        總得來說,就是MODEy[1:0] 先配置管腳是輸入還是輸出,是輸入就繼續配置CNFy[1:0]來配置輸出管腳的連接模式。要是輸出的話,就繼續配置MODEy[1:0]的管腳速度速度等級,之后再配置管腳的連接模式。上拉,下拉,推免,開漏等等。具體運用的時候看看手冊就明白了。
        2,GPIOX_CRH高8位端口配置寄存器
        和GPIOX_CRH 完全一樣,只是端口換成高8位了。不說了,看看就明白了!
        3,GPIOX_ODR端口輸出數據寄存器
        學過AVR的都知道,輸出的時候有輸出數據寄存器,STM32也一樣。思想COPY過來,就自然知道了GPIOX_ODR是做什么的了。不過要注意的是,這個玩意不能一個位一個位的去操作,還是51的簡單啊,不過原子大哥已經把那個端口映射可操作位段,不明白,還是看自己的吧。一個GPIOA端口就16位,自然的32位的GPIOX_ODR 就只有低16位有效了,想輸出什么就給這個寄存器賦值就OK了。
        或者用GPIOA->ODR |=(1<ODR &=(0<
        完成了這一步,我們就可以軟件延時,控制輸出流水燈了。前提是開啟設備時鐘哦。
        4,GPIOX_IDR 端口輸入數據寄存器
        這個寄存器用到的前提是端口配置為輸入模式時候。什么時候想讀取值,就什么時候讀取吧。大家都明白。
        5,GPIOX_BSRR 端口位設置/清除寄存器
        這個寄存器我用了一些,別的也不會。就感覺超級好用。用起來很方便。比如你端口配置好了。想PA5輸出“1”。就GPIOA->BSRR |=(1<<5);5是對應的哦。輸出“0”,一樣的
        GPIO->BSRR |=(1<<(5+16));為什么加16,你明白的。
        6,GPIOX_BRR 端口位清除寄存器
        晚上百度了一下,有了GPIOX_BSRR 為什么還要有GPIOX_BRR ,沒看明白。有了拿來就用就對了。一樣的和GPIOx_BSRR一樣的用法。專門清除的。GPIOA->BRR |= (1<
        7,端口配置鎖定寄存器GPIOX_LCKR,鎖定了當然就不能修改了。保護了。避免不小心造成的失誤。以后用到了在琢磨吧。


        關鍵詞: STM32GPIO寄存

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 右玉县| 红原县| 五华县| 铜川市| 牟定县| 贺州市| 疏附县| 内丘县| 岑溪市| 香格里拉县| 清河县| 贡嘎县| 当雄县| 华坪县| 金沙县| 县级市| 昭平县| 武隆县| 云霄县| 丹棱县| 东源县| 鹰潭市| 时尚| 监利县| 德化县| 阿图什市| 平塘县| 五常市| 金川县| 山阴县| 清远市| 论坛| 洞头县| 富顺县| 双城市| 寻乌县| 烟台市| 庆云县| 永顺县| 济宁市| 五莲县|