GPIO接口实验
1、分析LED灯的电路图
--------------------------
分析led灯的硬件连接关系,
分析led灯的工作原理
---------------------------------------------
三极管的介绍:
-----------------
分类:NPN三极管 PNP三极管
特性:放大 导通 截止
------------------------------------
集电极:C
基极:B
发射极:E
-------------------
NPN(箭头向外) :基极为高电平时,CE导通,
基极为低电平时,CE截止。
PNP(箭头向内) :基极为低电平时,EC导通,
基极为高电平时,EC截止。
--------------------------------------
通过对LED1电路图的分析可知,
----------------------------------
当PE10引脚输出高电平时,NPN三极管导通,此时LED1灯亮;
-------------------------------------------------------
当PE10引脚输出低电平时,NPN三极管截止,此时LED1灯灭。
----------------------------------------------------------
2、分析芯片手册
-----------------------
MOS管的开关特性:
----------------------------
NMOS : 栅极为高电平时,源极和漏极导通,
栅极为低电平时,源极和漏极截止。
-----------------------------------------------
PMOS : 栅极为低电平时,源极和漏极导通,
栅极为高电平时,源极和漏极截止。
---------------------------------------------------
LED1灯接到PE10引脚:控制LED1灯闪烁的编程思路:
void led_init()
{
1. 配置PE10引脚为输出模式 GPIOx_MODER
2. 配置PE10引脚为推挽输出 GPIOx_OTYPER
3. 配置PE10引脚输出速度 GPIOx_OSPEEDR
4. 配置PE10引脚进制上下拉电阻 GPIOx_PUPDR
}
while(1)
{
1. 配置PE10引脚输出高电平, GPIOx_ODR
2. 配置PE10引脚输出低电平, GPIOx_ODR
}
注:x = A-K, Z
-----------------------------------------------
汇编点亮LED1灯
.text
.global _start
_start:
ldr r0, =0x50000A28 @ 准备地址
ldr r1, [r0] @ 将地址中的数据读到寄存器中
orr r1, r1, #(0x1 << 4)
str r1, [r0]
ldr r0, =0x50006000
ldr r1, [r0]
bic r1, r1, #(0x3 << 20)
orr r1, r1, #(0x1 << 20)
str r1, [r0]
ldr r0, =0x50006004
ldr r1, [r0]
bic r1, r1, #(0x1 << 10)
str r1, [r0]
ldr r0, =0x50006008
ldr r1, [r0]
and r1, r1, #(~(0x3 << 20))
str r1, [r0]
ldr r0, =0x5000600C
ldr r1, [r0]
and r1, r1, #(~(0x3 << 20))
str r1, [r0]
loop:
ldr r0, =0x50006014
ldr r1, [r0]
orr r1, r1, #(0x1 << 10)
str r1, [r0]
bl delay_1s
ldr r0, =0x50006014
ldr r1, [r0]
and r1, r1, #(~(0x1 << 10))
str r1, [r0]
bl delay_1s
b loop
@ 大概 1s的延时函数
delay_1s:
mov r3, #0x10000000
mm:
cmp r3, #0
subne r3, r3, #1
bne mm
mov pc, lr
.end