ARM9(S3C2440) LED控制

在JZ2440上移植设备树---下:内核和设备树移植 在JZ2440上移植设备树—下:内核和设备树移植 2、内核移植 3、设备树移植 阅读详情

下面为TQ2440开发板的硬件LED接口:

                                     

 

 LED控制思想

1、将相应的引脚设置为输出

2、再将相应的引脚设置为低电平

 

代码实现

 

src:

 

inc:

 

2440init.s为开发板开启首先运行的代码。目的:初始化C语言环境。

; NAME: 2440INIT.S
; DESC: C start up codes
;       Configure memory, ISR ,stacks
; Initialize C-variables

 

。。。。。。

。。。。。。

 IMPORT MMU_SetAsyncBusMode
 IMPORT MMU_SetFastBusMode ;

 IMPORT  Main    ; The main entry of mon program

 AREA    Init,CODE,READONLY

 ENTRY
 
 EXPORT __ENTRY
__ENTRY

。。。。。。。。

   [ :LNOT:THUMBCODE
   bl Main ;Do not use main() because ......    跳转到mian.c中的main函数
   ;ldr pc, =Main ;
   b .
    ]

。。。。。。。

 

main.c文件中

#define GLOBAL_CLK  1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"


void Led_port_init(void);

#define LED1_ON   ~(1<<5)       //GPB5~8
#define LED2_ON   ~(1<<6)
#define LED3_ON   ~(1<<7)
#define LED4_ON   ~(1<<8)

#define LED1_OFF   (1<<5)
#define LED2_OFF   (1<<6)
#define LED3_OFF   (1<<7)
#define LED4_OFF   (1<<8)
/*************************************************
Function name: delay
Parameter    : times
Description  : 延时函数
Return   : void
Argument     : void
Autor & date :
**************************************************/
void delay(int times)
{
    int i;
    for(;times>0;times--)
      for(i=0;i<400;i++);
}
/*************************************************
Function name: Main
Parameter    : void
Description  : 主功能函数
Return   : void
Argument     : void
Autor & date :
**************************************************/
void Main(void)
{ 
    int i;
    Led_port_init();
   
    for(i=0;i<100;i++)
    {
     /* 全亮 */
     rGPBDAT = rGPBDAT&(LED1_ON)&(LED2_ON)&(LED3_ON)&(LED4_ON);   //rGPBDAT在2440addr.h头文件中
                                                                                     
     delay(10000);
   
     /* 全灭 */
     rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);
     
     delay(10000);
    }
} 

/*************************************************
Function name: Led_port_init
Parameter    : void
Description  : mini2440开发板有4个引脚连接了LED发光
               二极管,分别是GPB5--LED1,GPB6—LED2
               GPB7--LED3,GPB8--LED4,该函数的作用
               是对其个引脚进行初始化。
Return   : void
Argument     : void
Autor & date : Daniel
**************************************************/  
void Led_port_init(void)
{
   /*设置GPB5-GPB8为输出端口*/ 
   rGPBCON &= ~((3<<10)|(3<<12)|(3<<14)|(3<<16));       //  00000000000000111111110000000000   

                                                                                                      //  11111111111111000000001111111111  取反

                                                                                                      //  然后与计算  保证除了GPB5~8之外的引脚不变

    rGPBCON |= (1<<10)|(1<<12)|(1<<14)|(1<<16);            //  11111111111111 01010101 1111111111      这样GPB5~8就为输出模式
}

 

 

 

2440addr.h

#define rGPBCON    (*(volatile unsigned *)0x56000010) //Port B control
#define rGPBDAT    (*(volatile unsigned *)0x56000014) //Port B data
#define rGPBUP     (*(volatile unsigned *)0x56000018) //Pull-up control B

........................

 

与S3C2440芯片手册相对应

 

Mini2440裸机开发:GPIO控制LED实战指南 GPIO(通用输入输出)是嵌入式系统中最基础的外设接口,通过配置寄存器可直接控制硬件引脚电平状态。其工作原理是通过设置控制寄存器选择引脚功能模式(输入/输出/复用),再操作数据寄存器改变电平。在ARM架构中,S3C2440等处理器通过内存映射方式访问GPIO寄存器,这种底层控制方式具有实时性高、资源占用少的特点,特别适合裸机开发场景。以LED控制为例,开发者需要理解共阳极/共阴极电路设计,掌握GPIO初始化、电平设置等核心操作。本文以Mini2440开发板为硬件平台,详细演示如何通过汇编和C语言实现LED闪 阅读详情

相关推荐

keil下基于arm9的TX2440开发板的外部中断编写

