日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)

發布時間:2023/12/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LED實驗

匯編的方式驅動LED

/* *LED匯編實驗 *創建者:Orange *2021年03月04日 */ .global _start @全局標號_start:/*使能所有外設時鐘 */ldr r0, =0x020c4068 @CCGR0的地址ldr r1, =0xffffffff @要向CCGR0寫入的數據str r1, [r0] @將0xffffffff寫入到CCGR0中ldr r0, =0x020c406c @CCGR1的地址str r1, [r0]ldr r0, =0x020c4070 @CCGR2的地址str r1, [r0]ldr r0, =0x020c4074 @CCGR3的地址str r1, [r0]ldr r0, =0x020c4078 @CCGR4的地址str r1, [r0]ldr r0, =0x020c407c @CCGR5的地址str r1, [r0]ldr r0, =0x020c4080 @CCGR6的地址str r1, [r0]/*配置GPIO5_IO3的PIN復用為GPIO,也就是*設置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址為0x02290014*/ldr r0, =0x02290014 @IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =3 @關閉該口的軟件輸入功能,復用為GPIO,則應賦值0x1010,即3str r1, [r0] @將0x00101寫入IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器中/*配置SNVS_TAMPER3的電氣屬性 也就是寄存器:*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3寄存器地址為0x02290058**bit0: 0 為低速率 壓擺率設置*bit5:3 110 R0/6的驅動能力 設置驅動能力(Drive Strength Field)*bit7:6 10 medium(100MHz) 設置速度*bit11 0 關閉開漏使能 設置開漏使能*bit12 1 使能Pull/Keeper *bit13 0 選擇Keeper 選擇Pull還是Keeper*bit15:14 00 100K的下拉電阻 設置上/下拉電阻的大小*bit16 0 關閉HYS使能 設置HYS磁滯使能 *綜上該寄存器的值應設置為0x10b0*/ldr r0, =0x02290058 @IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =0x10b0str r1, [r0] @將r1中的值/*設置GPIO 設置是輸入還是輸出 *GPIO5_GDIR寄存器地址為0x020ac004*設置GPIO5_GDIR寄存器的bit3為1*也就是設置GPIO5_IO03為輸出*/ldr r0, =0x0209c004ldr r1, =0x8str r1, [r0]/*打開LED,也就是設置GPIO5_GPIO03為0*具體要結合開發板原理圖上LED的連接方式來操作*由于此處LED另一端連接的是電源,所以設置為0為點亮* */ldr r0, =0x02090000ldr r1, =1str r1, [r0]loop :b loop

匯編驅動LED小結(代碼分析):

  • 全局標號
  • 使能所有外設時鐘(或在芯片手冊中)
  • ldr r1, =0xffffffff ldr r0, =CCGR(時鐘控制寄存器)的地址str r1, [r0]
  • 配置對應的復用IO口為GPIO
  • /*配置GPIO5_IO3的PIN復用為GPIO,也就是*設置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址為0x02290014*//*配置GPIO5_IO3的PIN復用為GPIO,也就是*設置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址為0x02290014*/ldr r0, =0x02290014 @IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =3 @關閉該口的軟件輸入功能,復用為GPIO,則應賦值0x1010,即3str r1, [r0] @將0x00101寫入IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器中
  • 配置此GPIO口的電氣屬性,比如壓擺率、驅動能力、是否開漏、上下拉電阻的大小、是否使能PULL/Keeper、是否打開HYS磁滯使能等等
  • /*配置SNVS_TAMPER3的電氣屬性 也就是寄存器:*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3寄存器地址為0x02290058**bit0: 0 為低速率 壓擺率設置*bit5:3 110 R0/6的驅動能力 設置驅動能力(Drive Strength Field)*bit7:6 10 medium(100MHz) 設置速度*bit11 0 關閉開漏使能 設置開漏使能*bit12 1 使能Pull/Keeper *bit13 0 選擇Keeper 選擇Pull還是Keeper*bit15:14 00 100K的下拉電阻 設置上/下拉電阻的大小*bit16 0 關閉HYS使能 設置HYS磁滯使能 *綜上該寄存器的值應設置為0x10b0*/ldr r0, =0x02290058 @IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3的地址ldr r1, =0x10b0str r1, [r0] @將r1中的值
  • 設置GPIO是輸入還是輸出
  • /*設置GPIO 設置是輸入還是輸出 *GPIO5_GDIR寄存器地址為0x020ac004*設置GPIO5_GDIR寄存器的bit3為1*也就是設置GPIO5_IO03為輸出*/ldr r0, =0x0209c004ldr r1, =0x8str r1, [r0]
  • 設置完后便可以對GPIO操作,設置0或1,控制GPIO的動作
  • /*打開LED,也就是設置GPIO5_GPIO03為0*具體要結合開發板原理圖上LED的連接方式來操作*由于此處LED另一端連接的是電源,所以設置為0為點亮* */ldr r0, =0x02090000ldr r1, =1str r1, [r0]
  • 最后設置一個循環,使程序持續進行
    loop :
    b loop
  • 總結

    以上是生活随笔為你收集整理的一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。