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

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亮灭

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值