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
对上面封装代码的解释 ->
第一部分 宏定义GPA GPB的相关寄存器
第二部分 声明LED亮灭函数
第三部分 extern 表征着其他模块也可以使用void LED_INIT(void)函数
S3C2451_led.c
main.c
题目实践:
以上代码为 用arm9 s3c2451 实现四个led灯的点亮
请再实现 四个灯的循环点亮 -> 通过KEY1按键控制LED1亮灭 ->通过
收发信息 控制LED1亮灭
知识点:
参考手册->
(小小的举个例子 不完全 详细的查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亮灭
相关文章推荐
- 嵌入式 ARM9 S3C2451裸机 GPIO封装原理和代码实现(详解)
- 代码重构(一)之从代码设计层面着手实践:App.Config的读写封装
- 【iOS开发-50】利用创建新的类实现代码封装,从而不知不觉实践一个简单的MVC实验,附带个动画
- 摘自代码阅读方法与实践书籍的知识点总结
- [置顶] 一句话详细题解+优质题目及其博客(清真代码)链接 (持续更新)+知识点讲解汇总
- CCF炉石传说题目代码详解C++版(类封装通俗易懂)
- 摘自代码阅读方法与实践书籍的知识点总结
- 蓝桥杯 第四届题目详解(附代码)
- 原生iOS封装代码访问QQ客服
- 浅谈对单例模式的认识演变及代码实践
- JS类型和对象的封装代码展示
- lua 代码题目
- ReviewBoard代码评审实践总结
- swift3.0 如何优雅的自定义tableViewcell,最简单的自定义cell,闭包事件传递,代码封装。
- mybatis的知识点总结(2)在接口与实现类的代码实现
- 处理i18n国际电话区号的代码实践
- Linux下实现流水灯等功能的LED驱动代码及测试实例
- js封装tab选项卡--半完成,纯代码框架(原创)
- 基于mini2440的按键中断控制LED(裸机代码)
- 封装的jquery翻页滚动(示例代码)