开发板点灯实验源码

小熊派Nano|HarmonyOS初体验-LiteOS内核 注意:新建文件夹的名字和C文件的名字后续会用到,我这里的文件夹名为led,C文件名为myled。华为推出的HarmonyOS(鸿蒙操作系统),自诞生以来便备受瞩目,它不仅承载着华为对未来智能生态的愿景,更以其独特的分布式技术,为用户带来了前所未有的使用体验。建议按照官方给的十分钟上手教程完成环境安装,也可以通过官方的教学视频自行配置环境,不过可能会出现比较多问题,如果没有linux相关基础建议直接使用官方提供的镜像,后期熟悉后可以尝试自己配置环境。采用IoTCluB的E53接口标准,可接入所有的。 阅读详情

/* ========== start.s 启动汇编 ========== */
.global _start //声明_start为全局标号,让链接器找到入口

_start:
ldr sp, =0xFFFF0000 //设置指针,c语言函数调用要栈,开辟空间。
bl main //跳转到C语言的main函数,bl保存返回地址
halt:
b halt //如果main意外返回,就原地死循环。

/* ========== led.c 主C代码 ========== /
目标:控制引脚,驱动LED去闪烁,就是所谓的点灯实验
// 简易输出IO寄存器
#define GPIOEOUTENB (
(volatile unsigned int )0xC001E004) //输出使能寄存器(总电闸)(强制转化为无限制的指针,相当于直接读取寄存器的地址)(原意:通常输入输出使能,是一个总开关的意思)
#define GPIOEOUT (
(volatile unsigned int )0xC001E000) //输出电平寄存器(点灯开关)(电平相当于电压的平衡状态比较量,这个量高相当于电压均衡,只有较小的电压差,电流就少,灯就暗。反之,电平小,状态不平衡,电压差大,电流大,灯就亮,从而实现点灯这个环节)(英文原意:通常输入输出,是一种相当于动作的东西)
//软件延时
void delay(void) //停几秒,让肉眼看见灯光
{
volatile unsigned int i = 0xf00000;//这里用了16进制,i其实是15728640
for(; i > 0; i–);//它的含义是每次循环都要CPU去计算消耗时间,通过这个间隙实现亮光的延时
}
int main(void)
{
// 开启bit13引脚输出使能(相当于给13号灯泡放点)
GPIOEOUTENB |= (1U << 13);//1U是无符号的整形1,不是地址,把1向左移动13位,对应bit13
//无限循环闪烁(我改了!改成一直闪,方便实验观察,1是高电平,0是底电平)
while (1) //这个就是永远闪烁的原因,永远是对的,永远出不了循环
{
GPIOEOUT &= ~(1U << 13); //输出低,LED亮,把13号该1,其余该0
delay();
GPIOEOUT |= (1U << 13); //输出高,LED灭,把13号该0,其余该1
delay();
}
}
/
========== led.lds 链接脚本 ========== */
SECTIONS //规定代码布置和地址存放
{
. = 0xC0000000; //运行的初始地址
.text : {//用于存放c和汇编语言
*(.text) //收集全部.test合并在一起
}
.rodata : {//用于存放数据 *(.rodata) //用于储存常量
}
.data : {
*(.data) //用于存已经初始化的变量
}
.bss : {
*( .bss )//让还没初始化的变量不占据bin的文件空间的指令
}
}

========== 交叉编译命令 ==========

arm-linux-gnueabihf-as start.s -o start.o //把启动汇编的代码编译成statr.o这个目标文件
arm-linux-gnueabihf-gcc -c led.c -o led.o -nostdlib//用来编译C文件
arm-linux-gnueabihf-ld start.o led.o -T led.lds -o led.elf //把它变成可编译的文件
arm-linux-gnueabihf-objcopy -O binary led.elf led.bin //格式转化:转成纯bin文件,只有这样开发板才能执行。

对前文的形象类比
global _start @ 声明_start为全局标号,链接器可以找到这个入口
_start:
ldr sp,=0x40000000 @ 设置栈指针sp:拿到门牌号,开辟一块栈的房间。C语言调用函数、局部变量全都要放在这个房间里,没有栈C代码直接崩溃。
bl main @ bl跳转去main。bl会提前把返回地址(房卡)存到LR链接寄存器,意思:等main执行完,如果它return回来,就拿着房卡回到这里。
halt:
b halt @ 原地死循环。
b halt :单纯无条件跳转,不会保存房卡,一直跳回自己,卡在原地不动。

  • 裸机设计:main本就不该返回。万一代码异常、main返回了,就跑到halt,原地卡住,防止CPU跑飞乱执行未知内存的垃圾代码。

