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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【ARM】Tiny4412裸板编程之按键(C语言)

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

00. 目錄

文章目錄

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

01. 開發環境

  • 開發板:Tiny4412SDK標準版 「Tiny4412 SDK 1506」
  • 工具:「arm-linux-gcc-4.5.1」 「minicom」 「dnw」
  • 平臺:Ubuntu 20.04

02. 控制原理

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

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

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

用戶按鍵KEY1、KEY2、KEY3、KEY4分別對應了GPX3_2、GPX3_3、GPX3_4、GPX3_5,并且按鍵引腳平常是高電平,按鍵被按下變為低電平。

03. 配置寄存器

由原理圖可知,程序只進行了兩步操作。

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

  • Base Address: 0x1100_0000

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

第二步:GPX3DAT數據寄存器,讀取對應的位即可。

04. 程序示例一

Key控制對應的LED

gpio.h文件

#ifndef __GPIO_H__ #define __GPIO_H__typedef volatile unsigned int U32; typedef volatile unsigned short U16; typedef volatile unsigned char U8;//LED #define GPM4CON *(U32*)0x110002e0 #define GPM4DAT *(U32*)0x110002e4//Key #define GPX3CON *(U32*)0x11000c60 #define GPX3DAT *(U32*)0x11000c64//Buzzer #define GPD0CON *(U32*)0x114000a0 #define GPD0DAT *(U32*)0x114000a4//LED初始化 int led_init(void); //LED 全亮 int led_allon(void); //LED 全滅 int led_alloff(void);//Buzzer初始化 int bell_init(void); //Buzzer 開 int bell_on(void); //Buzzer 關 int bell_off(void);//Key初始化 int key_init(void); //key value獲取 int key_get(void);#endif/*__GPIO_H__*/

key.c文件

#include "gpio.h"//Key初始化 int key_init(void) {GPX3CON &= ~(0xffff << 8);return 0; }//key value獲取 int key_get(void) {return (GPX3DAT >> 2) & 0xf; }

led.c文件

#include <gpio.h>//LED初始化 int led_init(void) {GPM4CON &= ~0xffff;GPM4CON |= 0x1111;return 0; }//LED 全亮 int led_allon(void) {GPM4DAT &= ~0xf;return 0; }//LED 全滅 int led_alloff(void) {GPM4DAT |= 0xf;return 0; }//LED one 亮 int led_on(U32 i) {GPM4DAT &= ~(1 << i);return 0; }//LED one 滅 int led_off(U32 i) {GPM4DAT |= (1 << i);return 0; }int led_set(U32 val) {GPM4DAT &= ~0xf;GPM4DAT |= val;return 0; }U32 led_get(void) {return GPM4DAT & 0xf; }

lib.c文件

int delay(unsigned int i) {while(--i); }int delay1() {unsigned int i = 0xfffff;while(--i); }

test.c文件

#include "gpio.h"int main(void) {int val = 0;led_init();key_init();while(1){val = key_get();led_set(val);delay1();}return 0; }

Makefile文件

CROSS_COMPILE = arm-linux- CC = $(CROSS_COMPILE)gcc CC_FLAGS = -c -I ./ LD = $(CROSS_COMPILE)ld LD_FLAGS = -T start.lds -Ttext 0x40000000 OBJCOPY = $(CROSS_COMPILE)objcopy COPY_FLAGS = -O binary OBJDUMP=$(CROSS_COMPILE)objdump DUMP_FLAGS=-D TARGET=test OBJS=start.o led.o lib.o test.o bell.o key.oall: $(OBJS)$(LD) $(LD_FLAGS) $(OBJS) -o $(TARGET)$(OBJCOPY) $(COPY_FLAGS) $(TARGET) $(TARGET).bin$(OBJDUMP) $(DUMP_FLAGS) $(TARGET) > $(TARGET).disrm -rf *.o%.o:%.s$(CC) $(CC_FLAGS) $< %.o:%.S$(CC) $(CC_FLAGS) $< %.o:%.c$(CC) $(CC_FLAGS) $<.PHONY:clean clean:rm -rf *.o $(TARGET).bin $(TARGET).dis $(TARGET)

