博客專欄

        EEPW首頁 > 博客 > 迅為龍芯2K1000開發板通過匯編控制GPIO

        迅為龍芯2K1000開發板通過匯編控制GPIO

        發布人:紅李亞 時間:2023-09-26 來源:工程師 發布文章
        上一小節,我們使用了 語言控制了 gpio,這一小節我們來看一下如何使用匯編來控制 gpio 呢?有的
        同學可能會有疑問了,既然我們可以使用 語言來控制 gpio,為什么我們還要使用更底層的匯編語言呢,
        如果我們要使用 語言,是不是需要等待 語言環境建立起來才可以使用呢,那他是不是就要比匯編稍微
        的慢一些呢,如果我們想讓他上電立馬就確定 gpio 管腳的電平的狀態,使用匯編會更好些。
        我們打開 Targets/LS2K/ls2k/start.S 下的 start.S 文件,我們在 9.4.2 小節里面已經確定了他的位置,這里
        就不在贅述了。
        然后我們在第 487 行輸入以下代碼,同樣,這里還是用 gpio0 給大家舉例
        /*
        *設置使用 GPIO 的方向為輸出
        */
        li v0, 0xbfe10500
        ld v1, (v0)
        dli a0, (1<<0)
        //gpio0
        or v1, a0
        xor v1, a0
        sd v1, (v0)
        /*
        *找到 GPIO 輸出數據寄存器
        */
        //0x10(v0)這種寫法就是給 v0 地址偏移 0x10,v0 地址是 0xbfe10500,偏移 0x10 就是 0xbfe10510,即
        輸出數據寄存器
        ld v1, 0x10(v0)
        /*
        *給數據寄存器寫 1 輸出高電平
        */
        or v1, a0
        sd v1, 0x10(v0) //on
        /*
        *延遲
        */
        dli a2,0xffff
        //delay
        1:
        subu a2, 0x1
        nop
        bgtz a2, 1b
        /*
        *給數據寄存器寫 0 輸出低電平
        */
        or v1, a0
        xor v1, a0
        //off
        sd v1, 0x10(v0)
        /*
        *延遲
        */
        dli a2,0xffff
        //delay
        2:
        subu a2, 0x1
        nop
        bgtz a2, 2b
        如下圖所示:


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 開發板

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江山市| 措美县| 田林县| 当涂县| 江西省| 高陵县| 河南省| 西藏| 长乐市| 桂平市| 榕江县| 高陵县| 措勤县| 阿合奇县| 洪江市| 荔波县| 乐山市| 浪卡子县| 楚雄市| 大理市| 华安县| 岳阳县| 昌邑市| 宁德市| 阜宁县| 和田县| 蒙自县| 沂南县| 南京市| 兰西县| 琼中| 仙桃市| 太和县| 西畴县| 南京市| 武川县| 尚志市| 西昌市| 浮山县| 龙岩市| 克东县|