博客專欄

        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
        如下圖所示:


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



        關鍵詞: 開發板

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 云浮市| 蕲春县| 滁州市| 布尔津县| 包头市| 平昌县| 涡阳县| 那坡县| 蓬溪县| 明溪县| 黑河市| 松原市| 延吉市| 揭阳市| 高州市| 苍梧县| 富顺县| 南城县| 榆树市| 柞水县| 勐海县| 长葛市| 民和| 宜昌市| 涡阳县| 镇巴县| 太和县| 大同市| 扶绥县| 和林格尔县| 巴马| 衡东县| 奇台县| 嫩江县| 济宁市| 始兴县| 文昌市| 美姑县| 海南省| 邛崃市| 阳春市|