当前位置:首页 > 单片机 > 单片机
[导读]GPIO引脚的主要作用输出/输入高低电平,用来表示二进制的0和1,当然除此之外还有其它特殊功能,这在之后的课程会学习到的,此处只需要研究输出功能。实验1:在下面的电路中:如果想要点亮4个LED,应该怎么做呢【原理

GPIO引脚的主要作用输出/输入高低电平,用来表示二进制的0和1,当然除此之外还有其它特殊功能,这在之后的课程会学习到的,此处只需要研究输出功能。


实验1:在下面的电路中:



如果想要点亮4个LED,应该怎么做呢


【原理】需要让适宜的电流从右到左通过LED,这样才能激发LED发光


【实现方法】以GPB5为例,将GPB5设为低电平,这时右边的3.3V处于为高电平,电流将从高电平流向处于低电平的GPB5,LED将被点亮


#########################################################################################################

【代码实现】

#########################################################################################################

以下为汇编版本


led_on.bin : led_on.S

arm-linux-gcc -g -c -o led_on.o led_on.S

arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf

arm-linux-objcopy -O binary -S led_on_elf led_on.bin

arm-linux-objdump -D -m arm led_on_elf > led_on_c.dis

clean:

rm -f *.bin *elf *.o *bak *.dis *~


.text

.global _start

_start:

LDRR0, =0x56000010

MOVR1, #0x00000400

STRR1, [R0]

LDRR0, =0x56000014

MOVR1, #0x00000000

STRR1, [R0]

MAIN_LOOP:

BMAIN_LOOP


以下为C语言版本


led_on_c.bin : crt0.S led_on_c.c

arm-linux-gcc -g -c -o crt0.o crt0.S

arm-linux-gcc -g -c -o led_on_c.o led_on_c.c

arm-linux-ld -Ttext 0x0000000 -g crt0.o led_on_c.o -o led_on_c_elf

arm-linux-objcopy -O binary -S led_on_c_elf led_on_c.bin

arm-linux-objdump -D -m arm led_on_c_elf > led_on_c.dis

clean:

rm -f *.bin *elf *.o *bak *.dis *~



int main()

{

* (unsigned long *)0x56000010 = 0x00000400;

* (unsigned long *)0x56000014 = 0x00000000;

return 0;

}



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