s3c2440之点亮led

2023-05-16

原理是操作led 与 CPU 相连管脚的GPIO,具体操作哪个GPIO,需要查看原理图。将对应GPIO配置为输出模式,并设置GPIO的对应位为低电平即可点亮led,相反,设置对应位为高电平则熄灭led

以韦东山的JZ2440为例,原理图:

可以看出3个led分别对应GPF4,GPF5,GPF6设置为输出状态,查看芯片手册:

 

 

得知GPFCON寄存器地址为 0x56000050,GPFDAT寄存器地址为 0x56000054,GPF4,GP5,GPF6 的对应配置分别为8-9,10-12,12-13位,需要将这连续的6位设置为010101 即可配置设置GPF4-6为输出模式,然后控制 GPFDAT 4-6 位,0点亮,1熄灭。

代码如下,汇编:


 1 .global _start
 2 
 3 _start:
 4     // 关闭看门狗
 5     ldr r0, =0x53000000
 6     ldr r1, =0
 7     str r1, [r0]
 8   //初始化栈
9 mov sp,#4096
10 bl main

 

c代码:


  1 #define GPFCON  (*(volatile unsigned int *) 0x56000050)
  2 #define GPFDAT  (*(volatile unsigned int *) 0x56000054)
  3 
  4 
  5 void delay()
  6 {
  7     volatile int d = 100000;
  8     while(d--);
  9 }
 10 
 11 void led_all_off()
 12 {
 13     GPFDAT |= (7 << 4); 
 14 }
 15 
 16 void led_all_on()
 17 {
 18     
 19     GPFDAT &= ~(7 << 4);
 20 }
 21 
 22 
 23 void led_light_one(int index)
 24 {
 25     GPFDAT &= ~(1 << (4 + index));
 26 }
 27 
 28 void led_off_one(int index)
 29 {
 30     GPFDAT |= (1 << (4 + index));
 31 }
 32 
 33 void config_gpio()
 34 {
 35     //清0
 36     GPFCON    &= ~ ((3 << 8) | (3 << 10)    | (3 << 12));
 37     //设置1
 38     GPFCON    |= ((1 << 8) | (1    << 10)    | (1 << 12));
 39 }
 40 
 41 void horse_left()
 42 {
 43     int i;
 44     for(i =0; i < 3;i ++)
 45     {
 46         led_light_one(i);
 47         delay();
 48         led_off_one(i);
 49         
 50     }
 51 }
 52 
 53 void horse_right()
 54 {
 55     int i;
 56     for(i =3; i >= 0;i --)
 57     {
 58         led_light_one(i);
 59         delay();
 60         led_off_one(i);
 61     }
 62 }
 63 
 64 void horse_race()
 65 {
 66     int i;
 67     for(i =0 ; i < 3;i ++)
 68     {
 69         horse_left();
 70         horse_right();
 71     }
 72 } 
 73 
 74 
 75 void twinkle()
 76 {
 77     int i;
 78     led_all_off();
 79     for(i =0 ; i < 3;i ++)
 80     {
 81         led_all_on();
 82         delay();
 83         led_all_off();
 84         delay();
 85     }
 86 }
 87 
 88 void one_by_one_on()
 89 {
 90     int i;
 91     for(i =0; i < 3;i ++)
 92     {
 93         led_light_one(i);
 94         delay();
 95     }
 96 }
 97 
 98 void one_by_one_off()
 99 {
100     int i;
101     for(i =3; i >= 0;i --)
102     {
103         led_off_one(i);
104         delay();
105     }
106 }
107 void one_by_one()
108 {
109     int i;
110     led_all_off();
111     for(i =0 ; i < 3;i ++)
112     {
113         one_by_one_on();
114         one_by_one_off();
115     }
116 }
117 
118 int main()
119 {
120     config_gpio();
121     while(1)
122     {
123         twinkle();
124         horse_race();
125         one_by_one();
126     }
127     
128     return 0;
129 }  

Makefile


all:
	arm-linux-gcc -O3 -c -o led.o led.S 
	arm-linux-gcc -O3 -c -o main.o main.c
	arm-linux-ld -Ttext 0 led.o main.o -o led.elf
	arm-linux-objcopy -O binary -S led.elf led.bin 

clean:
	rm led.o led.ef led.bin -rf  

 

此代码实现了3个led同时闪烁,流水灯。

 

