您的位置:首页 > 编程语言

ARM9 S3C2451 LED 知识点 代码 封装 题目实践

2017-09-18 20:53 429 查看
2017/9/18

知识点:

参考手册->

(小小的举个例子 不完全 详细的查3SC2451的手册)

Register Address R/W Description

GPACON 0x56000000 R/W Configures the pins of port A

GPADAT 0x56000004 R/W The data register for port A

Reserved 0x56000008 − − −

Reserved 0x5600000c − − −

控制寄存器解释->

(小小的举个例子 不完全 详细的查3SC2451的手册)

GPACON 控制GPIO的输入/输出

GPADAT 控制输入/输出的是高/低电平

GPACON 1 bit控制一个管脚

GPBCON 2 bit控制一个管脚

我的S3C2451原理图上->

(小小的举个例子 不完全 详细的查3SC2451的原理图)

LED1/GPB5 输出 低电平导通

LED2/GPB6 输出 低电平导通

LED3/GPA25 输出 低电平导通

LDE4/GPA26 输出 低电平导通

代码如下:

封装->

S3C2451_led.h

#ifndef _S3C2451_LED_H
#define _S3C2451_LED_H
#define GPACON   (*(volatile unsigned long*)0x56000000)
#define GPADAT   (*(volatile unsigneong*)0x56000004)
#define GPBCON  (*(volatile unsigned long*)0x56000010)
#define GPBDAT   (*(volatile unsigned long*)0x56000014)
#define GPBUDP  (*(volatile unsigned long*)0x56000018)
#define GPBSEL    (*(volatile unsigned long*)0x5600001C)

#define LEDA_ON(i)   GPADAT &=~(0x3<<i)
#define LEDA_OFF(i)  GPADAT |=(0X3<<i)
#define LEDB_ON(i)   GPBDAT &=~(0X3<<i)
#define LEDB_OFF(i)  GPBDAT |=(0X3<<i)

extern void LED_INIT(void);
#endif


对上面封装代码的解释 ->

第一部分 宏定义GPA GPB的相关寄存器

第二部分 声明LED亮灭函数

第三部分 extern 表征着其他模块也可以使用void LED_INIT(void)函数

S3C2451_led.c

#include "s3c2451_led.h"
void LED_INIT(void)
{
GPACON &=~(0X3<<25);

GPBCON &=~(0Xf<<10);
GPBCON |= (0X5<<10);
}


main.c

#include "main.h"

void delay_ms(unsigned int xms)
{
unsigned int j;
for(;xms>0;xms--)
{
for(j=500;j>0;j--);
}
}

void Main(void)
{
LED_INIT();
while(1)
{
LEDA_ON(25);
delay_ms(500);
LEDA_OFF(26);
delay_ms(500);
LEDB_ON(5);
delay_ms(500);
LEDB_OFF(6);
delay_ms(500);
}


题目实践:

以上代码为 用arm9 s3c2451 实现四个led灯的点亮

请再实现 四个灯的循环点亮 -> 通过KEY1按键控制LED1亮灭 ->通过

收发信息 控制LED1亮灭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: