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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ARM】Tiny4412裸板编程之按键

發(fā)布時間:2024/4/24 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ARM】Tiny4412裸板编程之按键 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 開發(fā)環(huán)境
    • 02. 控制原理
    • 03. 配置寄存器
    • 04. 程序示例一
    • 05. 程序示例二
    • 06. 附錄

01. 開發(fā)環(huán)境

  • 開發(fā)板:Tiny4412SDK標(biāo)準(zhǔn)版 「Tiny4412 SDK 1506」
  • 工具:「arm-linux-gcc-4.5.1」 「minicom」 「dnw」
  • 平臺:Ubuntu 20.04

02. 控制原理

試過了GPIO的輸出功能,再來測試下GPIO的輸入功能。開發(fā)板上有四個用戶按鍵,使用這四個按鍵來控制四個LED的狀態(tài)。

咱們的按鍵在底板上,所以需要看底板的原理圖

打開底板原理圖(Tiny4412SDK-1506-Schematic.pdf)

用戶按鍵KEY1、KEY2、KEY3、KEY4分別對應(yīng)了GPX3_2、GPX3_3、GPX3_4、GPX3_5,并且按鍵引腳平常是高電平,按鍵被按下變?yōu)榈碗娖健?/p>

03. 配置寄存器

由原理圖可知,程序只進(jìn)行了兩步操作。

第一步:GPX3CON功能配置寄存器,地址為0x11000000+0x00000C60=0x11000C60,每四位控制一個引腳,0輸入,1輸出等等,這里我們用到的是輸入功能。

  • Base Address: 0x1100_0000

  • Address = Base Address + 0x0C60, Reset Value = 0x0000_0000

第二步:GPX3DAT數(shù)據(jù)寄存器,讀取對應(yīng)的位即可。

04. 程序示例一

Key控制對應(yīng)的LED

led.s文件內(nèi)容如下

.section .text.align 2.global led_init led_init:@配置為輸出ldr r0, =0x110002E0 ldr r1, [r0]ldr r2, =0xffffbic r1, r1, r2ldr r2, =0x1111orr r1, r1, r2str r1, [r0]mov pc, lr.align 2.global led_allon led_allon:ldr r0, =0x110002E4 ldr r1, [r0]bic r1, r1, #0xfstr r1, [r0]mov pc, lr.align 2.global led_alloff led_alloff:ldr r0, =0x110002E4 ldr r1, [r0]orr r1, r1, #0xfstr r1, [r0]mov pc, lr.align 2.global led_on led_on:ldr r1, =0x110002E4 ldr r2, [r1]mov r3, #1bic r2, r2, r3, LSL r0str r2, [r1]mov pc, lr.align 2.global led_off led_off:ldr r1, =0x110002E4 ldr r2, [r1]mov r3, #1orr r2, r2, r3, LSL r0str r2, [r1]mov pc, lr.align 2.global led_set led_set:ldr r1, =0x110002E4 ldr r2, [r1]orr r2, r2, #0xfand r2, r2, r0str r2, [r1]mov pc, lr

key.s內(nèi)容如下

.section .text.align 2.global key_init key_init:ldr r0, =0x11000C60ldr r1, [r0]ldr r2, =0xffff00bic r1, r1, r2str r1, [r0]mov pc, lr.align 2.global key_get key_get:ldr r1, =0x11000C64ldr r0, [r1]lsr r0, #2mov pc, lr

test.s文件內(nèi)容如下

.section .text.align 2.global _start _start:stmfd sp!, {lr}bl key_initbl led_init1:bl key_getbl led_setb 1bldmfd sp!, {pc}

05. 程序示例二

led控制蜂鳴器 key1控制蜂鳴器開,key2控制蜂鳴器關(guān)

bell.s文件內(nèi)容如下

.section .text.align 2.global bell_init bell_init:@GPD0_0ldr r0, =0x114000A0ldr r1, [r0]bic r1, r1, #0xforr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_on bell_on:ldr r0, =0x114000A4ldr r1, [r0]orr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_off bell_off:ldr r0, =0x114000A4ldr r1, [r0]bic r1, r1, #0x1str r1, [r0]mov pc, lr

key.s文件內(nèi)容如下:

.section .text.align 2.global key_init key_init:ldr r0, =0x11000C60ldr r1, [r0]ldr r2, =0xffff00bic r1, r1, r2str r1, [r0]mov pc, lr.align 2.global key_get key_get:ldr r1, =0x11000C64ldr r0, [r1]lsr r0, #2mov pc, lr

test.s文件內(nèi)容如下:

.section .text.align 2.global _start _start:stmfd sp!, {lr}bl key_initbl bell_init1:bl key_getmov r4, r0tst r4, #1bleq bell_ontst r4, #0b10bleq bell_offb 1bldmfd sp!, {pc}

06. 附錄

Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf

總結(jié)

以上是生活随笔為你收集整理的【ARM】Tiny4412裸板编程之按键的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。