S3c2440可以说是学习arm9最常用的芯片了,这方面有很多开发板,例如TQ2440,MINI2440,JZ2440。 当时学习了业界很火的郭天祥老师的51单片机教程,书写的很长很好。因此在学习arm上也想学习郭老师的教程,在他的天祥淘宝店铺上,花了很贵的价钱买了TX2440开发板。满心欢喜的进行学习。 然鹅,我大失所望,和五一单片机完全不一样,这个arm9的开发板看不到一点郭老师的影子...

weixin_42681235的博客 1316

制作s3c2440-buildroot交叉编译器

一、安装crosstool-ng 1、官网下载到自己创建的文件夹中:wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.0.tar.xz 2、解压:tar -vxf crosstool-ng-1.23.0.tar.xz 3、进入解压后的文件夹 4、指明安装路径:./configure --prefix=/home...

静待另一片蓝天 893

ARM9裸机开发系列(1):跑马灯【ARM9+ADS1.2入门】

        ARM开发入门,最好从跑裸机开始,这样可熟悉ARM的结构体系、功能部件等。再跑系统。这是入门的必然步骤。现在让我们开始艰辛而充实的ARM开发旅程吧。1、开发环境:ADS1.22、开发平台:ARM9开发板(S3C2440芯片)3、功能:简单ARM9裸机程序----跑马灯演示4、接口:GPF4 -> LED1                  GPF5 -> LED2 

5229

linux设备树详解

现在的linux内核(Linux3.X)都已支持设备树机制(dts),不管你是玩内核还是玩驱动,一定会碰到设备树,而网上虽然有很多博客,但都讲的不够清晰,看了还是不懂,半桶水,学员急需一套讲解设备树比较透彻的课程,所以我们来了,致力于帮助广大学员扫清设备树在驱动以及内核学习中的障碍。

基于ARM的嵌入式的多功能串口通信

1、  系统功能描述硬件平台是基于ARM9内核的S3C2440平台,软件平台是linux操作系统里的基于gcc的交叉编译工具arm-linux-gcc、arm-linux-ld等。利用上位机的超级终端与用户交互。系统的主要功能是:开机后,在超级终端上显示一个功能主菜单,然后用户利

tianyahaijiaozd的专栏 1892

掌握ARM9与S3C2440核心板设计:原理图到PCB

ARM公司设计的处理器架构广泛应用于嵌入式系统中,以低功耗、高性能和低成本闻名。ARM架构采用精简指令集计算(RISC)原则,允许其在保持高效运算能力的同时降低能耗。在现代嵌入式系统设计中,电源管理模块是至关重要的。S3C2440微控制器作为一款广泛应用于便携式设备和移动设备的处理器,其电源管理模块的设计目标是确保系统运行的稳定性和持久性,同时最小化能耗。电源管理涉及的主要原则包括:能效优化:合理地分配和管理电力资源,以提供最优的处理性能和最低的能耗。动态电源调整。

weixin_35916518的博客 974

s3c2440 linux系统移植(五)使用device tree

linux3.10 默认不打开device tree,但现在linux驱动的开发基本都使用device tree来描述device,所以这边也学习下device tree的使用。3.10内核里面没有找到s3c24xx 系列的dts,从高版本的内核中可以找到相关的dts,这边下载了4.19.5的内核,发现里面有s3c24xx 的dts文件,把相关dts,dtsi,以及头文件都拷贝过来,(s3c24...

oqqYuJi12345678的博客 1029

ARM9 S3C2440 Linux LED驱动开发实战指南

ARM9是英国ARM Holdings公司设计的处理器架构系列之一,广泛应用于嵌入式系统中。该系列微处理器采用精简指令集(RISC),具有较高的性能和较低的功耗。ARM9微处理器基于32位设计,支持MMU,能运行各种实时操作系统,如Linux、Windows CE等,非常适合需要高性能与低能耗的嵌入式设备。Linux内核设备模型的核心概念包括设备(Device)、驱动(Driver)和总线(Bus)。设备代表了系统中的硬件组件,驱动是与设备交互的软件程序,而总线则是连接设备和驱动的逻辑桥梁。

weixin_42599558的博客 715

基于S3C2440的ARM9基础程序设计及分析

基于S3C2440的ARM9基础程序设计及分析 -------JustDo 最近学习了ARM9基础程序的设计,记录下所学心得,希望对初学者提供一些帮助。学习ARM程序要注意方法,先去芯片手册的相应模块部分的结构原理框图,搞清楚所使用的模块的基本原理,然后根据框图搞清楚需要设置哪些对应的寄存器,再根据时序图搞明白相应寄存器应该怎样设置,再接着理清楚你所写程序的大概流程,最后就可以动手写程序了。

屌丝终有逆袭日。 2262

s3c2440开发板点亮led的步骤

s3c2440开发板点亮一个LED程序的步骤,对于初学者的我有很大的帮助

S3C2440控制LED 实例

分相自己做的,在WINCE上使用VB.NET制作的S3C2440控制LED灯

Mini2440裸机开发:从GPIO原理到LED控制实战

GPIO(通用输入输出)是嵌入式系统最基础的外设接口,通过配置寄存器控制引脚工作模式(输入/输出/复用)。ARM架构处理器如S3C2440通过内存映射方式访问GPIO寄存器,这种底层硬件操作是嵌入式开发的核心技能。在Mini2440开发板上,GPIO驱动LED的案例展示了裸机编程的典型流程:工具链配置、寄存器操作、程序烧录。掌握GPIO控制对理解中断、定时器等更复杂外设至关重要,也是RTOS和Linux驱动开发的基础。本文以ARM9处理器为例,详解GPIO寄存器配置原理,并提供汇编与C语言两种实现方案,帮助

weixin_29174013的博客 296

凌阳32位ARM S3C2440嵌入式实验指导书

本教材是结合 S3C2440教学实验平台而设计,与课堂教学内容结合紧密。本书主要针对嵌入式 操作系统 Linux 的应用,其中安排的实验均是 S3C2440 教学实验平台在嵌入式操作系统 Linux 下的 功能使用,且附有范例程序。实验内容浅显易懂,读者通过这些实验的学习,可以逐步掌握凌阳 S3C2440 嵌入式教学平台在嵌入式操作系统 Linux 下的编程方法。

Part2:S3C2440裸跑一个LED程序

0 写在前面 目标:写一个跑在ARM9为核心的s3c2240开发板的LED程序 三步走:1)读原理图,明确操作对象——即找到LED输出引脚 2) 明确操作,即如何控制LED 3)代码编写——重点!分别用汇编和C实现 这里,我把1)2)步合成一部分讲解,重点讲解代码编写(涉及到ARM汇编指令、C函数调用栈机制) 1 明确“操作对象”和“操作过程” 操作对象——LE...