一句话区分 bl 和 b

  • bl 标签 :跳转 + 存好回家的房卡(LR),函数调用专用
  • b 标签 :单纯跳转,不留房卡,死循环、单纯跳转用

补充你的小误区

“C语言只是中间过程,最后再转回汇编,相当于退房卡”
修正:不是C主动退房卡。C的 return 指令,硬件自动读取LR里面预先存好的房卡,跳回汇编。C本身不知道汇编的存在

(二)imax6ull开发板点灯测试 imax6ull开发板LED点灯 思路:在完成linux内核的编译和移植后,通过现有的LED源码(内核源码已经下载),实现点灯尝试。 流程:1.在ubuntu中编译内核模块,并将内核模块安装到完成挂载的目录下备用。(注意:编译驱动程序前,需要先编译内核,因为驱动程序要用到内核中的一些文件。) 2.使用交叉编译工具编译led驱动源码,将编译好的驱动程序上传到开发板上。 3.将ubuntu上传的led驱动程序下载到开发板上执行测试程序,完成点灯操作。 实际操作: 1.编译内核 (1)打开内核文件 分别输入命令进 阅读详情

相关推荐

ESP8266从点灯到遥控小车(三)——组装小车,0代码开发APP控制小车

本文详细介绍了ESP8266入门小车的组装以及0代码开发APP,实现手机APP远程控制小车。

ArsenLupin的博客 7138

嵌入式 Linux 驱动开发:点灯大法

在嵌入式 Linux 系统中,设备驱动是连接硬件与操作系统的桥梁。点灯大法好,通过编写 Linux 驱动,可以方便地控制开发板上的 LED 灯。

weixin_63577471的博客 956

Longan nano RISC-V 开发板 VSCode+PlatformIO 开发环境最新配置 NucLei SDK 搭建流程

Longan nano 开发板,VSCode+PlatformIO 开发环境配置,项目配置与点灯程序下载

贬道 2594

GOOUUU ESP32-S3-CAM 果云科技开发板开发指南(一)(超详细!)Vscode+espidf 通过摄像头拍摄照片并存取到SD卡中,文末附源码

这里面我们需要把三者融合在一起,首先还是相机的初始化,这里先看原理图,我们这次使用的是OV2640型号的摄像头,camera的初始化一共需要14个引脚,其中有8根数据线,其余6根是信号线,然后在初始化之前,我们要打开esp32s3的psram,相机需要psram分配内存,将拍摄到的一帧图片存到psram中去。这里我们先点开设置图样,或者通过espidf的cmd,定位到你创建工程的文件夹目录,通过命令idf.py menuconfig也是可行的。

m0_60853221的博客 1万+

ESP8266+blinker(点灯科技)_blinker控制esp8266灯亮

blinker点灯科技真的是一款非常好用的物联网控制APP,它节省了你连接云端的程序,直接实现APP控制系统。接下来让我们看看怎么通过blinker来控制ESP8266开发板。

2401_84003733的博客 1846

从开发板点灯到Qt交叉编译:嵌入式Linux学习全流程指南

嵌入式开发入门常从开发板开始,但很多人不清楚开发板、单片机与MPU之间的本质区别。开发板本质上是芯片厂商提供的一块可运行的硬件验证平台,它集成了主控、外围电路与调试接口,解决了从零搭建电路门槛高的问题。理解单片机是芯片、开发板是载体的关系,有助于建立正确的硬件认知。在实际工程中,串口连接、GPIO点灯实验是建立编译烧录闭环的第一步;而在Linux方向,Qt交叉编译、开发板挂载Ubuntu以及NFS共享目录则是提升开发效率的关键技能。无论是用STM32跑裸机,还是在RK3588上运行Linux,核心能力都是读

weixin_29189363的博客 278

手把手教你丨小熊派移植华为 LiteOS-M

摘要:本文详细讲解如何移植 LiteOS 到小熊派。

华为云官方博客 4041

GEC2410实验手册与源码全解析:从GPIO点灯到Linux内核移植

