s5pv210处理器
datasheet 数据手册
初步认识
三星
ARMCortex-A8 1G 32位的处理器
寻址地址:0x0-0xFFFFFFFF(0~4G-1)4G bytes 线性编址
外设控制器
GPIO通用输入输出
将TPAD的LED1灯点亮
硬件原理图
LED1在底板,底板原理图
arm/硬件原理图/CW210-Peripherial.pdf(底板原理图)
核心板原理图:
CW210_CORE_TARENA.pdf(TARENA)
CW210_CORE_LHGZ.pdf(融慧广泽)
VDD5V:5V电源
GND:接地
Q1:三极管,数字电路中的三极管相当于电子开关,用来控制电路的导通和断开。
给Q1高电平,数字1,三极管导通,整个电路导通,LED1亮
给Q1低电平,数字0,三极管截至,整个电路断开,LED1灭
GPC1_3管脚接到原理图的什么位置
GPC1_3到核心板原理图
GPC1_3
GPC0_3两个CPU(s5pv210)上的管脚
GPIO:CPU中所有的外设接口中最简单的一种接口,通用的IO口,IO就是输入输出,可以通过编程实现IO管脚输出高电平或者低电平,也可以输入高低电平
如何使得GPC1_3或者GPC0_3两个管脚产生高低电平?
要解决此问题,s5pv210的datasheet
P92
GPIO :237个 CPU中管脚绝大多数都是复用,多功能
GPC1组,共有5个管脚
GPC1_0
GPC1_1
GPC1_2
GPC1_3
GPC1_4
GPC0组,共有5个管脚
GPC0_0
GPC0_1
GPC0_2
GPC0_3
GPC0_4
寄存器
P141
P139
GPC1CON寄存器 0xE0200080
当GPC1_3管脚确定了输出功能后,如何具体的输出高低电平?
GPC1DAT寄存器
上下拉电阻寄存器
禁用CPU内部的上下拉电阻
什么上下拉电阻:
上拉电阻:
若按键按下,则XEINT0管脚向CPU输入低电平
若按键松开,则XEINT0管脚向CPU输入高电平
如果没有外接3.3V电源和上拉电阻,XEINT0管脚悬空,状态不确定,可能是高电平,也可能是低电平,上拉电阻就是保证了按键没有被按下时,该管脚有一个确定电平状态,高电平。
下拉电阻:
若按键按下,则XEINT0管脚向CPU输入高电平
若按键松开,则XEINT0管脚向CPU输入低电平
如果没有外接GND和下拉电阻,XEINT0管脚悬空,状态不确定,可能是高电平,也可能是低电平,下拉电阻就是保证了按键没有被按下时,该管脚有一个确定电平状态,低电平。
s5pv210处理器,如何控制GPC1_3管脚
输出高电平或者低电平,具体步骤如下:
1.配置GPC1_3管脚的功能为输出功能
GPC1CON 0xE0200080
bit[15:12]为0001(二进制),表示输出功能
2.禁止GPC1_3管脚的内部上下拉电阻
GPC1PUD 0xE0200088
bit[7:6]为00,表示禁止内部上下拉电阻
3.使得GPC1_3管脚产生高电平或低电平
GPC1DAT 0xE0200084
bit[3] 为1 向三极管输出高电平 LED1亮
为0 向三极管输出低电平 LED1灭
s5pv210处理器,如何控制GPC0_3管脚
输出高电平或者低电平,具体步骤如下:
1.配置GPC0_3管脚的功能为输出功能
GPC0CON 0xE0200060
bit[15:12]为0001(二进制),表示输出功能
2.禁止GPC0_3管脚的内部上下拉电阻
GPC0PUD 0xE0200068
bit[7:6]为00,表示禁止内部上下拉电阻
3.使得GPC0_3管脚产生高电平或低电平
GPC0DAT 0xE0200064
bit[3] 为1 向三极管输出高电平 LED1亮
为0 向三极管输出低电平 LED1灭
写程序:
GPC1PUD&= ~0xC0; 1100 0011
0x000000C0
0xFFFFFF3F
二进制:(24个1) 00111111
GPC1DAT |=8
1000
arm-linux-gcc -march=armv5te-nostdlib -c -o led.o led.c
arm-linux-ld -nostartfiles-nostdlib -Ttext=0x20008000 -e led_main -o led led.o
arm-linux-objcopy -O binary led led.bin
启动开发板:
tarena#tftp 0x20008000 led.bin
tarena#go 0x20008000
思考:如何让LED1闪烁
GPC1DAT
循环体{
bit[3]=1
延时
bit[3]=0
延时
}
源文件—>可执行文件
1.预处理
2.编译 .cà.S(大写)
C 语言 –> 汇编语言(低级语言)
3.汇编 .S(大写)->.o
汇编语言—>机器语言
4.链接
可执行文件(ELF格式,有操作系统的主机可执行)
ELF->bin(二进制格式,裸板执行)
反汇编:(由可执行程序到汇编程序)
arm-linux-objdump -d led>led.s
tarena#tftp 20008000 led.bin
tarena#go 20008038
arm-linux-gcc -march=armv5te-nostdlib -c -o led.o led.c
-march=armv5te指定生成的指令的架构
-nostdlib 指定不使用标准库
arm-linux-ld -nostartfiles-nostdlib -Ttext=0x20008000 -e led_main -o led led.o
-nostartfiles不使用启动文件
-nostdlib 不使用标准库
-Ttext 指定代码段的起始地址
-e led_main 指定程序的入口点,消除警告
led是ELF格式的可执行文件,必须在有操作系统的情况下,才能执行
arm-linux-objcopy -O binary led led.bin
将ELF 可执行文件led转换成能在裸板上运行led.bin
Makefile
make
%.o:%.c
$(CC) $(CFLAGS) -c -o $@ $<
%:表示*
$@:表示*.o
$<:表示*.c
蜂鸣器:
如何使得蜂鸣器响
原理图
GPD0_1管脚的操作
GPIO口
GPD0_1设置为输出功能
禁止GPD0_1管脚内部上下拉电阻
使GPD0_1管脚产生高低电平
高电平:蜂鸣器响
低电平:蜂鸣器不响
找到对应的寄存器
GPD0CON
GPD0PUD
GPD0DAT
GPIO
输入输出
s5pv210
采用分组的方式进行管理
GPA0
GPA1
GPAB
GPC0
GPC1
操作该组管脚对应的SFR(特殊功能寄存器),就能实现对管脚的操作
GPC1CON 控制寄存器,配置管脚的功能
GPC1_3 bit[15:12]
GPC1PUD 禁止内部上下拉电阻
GPC1_3 bit[7:6]
GPC1DAT
GPC1_3 bit[3]
串口
UART