MK 589

AD设计的 ARM9 S3C2440核心板原理图和PCB工程文件

AD设计的 ARM9 S3C2440核心板原理图和PCB工程文件,包含封装库文件,,6层板设计,可以作为你的设计参考。

s3c2440板上的点亮led灯

s3c2440板上的裸板程序点亮led灯

linux3.0-内核自带led驱动移植

********************************************************************************************************************************************************************************** cpu          : s3c24

crazy boy 1116

激光雷达与相机融合(四)----基于激光雷达与相机的碰撞检测

在这一部分,基于前面的各个部分内容,将利用激光雷达和相机实现目标的检测分类及单目标跟踪,并对车辆前方的车辆目标计算相应的碰撞时间TTC。计算方法分别利用相机和雷达实现。 1.系统的总体架构: 2.TTC计算 简单介绍一下通过激光雷达和相机计算碰撞时间的原理: 利用激光雷达点计算碰撞时间:首先根据检测框聚类出前车目标的点,并过滤掉这些点中的离群点,然后找出这些点中相对于本车最近的点,基于前后两帧以及数据采集频率就可以求解出相对速度,然后用当前帧的距离除以速度得出当前的TTC。但该方法对最近点的选取稳定性不是

张飞飞的博客 3986

jz2440——点亮led

jz2440A芯片简介: 3C2440A 是三星公司推出的16/32位精简指令集(RISC)微型处理器,它基于ARM v9系列的ARM920T核心,主要为手持设备和普通应用提供了低功耗的高性能的小型芯片微型控制器的解决方案。 S3C2440A 的突出特点是其处理器核心,是一个由Advanced RISC Machines(ARM)公司设计的16/32 位ARM920T 的RISC 处理器。ARM...

weixin_41157380的博客 1229

第二次 PX4仿真环境搭建过程全记录

参考链接 https://blog.youkuaiyun.com/yanwumuxi/article/details/80097294 https://www.ncnynl.com/archives/201709/2013.html 一、安装依赖项 我们使用Debian / Ubuntu LTS 作为Linux的标准支持版本,但是也支持Cent OS 和 Arch Linux的发行版本。 权限设置 警告:永远...

移步换景的博客 2263

HFSS之天线设计实例

目录 矩形微带天线 微带天线尺寸计算 微带线的3个关键指标如以下 HFSS设计流程 新建工程并设置求解类型 天线建模 添加求解设置和扫频设置 天线建模步骤 谐振点查看 优化设计 查看天线分析结果 3D增益 Smith圆图 S参数 驻波比 ​ 平面增益 方向性系数\增益\轴比 矩形微带天线 微带天线的概念首先是由Deschamps于1953年提出来的,经过20年左右的发展,Munson和Howell于20世纪70年代初期制造出来了实际的微带天线 一个简单的...

ASH_GUARDIAN的博客 1万+
上一篇: ARM汇编语言与C/C++的混合编程
下一篇: ARM9(S3C2440)时钟与定时器
sjmp
博客等级 码龄15年 56粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值