嵌入式开发的核心在于理解硬件与软件的交互,而寄存器操作则是这一切的基础。GPIO控制、UART串口通信、中断与定时器等外设机制,构成了嵌入式系统的基本骨架。通过交叉编译环境的搭建与调试,工程师能够深入理解程序从启动文件到操作系统内核的完整运行链路。掌握这些底层原理,不仅有助于完成裸机实验,更能为Linux内核移植与驱动开发打下坚实基础。本文以经典的GEC2410平台为例,系统性梳理实验手册与源码的学习路径,分享从点灯实验到内核源码阅读的实战经验与常见问题排查技巧。

weixin_29185199的博客 224

掌握汇编语言用查表法并用开发板进行点灯实验

前往Edsim51官方网站 () 下载最新版本的Edsim51,并按照指示安装。

2201_75639015的博客 1229

FPGA软核集成实战:OC8051点灯实验与DE2开发板全流程解析

在嵌入式系统开发中,FPGA与MCU软核的结合是理解软硬件协同工作的关键路径。处理器软核作为可编程逻辑上的硬件实现,通过Verilog等硬件描述语言构建出完整的CPU内核,使开发者能够深入观察取指、译码、执行和外设访问的底层细节。基于开源OC8051内核,在DE2开发板上搭建最小系统,配合Keil C51编写程序,即可在真实硬件上验证单片机工作原理。这种方式不仅适用于FPGA初学者从基础实验迈向复杂系统集成,也为快速验证MCU软核替代硬核方案提供了高效路径。通过PLL降频、ROM初始化、GPIO外设映射和S

weixin_29196315的博客 227

AI辅助SCI论文大修:一键生成回复信+同步修改稿,效率提升300%

AI可以针对多位审稿人的意见进行逐点(point-by-point)回复,语言地道流畅,能够处理邮件格式、礼貌性回复和部分内容修正。最新的LLM:GPT-5, Claude 4.1都是带有agentic功能,能规划复杂任务,并调用工具执行复杂任务的大模型。有时候审稿人意思模棱两可,你的反复揣摩ta关注的点是什么,回复的不好,很有可能下一轮被reject。这个2.0升级版,除了在response中完美rebuttle,在文中对应部分的修改,也会帮你一并呈现,基本上就是可以直接拿来用的版本;

dinaxuejie的博客 1667

ZigBee案例笔记 - 无线点灯

ZigBee无线点灯实验(即Basic RF工程),由TI公司提供的学习例程,是入门ZigBee无线通讯的经典实验,暂时没有用到协议栈,但实验所体现出来的数据发送、接收和使用协议栈的数据通讯模式是差不多的,而且 TI 公司的 Basic RF 工程代码段都有进行注释容易看懂及运用,将这个实验掌握后,将可以更好的过渡到协议栈的内容学习拿到工程源码

General_s 4705

ADS重新安装失败排查指南:从注册表清理到环境变量配置

本文详细解析了ADS重新安装失败的常见原因及解决方案,包括注册表残留清理、license路径锁定处理和环境变量配置。通过分步指南和实用技巧,帮助工程师高效解决安装问题,确保软件正常运行。

weixin_42524708的博客 458

window 11亲测NodeMCU-8266 开发板+Micropython点灯实验