转载于:https://www.cnblogs.com/mcran/p/10975376.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

s3c2440之点亮led 的相关文章

  • 阿尔法点亮LED灯(一)汇编语言

    文章目录 前言一 GPIO介绍1 MX6U IO 复用2 MX6U IO 配置3 GPIO 配置4 GPIO 时钟使能5 61 61 GPIO的使用步骤 61 61 二 程序编写1 使能 GPIO1 时钟2 设置 GPIO1 IO03 的复
  • STM32 创建LED工程,点亮LED

    容忍5V电压 FT 61 FIve Tolerate 允许5V 寄存器就是特殊的存储器 上拉输入和下拉输入 如果输入啥都不接 xff0c IO口输入电平极容易受外部电平干扰 xff0c 加上拉电阻就是为了保护输入引脚的电平 为了避免引脚悬空
  • STM32报错解决:..\OBJ\LED.axf: error: L6002U: Could not open file ..\obj\main.o: No such file/

    出现这个问题的原因主要有MDK的安装路径为中文 xff0c 或电脑的用户名为中文 xff0c 解决方法见如下的链接 xff1a 常规的原因 也有出现语法错误导致的 xff0c 如下面这位博主的情况 语法错误 而我遇到这个问题的原因比较难以确
  • ST-Link的LED指示灯说明

    自ST LINK V2以来的所有ST LINK板都实现了一个标有 COM 的LED 无论是在外壳上还是在PCB上 一般 COM 是由红 绿两个LED组合 xff0c 有常亮 常灭 闪烁等 xff0c 两个LED同时亮呈现橙色 ST Link
  • ..\OBJ\LED.axf: Error: L6218E: Undefined symbol xTaskGetSchedulerState (referred from delay.o).

    文章目录 前言解决办法 前言 在学习FreeRTOS移植后 xff0c 编译出现 OBJ LED axf Error L6218E Undefined symbol xTaskGetSchedulerState referred from
  • 通用LED闪烁代码模块(也可实现软件PWM)

    仅提供参考文件 xff1a 1 需要修改gpio引脚 2 需要根据平台实现软件定时器接口 xff0c 启动 xff0c 停止 xff0c 回调 xff0c 三个API 3 根据平台优化相关错误即可 pwm drv c Created on
  • LCD与LED液晶显示屏的区别

    什么是LCD LCD是液晶显示屏Liquid Crystal Display的全称 xff0c 主要有TFT UFB TFD STN等几种类型的液晶显示屏无法定位程序输入点于动态链接库上 笔记本液晶屏常用的是TFT TFT xff08 Th
  • 【跟着江科大学Stm32】GPIO_LED_流水灯_蜂鸣器

    只要坚持下来了 xff0c 一定会有收获 xff01 一 LED闪烁 span class token macro property span class token directive hash span span class token
  • 51单片机——定时器

    51单片机 定时器 为什么使用定时器 定时器原理 定时器设置 中断配置 源代码 为什么使用定时器 之前我们的led灯每隔1s循环左移点亮的时候 使用的定时方法是在c程序执行若干次空循环 这样会耗费很多cpu资源 因为空轮询 本篇博客将使用5
  • 51单片机——独立按键

    如图是独立按键的原理图 通电后io口都是高电平 当按下K1 k4后 io口接地 变为低电平 说明当P30 P33为0时 代表我们按下了独立按键 例程1 独立按键控制LED亮灭 include
  • s3c2440移植ucGUI

    编译环境 ADS1 2 开发板 TQ2440 主要参考这篇文章 stm32 UCGUI 完美移植 ucGUI版本 3 90 ucGUI3 90下载地址 UCGUI最新3 90版源码 屏幕 联想VGA电脑屏幕 最大分辨率1024x768 1
  • LCD和LED屏幕的工作原理总结

    1 点阵取模原理之横向取模与纵向取模 1 1 针式打印机 针式打印机16针是纵向排列 每次打印垂直的16bit 然后右移一bit 继续下列打印 字节的MSB表示最上面的点 字节LSB表示最下面的点 由于汉字字模的点阵是横向排列的 而提供给打
  • 检测硬盘是否正在被访问

    我正在尝试制作一个非常简单的硬盘访问监视器像那些根据驱动器使用情况闪烁的嵌入式 LED 一样工作 那个 LED 确实对我很有帮助 但我使用的笔记本电脑没有它 因此 我制作了一个简单的托盘图标应用程序 但我不知道如何确定磁盘访问的变量 我搜索
  • 查找到 LED 的距离

    想象一下 您有一个圣诞树风格的 LED 灯 距相机的距离为 D 了解了 LED 灯 例如形状和强度 和相机 例如焦距 的属性 是否可以使用快照计算从相机到 LED 灯的距离 如果是 测量的准确度如何 明亮的光源本身对此不利因为明亮的光线通常
  • Netbeans 中的 Arduino(处理)库和控制

    我正在尝试控制 4 个 LED 并从 4 个触点获取模拟输入 该程序是用java编写的 因此要访问arduino的功能 例如AnalogRead 和将LED设置为高或低 导入处理库可以让程序使用这些功能吗 我还想知道 如果程序会自行传输到a
  • 罗技的 LED 照明 SDK 无法与我的 G502 配合使用

    我想得到罗技自己的 LED SDK http gaming logitech com en us developers正在使用我的 G502 但我不能 我使用的是 SDK 版本 8 82 7 这是迄今为止的最新版本 我在 SO 或互联网的其
  • 将 Arduino RGB LED 从一种颜色渐变为另一种颜色?

    目前 我已成功让 LED 灯循环显示我选择的八种颜色 一切都工作正常 除了我想要一种更自然的感觉 并且想要从一种颜色褪色 过渡到下一种颜色 而不是让它们互相替换 到目前为止 这是我的代码 int redPin 11 int greenPin
  • 我可以检测 Android 设备上是否存在“LED 通知”吗?

    背景 我有一个带有通知的应用程序 我想支持 LED 通知 并且它运行良好 在我的偏好中 我允许用户自定义 LED 通知 问题 如果设备不支持 LED 自定义选项 我不想显示这些选项 因为这可能会让用户感到困惑 如果您拥有的只是廉价的 And
  • Android 通知 LED 不使用我的颜色

    我正在尝试使用一个通知 该通知也使用我的 S3 上的通知 LED 但由于某种原因 颜色将始终为蓝色 我猜这是默认值 我尝试使用不同的颜色但没有任何变化 其他应用程序 例如 Whatsapp Gmail 和 Facebook 在显示不同颜色的
  • Android 2.1 的 Camera.Parameters.FLASH_MODE_TORCH 替换

    我正在尝试编写一个需要 LED 闪光灯进入手电筒模式的应用程序 问题是 Android 2 1不支持这种模式 因此我还不能支持该平台 这不是问题 但我正在为我的未婚夫编写它 而她的 Epic 4G 目前只有 2 1 我发现一些代码示例使用了

