×
单片机 > 单片机程序设计 > 详情

外设一个一个学 for ARM_first

发布时间:2020-05-29 发布时间:
|
LED灯基本上每个板子都会使用、暂且不说其重要性:

 

根据s5pc100提供的原理图可以看到

使用的控制寄存器为GPG3

查阅相关芯片手册:

GPG0,1,2,3: 25 in/out pin –3xMMC channel (Channel 0 supports 4-bit and 8-bit mode, but channel 1, channel 2 supports only 4-bit mode), SPI, I2S, PCM, SPDIF.

意思为GPG1GPG2能引导四中总线模式、即(SPI,I2S,PCM,SPDIF).GPG3能引导八种。

进入GPG3的配置寄存器:

GPG3 Configuration (GPG3CON, R/W, Address = 0xE030_01C0)

通过查看可知、input= 0表示输入模式。

而output =1则表示输出模式,这里需要调到输出模式

那么接下来便可以去利用配置寄存器初始化并且去控制LED了。

先来写一个头文件。

Led.h

#ifndef __LED_H__

#define __LED_H__

/* GPG3 */

typedef struct {

              unsigned int GPG3CON;  //0xE030_01C0

              unsigned int GPG3DAT;  //0xE030_01C4

              unsigned int GPG3PULL; //0xE030_01C8

              unsigned int GPG3DRV;  //0xE030_01CC

              unsigned int GPG3PDNCON; //0xE030_01D0

              unsigned int GPG3PDNPULL; //0xE030_01D4

}gpg3;

#define GPG3 (* (volatile gpg3 * )0xE03001C0 )

#endif

由上面的地址可以看见、它们在一个连续的内存地址中,所以使用结构体定义了这些连续地址的变量int正好是4个字节。

下面在写一个c文件

#include "led.h"

int main()

{

 

    GPG3.GPG3CON = (~(0xffff)&GPG3.GPG3CON) | (0x1111);

  //配置寄存器表示为output 先清0,在:或上0x1111 其实就是0001 0001 0001 0001

    int i;

    while(1) //让程序死循环,不让程序结束

    {

       GPG3.GPG3DAT = 0x2; //第一个灯高电平LED1接的是GPG3_1 0000 0010

       for(i = 0; i <= 1000000; i++);

       GPG3.GPG3DAT = 0x4;  0000 0100

       for(i = 0; i <= 1000000; i++);

       GPG3.GPG3DAT = 0x8; 1000

       for(i = 0; i <= 1000000; i++);

       GPG3.GPG3DAT = 0x1;

       for(i = 0; i <= 1000000; i++);

    }

}

关于DAT[0~7]寄存器(芯片手册是这样描述的:If the bit is configured as input, it represents the pin state. If the bit

is configured as output, the pin state is the same as the value of

the bit. If the port is configured as functional pin, an undefined

value is read. 包含了所有的PAD CONTORL)

上述GPG3配置寄存器为output.因此If the bit

is configured as output, the pin state is the same as the value of

the bit.

也就是一个DAT位控制一个灯(可以这么理解(高电平给为灯亮、低电平为灯灭))

So  …  over…

 

/*-------------*/

printf("keven");

关键字:外设  ARM  first

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
用Atmega 16单片机驱动字符型液晶显示芯片