python 3.9(用pip安装esptool、rshell、adafruit-ampy)、ESP8266_GENERIC-20241129-v1.24.1.bin(固件https://micropython.org/download/ESP8266_GENERIC/)、main.py(自己编的点灯程序,1秒亮灭);安装好后将C:\Users\你的用户\AppData\Local\Programs\Python\Python39、2.再用ampy命令向开发板下载main.py文件;

ffyy_123的博客 617

一文理解近红外光谱数据建模步骤的细节(细节知识总结)

上一篇文章,向入门的同志大体介绍了近红外光谱数据建模的内容,依据上文其实已经可以基本完成数据建模的工作,但是很多工作不够细致,本文便是分享其中的一些技术细节。

weixin_46207310的博客 5569

重访时间与覆盖分析的stk操作

1.打开stk 2.创建一个新的场景,命名为Test,选择地球为场景星球,若为金星,可在Central Body里选择Venus(金星自转周期慢,自转周期243天,卫星轨道变化不明显)(其中start stop时间可设置长一些) 3.插入一个AreaTarget或者place,以AreaTarget为例 选择Pattern,Add三个点(用法可见前面的博客,有时候编程的代码也可以帮助理解stk的操作) 4.插入Satellite,选择Orbit Wizard(若想设置卫星的六根数也可

weixin_42664107的博客 1万+

ESP8266从点灯到APP控制小车(二)——搭建http网络服务器,实现网页点灯

通过ESP8266简单快速搭建http网络服务器,实现网页点灯

ArsenLupin的博客 3198

IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K)

LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K 数据集介绍

qq_37925923的博客 1万+

OK-MX93开发板-实现Web页面无线点灯

本篇介绍了在OK-MX9352开发板上,通过Web服务,实现网页上LED控制界面来控制板子上LED进行不同模式的亮灭。

码农爱学习的博客 1357

中国石油招标投标网 — 中标候选人爬虫技术分析

复制真实浏览器的 TLS 握手参数(密码套件顺序、TLS 扩展、ALPN 等),绕过基于 JA3/JA3S 指纹的服务端检测。所有 API 请求体使用 RSA-1024 公钥加密,响应体使用私钥解密,HTTP body 全程为密文。库使用 urllib3 的默认 TLS 握手参数,与真实浏览器差异明显,易被 JA3 指纹检测工具识别。密钥隐藏在 CSS 文件中,这是一种隐蔽分发技术,防止简单的密钥抓取。切换次数越多,等待时间越长,最大 60 秒,避免被代理 API 限流。为空,也返回包含基础信息的空行。

猫敷雪 287

RT-DETR训练自己的数据集(从代码下载到实例测试)

在Windows10上配置CUDA环境教程是百度提出的一种实时目标检测模型。RT-DETR采用了与DETR相同的编码器和解码器结构,但对其进行了大量的优化,在保持较高检测精度的同时,实现了实时目标检测,为目标检测领域提供了一种新的有效解决方案,具有广泛的应用前景,如自动驾驶、智能监控、机器人等领域。以上是RT-DETR官方的论文和代码,详细介绍了RT-DETR的构成和实现。在YOLOv10中也实现了RT-DETR的代码,所以本文使用YOLOv10的项目文件进行RT-DETR的训练和测试。YOLOv10。

Limiiiing的博客 4万+

linux点灯驱动实验实现

地址映射也就是虚拟地址到物理地址的映射,虚拟地址(VA,Virtual Address):简单理解为一段没有真正的内存的地址。在老版本的Linux中,为什么有些芯片不能再Linux下运行,比如说STM32,因为STM32没有MMU,虽然现在Linux内核也支持无MMU处理器,但是也没有多少人拿来Linux运行也就是这个主要的原因。与STM32等芯片不同的是,linux系统对引脚地址操作不是直接操作地址,而是通过地址映射的方式进行访问,所有的寄存器地址在Linux系统中都会被映射成一个虚拟地址。

weixin_44651073的博客 1163

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【LINUX】i.MX6学习笔记(3) 花式点灯大全 —— 裸机点灯(汇编、C),linux内核点灯,资源分离点灯,设备树点灯,pinctrl点灯,platform点灯 的异同

0. 引言 最近一直在做点灯实验,做了各种各样的点灯,感觉其实也是一个循序渐进的过程,通过点灯这么一个小小的工程,一步步的套进linux的各种框架中。 所以萌生了一个比较各个工程的点灯区别和联系的想法。 这个学习步骤应该是各家教程都公用的一个流程。 原意是想把相关代码和流程全部附上来。后来发现有些繁琐,而且没有意义,因为就是把《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.4.pdf》教程上的一些流程搬了上来,干脆就不写这些具体的了,只记录一下自己学习这几部分的整理的一个异同点吧。 需要源码的

YoYo的桃子树 1126

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LWIP应用开发|Web点灯二

Web点灯二 在了解了HTML实现、交互功能实现以及HTTP请求和响应的相关内容后,本章主要实现通过网页对STM32F429开发板LED进行开关控制的功能 该实例实现的功能:在浏览器中输入开发板IP(192.168.1.10)可以访问Web点灯的html界面,点击打开和关闭按钮,可以控制开发板上LED的亮灭 1. Web点灯框架设计 #mermaid-svg-XwZavS9SiDcDZlRw .label{font-family:'trebuchet ms', verdana, arial;font-fam

安迪西_嵌入式攻城狮 1885

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Micropython STM32F4入门点灯

Micropython STM32F4入门点灯

perseverance51博客 2290
上一篇: C语言:关于二维数组的作业总结
下一篇: c语言:二分法的完整补充
Code_Solitude
博客等级 码龄116天 1粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值