随机推荐

  • openwrt issues

    1 ssh 没密码不让登录 解决方法 xff1a 使用串口登录上 passwd root 设置密码后 etc init d dropbear restart 发现option BannerFile 39 etc banner 39 被屏蔽掉
  • 图片样本集

    图像识别训练样本集 ImageNet ImageNet是一个计算机视觉系统识别项目 xff0c 是目前世界上图像识别最大的数据库 是美国斯坦福的计算机科学家李飞飞模拟人类的识别系统建立的 能够从图片识别物体 目前已经包含14197122张图
  • ubuntu16.10安装网易云音乐

    首先去官网 xff08 https music 163 com download xff09 下载安装包 xff1a netease cloud music 1 1 0 amd64 ubuntu deb 下载好以后 xff0c 执行安装命令
  • 安装 protoc 的各种坑

    首先下载 protoc 2 6 1 https github com google protobuf releases download v2 6 1 protobuf 2 6 1 tar gz https pkgs org downloa
  • 在mysql中创建视图需要使用什么语句_mysql如何创建视图?创建语句是什么?

    在mysql中 xff0c 可以使用 CREATE VIEW 语句来创建视图 xff0c 语法格式为 CREATE VIEW AS xff1b 其中 不能包含FROM子句中的子查询 xff0c 不能引用预处理语句参数 推荐教程 xff1a
  • 正则表达式学习

    1 正则表达式规则 1 1 普通字符 字母 数字 汉字 下划线 以及后边章节中没有特殊定义的标点符号 xff0c 都是 34 普通字符 34 表达式中的普通字符 xff0c 在匹配一个 字符串的时候 xff0c 匹配与之相同的一个字符 举例
  • 在Windows、Mac和 Linux系统中安装Python与 PyCharm

    工欲善其事 必先利其器 xff0c 本文介绍 Python环境的安装和 Python的集成开发环境 IDE PyCharn的安装 一 Python安装 Windows Mac和 Linux 当前主流的 Python版本为2x和3x 由于 P
  • Linux入门-安装篇(Debian 服务器版)

    本文描述了安装一个Linux xff08 Debian xff09 服务器的全过程 xff0c 并附加了一些必要的参考文章 xff0c 通篇以Debian为基础 xff0c 以建立一个服务器 xff08 非桌面环境 xff09 为主要目的
  • MongoDB——写出错机制

    写出错机制 MongoDB的写操作命令默认是没有任何出错返回值的 xff0c 这减少了写操作的等待时间 xff0c 也就是说 xff0c 不管有没有写入到磁盘或者有没有遇到错误 xff0c 它都不会报错 这在大量插 入类似GPS定位坐标信息
  • git入门1

    2016 04 23 19 25 02 参考 xff1a http blog jobbole com 78960 Git bash中运行git log之后怎样终止这个命令 xff0c 按q 再按回车键 清屏 clear 查询用户名 git
  • mysql查看库表的大小_MySQL查看数据库大小和表大小的方法

    MySQL查看数据库大小和表大小的方法 其实很简单 xff0c 就不多说了 xff0c 基本上看得懂代码都明白 查看MySQL数据库大小 SELECT table schema Database Name sum data length 4
  • 按键控制led灯亮灭c语言实验报告,嵌入式STM32学习笔记之按键查询方式控制led灯的亮灭...

    其实接触STM32已经快半年了 xff0c 端断续续的也学习了一下的STM32的各个模块的基本功能 xff0c 刚开始的时候也是看比人的写的代码 xff0c 看懂了然后再去修改 xff0c 能够在自己的平台上实现基本的功能 xff0c 也就
  • iOS 开发比较实用的框架总结(上)

    iOS开发比较实用的框架总结 下拉刷新类型的框架 EGOTableViewPullRefresh https github com enormego EGOTableViewPullRefresh 最早的下拉刷新控件 SVPullToRef
  • Linux使用远程X Server显示图形

    背景 通常我们不希望在服务器上安装图形界面 xff0c 但有时候有些程序需要图形界面 xff0c 比如安装oracle的时候 此时 xff0c 可以配置让Linux使用远程的X Server进行图形界面显示 首先要明确的是Linux X W
  • Linux socket-编程入门(TCP server 端)

    原文完整内容 通常 xff0c socket编程总是Client Server形式的 xff0c 因为有了telnet xff0c 先不考虑client的程序 xff0c 先写一个支持TCP协议的server端 xff0c 然后用telne
  • Anaconda 安装和使用

    最近看了些关于数据分析的书 xff0c 想系统的整理下相关知识 xff0c 算是学习笔记吧 xff0c 也希望能帮到初学者 1 Anaconda介绍 安装python的方法有很多种 xff0c 数据分析方面比较常用Anaconda Anac
  • PTN设备中为什么不支持PHP,ptn和otn的区别是什么

    区别 xff1a OTN是光传输网 xff0c 是从传统的波分技术演进而来 xff0c 主要加入了智能光交换功能 xff0c 可以通过数据配置实现光交叉而不用人为跳纤 xff1b 而PTN是分组传输网 xff0c 是传送网与数据网融合的产物
  • UITableViewController的使用

    如果整个程序界面都只是使用UITableView来搭建 xff0c 一般需要如下步骤 xff1a xff08 1 xff09 向界面上拖一个UITableView xff08 2 xff09 设置数据源 xff08 3 xff09 设置代理
  • MongoDB——explain()和hint()

    explain explain 能够提供大量与查询相关的信息 对于速度比较慢的查询来说 xff0c 这是最重要的诊断工具之一 通过查看一个查询的explain 输出信息 xff0c 可以知道查询使用了哪个索引 xff0c 以及是如何使用的
  • s3c2440之点亮led

    原理是操作led 与 CPU 相连管脚的GPIO xff0c 具体操作哪个GPIO xff0c 需要查看原理图 将对应GPIO配置为输出模式 xff0c 并设置GPIO的对应位为低电平即可点亮led xff0c 相反 xff0c 设置对应位