05. 程序示例二

led控制蜂鳴器 key1控制蜂鳴器開,key2控制蜂鳴器關

test.c文件

#include "gpio.h"int (*print)(const char *format, ...) = (void*)0x43e11a2c;int main(void) {U32 val = 0;bell_init();key_init();while(1){val = key_get();print("val = %p\n", val^0xf);if (0x1 == (val^0xf)){bell_on(); }else if (0x2 == (val^0xf)){bell_off(); }delay1();}return 0; }

06. 附錄

Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf

總結

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

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

主站蜘蛛池模板: 九九久久视频 | 国产三级在线观看视频 | 欧美色呦呦 | 欧美精品一区二区免费看 | 亚洲乱码国产乱码精品精98午夜 | 澳门三级| 国产在线欧美 | 无套白嫩进入乌克兰美女 | 中文字幕第一页在线视频 | 成年人网站免费观看 | 久久国产网站 | 精品一区二区三区免费观看 | 天堂婷婷 | 性xxx18| 99一区二区 | av日韩精品| 好好热视频 | 成人av片在线观看 | 人妻一区二区三区四区五区 | 成年视频在线观看 | 免费成人在线观看动漫 | 91中文字幕视频 | 中文字幕精品无码一区二区 | 成人av一区二区三区在线观看 | 天天操天天操天天操天天操天天操 | 黄色精品视频 | 国产玖玖在线 | 亚洲成av人片一区二区梦乃 | 天堂网视频在线 | 在线播放亚洲 | 精品人伦一区二区三区 | 特色黄色片 | 被绑在床强摁做开腿呻吟 | 日本一区二区人妻 | 亚洲自拍偷拍综合 | 伊人激情综合 | 97人妻人人澡人人爽人人精品 | 国产精品伦一区二区三区 | 免费精品视频在线 | 黄色污污网站在线观看 | 日产电影一区二区三区 | 亚洲精品资源 | 红桃视频亚洲 | 97成人在线观看 | 欧美日韩无 | 在线91av| 丁香花完整视频在线观看 | 中文在线天堂网 | 国产成人无码性教育视频 | 国产高清在线观看视频 | 日不卡 | 波多野结衣在线视频免费观看 | 看黄色的网址 | 欧美日韩精品中文字幕 | 五月婷婷久久久 | 99蜜桃臀久久久欧美精品网站 | 精品一区国产 | 亚洲色精品三区二区一区 | 亚洲精品久久夜色撩人男男小说 | 男男play视频 | 天堂俺去俺来也www 欧美大片在线播放 | 三级中文字幕在线 | 精品婷婷 | 精品久久久无码中文字幕边打电话 | 性一交一乱一区二区洋洋av | 欧美久久视频 | 高清成人免费视频 | 中国免费黄色片 | 成人av影院在线观看 | 中国特级毛片 | 亚洲av无码一区东京热久久 | 国产一区二区三区免费观看视频 | 9i免费看片黄 | 少妇在军营h文高辣 | 日韩成人av电影 | 日本视频黄色 | 午夜激情影院 | 日本黄色片. | 免费a v在线| 亚洲一区二区三区电影在线观看 | 91gao| 女生裸体无遮挡 | 日韩在线观看精品 | 熟妇的味道hd中文字幕 | 91麻豆精品91久久久久同性 | 91精品久久久久久久久中文字幕 | 日韩r级电影在线观看 | 亚洲国产日韩精品 | 深夜福利一区 | 草久在线观看视频 | 精品少妇人妻av一区二区三区 | 超碰三级 | 久久mm | 欧美乱欲视频 | 日本人妻伦在线中文字幕 | 国产精品99视频 | 天天色天天射天天干 | 欧美在线播放一区二区 | 久久久在线免费观看 |