网站常用的一种js的图片幻灯片特效代码,东营信息发布平台,单页面网站制作视频,网站建设实训过程报告一、GPIO
GPIO#xff08;General-purpose input/output#xff09;即通用型输入输出#xff0c;GPIO可以控制连接在其之上的引脚实现信号的输入和输出 芯片的引脚与外部设备相连#xff0c;从而实现与外部硬件设备的通讯、控制及信号采集等功能 LED实验步骤 实验步骤 以L…一、GPIO
GPIOGeneral-purpose input/output即通用型输入输出GPIO可以控制连接在其之上的引脚实现信号的输入和输出 芯片的引脚与外部设备相连从而实现与外部硬件设备的通讯、控制及信号采集等功能 LED实验步骤 实验步骤 以LED2灯 闪烁 为例
1. 通过电路原理图分析LED的控制逻辑 2. 通过电路原理图查找LED与Exynos4412的连接关系3. 通过数据手册分析GPIO中哪些寄存器可以控制LED4. 通过程序去操控对应的寄存器完成对LED的控制第一步 得出结论高电平-亮 低电平-灭 第二步 通过连接芯片那一端的网络标号CHG_COK 查看那个寄存器可以控制该LED灯 在芯片电路设计图中可以看到是GPX2_7在控制着该LED2灯 第三步 查看芯片手册分析哪些寄存器可以控制LED2 可以看到GPX2有四组 GPX2CON配置GPX2寄存器 GPX2DAT向内存发送数据高/地电平
通过LED与Exynos4412的连接关系可以看到用到的寄存器是GPX2_7GPX2寄存器第七组 通过GPX2CON[7]来配置寄存器 配置了寄存器但是没有数据啊 然后得通过GPX2DAT来向GPX2CON[7]发送数据 第四步 在相应的地址中写数据进而控制响应的寄存器
led_asm.s 文件 .text
_start:MAIN:BL LED_CONFIG //跳转
LOOP:BL LED_ONBL DELAYBL LED_OFFBL DELAYB LOOP/*控制LED2灯 配置寄存器*/
LED_CONFIG:LDR R2, 0x11000c40LDR R1, 0x10000000STR R1, [R2]MOV PC, LR/*控制LED2灯 灭*/
LED_ON:LDR R2, 0x11000c44 //GPX2DAT 内存地址LDR R1, 0x00000080 //高电平STR R1, [R2] //R2指向的0x11000c44内存空间地址写入R1的数据 (R2-0x11000c44 R1)MOV PC, LR // 将跳转之前 下一条的地址放回PC指令计数器中/*控制LED2灯 亮*/
LED_OFF:LDR R2, 0x11000c44LDR R1, 0x00000000 //低电平STR R1, [R2]MOV PC, LR/*LED2灯 灭和亮 之间间隔的时间*/
DELAY:LDR R1, 100000000
L:SUB R1, R1, #1CMP R1, #0BNE LMOV PC, LRSTOP:B STOP.end
Makefile文件
TARGET led-asm
CROSS_COMPILE arm-none-linux-gnueabi-
CC $(CROSS_COMPILE)gcc
LD $(CROSS_COMPILE)ld
OBJCOPY $(CROSS_COMPILE)objcopyall:$(CC) -c $(TARGET).s -o $(TARGET).o$(LD) $(TARGET).o -Ttext 0x40008000 -o $(TARGET).elf$(OBJCOPY) -O binary -S $(TARGET).elf $(TARGET).binclean:rm $(TARGET).o $(TARGET).elf $(TARGET).bin