Smart4418裸机开发(二):LED点灯

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/M_N_N/article/details/82113307

板子原理图:Smart-1608
S5P4418芯片手册:Pi2_SOC_DS_0.1.pdf


查看原理图:

PDF中搜LED;
这里写图片描述
这里写图片描述
以LED1为例,连接引脚是W24(GPIOB12),低电平点亮;


芯片手册

第15.3.2节,对引脚输出模式的描述;
这里写图片描述
大致意思是

  • 配置GPIOx. Alternate Function Select register(GPIOxALTFN0 or GPIOxALTFN1) 寄存器来选择引脚的功能;
  • GPIOx Output Enable register(GPIOxOUTENB) 寄存器使能输出;
  • GPIOx Output Register (GPIOxOUT) 寄存器控制引脚输出高低电平;
  • 第三段还不太懂,开漏输出模式的几个引脚只有在GPIOxOUT设置为0时才起作用,即使GPIOxOUTENB使能为输入;

第2.3节,I/O功能描述
这里写图片描述
选择Alternate Function 2(交错函数2?)才当做普通io口GPIOB12使用,参考32里面的复用功能;

第15.4.1.8节,寄存器GPIOxALTFN0的说明:
这里写图片描述
这里写图片描述
这里写图片描述
寄存器地址描述的有点小模糊;比如GPIOxALTFN0,按手册的说法应该是0xC001B000 + 0xB020 = 0xC0026020,但正确的应该是0xC001B020(0xC0010000 + 0xB020);
GPIOxALTFN0[25:24] 配置为10;
 
 
GPIOxOUTENB寄存器说明:
这里写图片描述

GPIOxOUT寄存器说明:
这里写图片描述

敲代码

三个文件;

//main.c 主程序

#define uint            unsigned int
#define GPIOBAddr       0xC0010000

#define GPIOBALTFN0     (*(volatile uint *)(GPIOBAddr + 0xB020))
#define GPIOBALTFN1     (*(volatile uint *)(GPIOBAddr + 0xB024))

#define GPIOBOUTENB     (*(volatile uint *)(GPIOBAddr + 0xB004))
#define GPIOBOUT        (*(volatile uint *)(GPIOBAddr + 0xB000))


void init(){
    GPIOBALTFN0 |= (2 << 24);
    GPIOBOUTENB |= (1 << 12);
    GPIOBOUT |= (1 << 12);
}

void led_on(){
    GPIOBOUT |= (1 << 12);
}

void led_off(){
    GPIOBOUT &= (0 << 12);
}

void delay(uint t){
    while(t--);
}

int main(){
    init();

    while(1){
        led_on();
        delay(2000000);
        led_off();
        delay(2000000);
    }
    return 0;
}
//start.s 启动文件

.text
.global _start

_start:
    b start

    start:
        b main
//Makefile

default:
    arm-linux-gcc -c start.s -o start.o
    arm-linux-gcc -c main.c -o main.o
    arm-linux-ld -Ttext=0x42C00000 start.o main.o -o main.elf
    arm-linux-objcopy -I elf32-littlearm -Obinary main.elf main.bin

clean:
    rm *.bin *.o *.elf

ld 链接地址为0x42C00000;这个地址有点小讲究;
make后生成的main.bin文件就是我们要的裸机程序;

猜你喜欢

转载自blog.csdn.net/M_N_N/article/details/82113307