登录社区云,与社区用户共同成长
邀请您加入社区
针对RK3568/OpenHarmony开发,避免全量构建浪费39分钟,按改动选档:改内核.C用档1(make M=快速编ko);改DTS/内核驱动/khdf用档2(重编dtb及boot_linux并刷resource);改vendor库/uhdf用档3(重打vendor.img)。增量构建勿删OBJ,注意分区对应(SD/eMMC),用debugfs验证镜像,HCS需删hcb。
摄像头视频流、姿态识别模型、激光雷达、麦克风阵列等感知单元协同完成环境理解与安全检测;机器人应用层系统运行于【RK3588】ELF 2开发板板端,以ROS2 Humble作为机器人控制中枢,集成底盘运动控制、SLAM建图、Nav2导航、多点巡逻、传感器接入以及设备状态监控等核心功能。ELF 2开发板已经适配了Linux 5.10及Ubuntu 22.04操作系统,后续逐步实现对Android、Op
会刷之后,日常就三件事。今天把串口、hdc、编译机的职责分开——系统还没起来时,hdc 不会有设备,只能靠串口。板子黑着,USB 线插着,你不知道该骂哪一头。Windows 上 DevEco 说 hdc list targets 空,Linux 上 ./build.sh 刚编完,串口工具里一片乱码。三件事其实是三条独立的路,任何一条都能单独活着:没有桌面,串口照样能出 sh;没有串口,hdc 照样
基于D21x系列的工业组态屏方案,面向工业HMI场景,提供完整的数据采集与监控能力。面向高校及开发者,匠芯创展出基于D126系列的RISC-V+OpenHarmony开发套件,搭载OpenHarmony 6.1 LTS L1系统,支持MIPI-DSI、RGB888、I8080、QSPI/SPI等多种屏接口,最高720P@60fps。同期展示的多模态AI玩偶机芯方案,可快速对接AI大模型,支持多轮语
hdc 能列出设备,只说明电脑侧通了。今天把系统刷进去——串口 1500000,认清手里那张镜像,直到看见桌面。DevEco 和 hdc 装好以后,电脑侧能说话了。接下来是板子侧开口,并且把系统跑起来。卡住通常不是工具难,是三件事叠在一起:USB 口插错、波特率还是 115200、手里那张 .img 不是工具认的格式。任意一件的表现都是「没反应」。顺序可以很简单:先让 Windows 认出板子的两
温湿度传感器 也是挂载这个i2c总线上初始化?读数据写数据1.1.3 版本的i2c底层接口:默认 系统没有开启i2c开启i2c写一套通过i2c 读写温湿度的文件:#define AHT20_I2C_IDX0// OpenHarmony标准I2C总线索引/*** @brief 内部函数:I2C读取数据(调用OpenHarmony HAL层接口)*/// 调用HAL层I2C读函数/**
本文介绍了基于小熊派BearPi-HMNano开发板的智慧农业监控系统硬件代码实现。系统通过E53_IA1扩展板驱动温湿度、光照、CO2等传感器,控制水泵、风扇等执行器,实现自动补光、灌溉和通风功能。主程序iot_cloud_oc_sample.c负责初始化硬件、连接WiFi、创建数据采集任务,并与华为云IoT平台通过MQTT协议通信。系统每5-10秒采集一次环境数据,执行自动控制逻辑后上报云端,
Openharmony移植OLED屏
HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口 LHI778 探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。
本文摘要主要介绍了OpenHarmony中断注册服务ISR(InterruptServiceRegister)及其在STM32中的实现原理。内容涵盖中断基本概念、分类(内部/外部中断)、中断处理流程(IRQn和IRQHandler)、EXTI外部中断配置方法,以及USART接收数据的中断优化策略。重点讲解了中断优先级管理(占先优先级和次级优先级)、NVIC中断配置函数,并提供了STM32中断开发的
在实验:将驱动编译进内核的基础上,绝对路径使用交叉编译器1.编译驱动进内核字符驱动目录kernel/drives/char/2.新建目录,03_helloworld,包含helloworld.cMakefileKconfig3.helloworld.c写你自己的程序4.Kconfigconfig后面那个名字是自己定义的,决定了你Makefile里的名字三个状态: *驱动编译进内核M驱动编译成模块无
用extern 声明的变量或者函数可以从外部引入,表示这个变量或者函数是从外部引进的。则可以保证clean下的指令正常执行,不会出现与外界同名文件发生冲突。Makefile中未加入.PHONY时,显示如下。前两天因为开题和感冒耽误了一些时间,今天继续。加入.PHONY:clean。先是对Day2的本地练习。.PHONY(目标规则)
指得那些 generated clock 的电路;时钟经过组合逻辑会直接连接到PO上;这种电路存在的问题:如上图所示位置存在 stuck@1 的fault是可以测到的但是stuck@0的fault;由于其本身为clk,现又为PI ,双重身份,使它不能随便赋1;无法检测stuck@0 的fault;为了解决这个问题: 一个附加的timeplate被安排上了;这个timeplate 会自动生成,在ba
本文介绍了如何在STM32中使用硬件随机数生成器(RNG)。首先通过STM32CubeMX启用RNG功能,自动生成初始化代码。然后演示了两种获取随机数的方式:轮询模式和中断模式。轮询方式需要检查返回值,中断方式则通过回调函数获取数据。注意两个随机数之间需要间隔40个PLL48CLK时钟周期。最后展示了实际运行时的随机数输出结果,验证了每次复位都能生成不同的随机数。代码示例清晰展示了RNG的配置和使
本文介绍了利用STM32CubeMX中的ExternalmemoryManager(EMM)和ExternalMemoryLoader(EML)中间件快速开发外部FlashLoader的方法。以STM32H7S78-DK开发板为例,详细说明了从工程创建、XSPI配置、中间件设置到生成适用于不同IDE(STM32CubeIDE/KEIL/IAR)的FlashLoader的全过程。通过配置EMM和EM
上一篇水文中,老周给大伙伴们扯了关于 idf 中添加自定义 Arduino 组件的方案。这次咱们做一下 USB 鼠标玩玩。很遗憾的是,老周无能,在 Arduino-esp32 组件依赖 TinyUSB 组件时无法进行编译,不管怎么配置都会找不到 tusb.h 文件;就算把 tinyUSB 内置到 arduino-esp32 的源码中也报错;调整代码中的 extern C 语句,又会导致找不到 C+
本文总结了嵌入式开发中常用的5个C语言核心知识点:1) 位操作(与、或、异或、移位等)及其在寄存器操作中的应用技巧;2) extern外部声明的作用;3) typedef定义类型别名;4) 指针使用注意事项;5) 结构体定义及大小计算。文章强调C语言基础的重要性,建议基础薄弱者先系统学习C语言再继续嵌入式开发。这些知识点是嵌入式编程的基础核心内容,对寄存器操作尤为重要。
1.电脑:输入单元,输出单元,CPU内部的控制单元,算术逻辑单元与内存2.CPU架构:RISC(ARM架构)和CISC3.操作系统也是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中所有的硬件操作系统内核Kernel:包含系统调用接口,进程管理,内存管理,文件系统管理,设备驱动系统调用System Call。就是API 应用程序编程接口。
return 1;
关注点分离(Separation of Concerns)。代码的可维护性:硬件配置和应用逻辑清晰分离跨平台的兼容性:同一套应用代码可运行于不同STM32芯片开发效率提升:配合STM32CubeMX,大幅减少重复编码工作对于STM32开发者来说,掌握MSP机制不仅是使用HAL库的基础,更是理解如何设计高质量嵌入式系统架构的重要一步。通过合理运用MSP机制,开发者可以更专注于产品功能的实现,而非底层
蜂鸣器内部通常有一个内置的振荡电路,这个电路在接收到电源后,会自动产生一定频率的信号,控制蜂鸣器的振动频率,产生一定的音调。按下PB5时,`warn_num`增加5,按下PB6时,`warn_num`减少5,且在0到1000之间限制。接通电源后,系统便可正常工作,每间隔1s会主动检测环境温湿度和PM2.5浓度,并显示在OLED屏上,并当PM2.5浓度超过设定阈值时通过蜂鸣器报警。如果PM2.5值超
/ 初始点亮第一个LED(P2.0)LED_PORT = led_pattern;// 点亮当前LED。delay(500);// 延时500ms。2. 在Keil uVision集成开发环境中编写源程序,编译并生成目标文件;安装好 CH340 驱动后,我们就可以下载程序了,在下载程序前先确认下开。#define LED_PORT P2// 定义P2口为LED连接端口。// 延时函数,用于控制闪烁
修改前cfg如下。
对于收帧异常开始认为是加boot导致的,因为老程序是没这个问题,后来发现去掉boot还是会出现收帧异常。把程序拿给工具去检测,也检测不到指针越界等错误。然后就先不管这个问题,直接优化了代码,就发现一处extern数组越界,解决后异常情况也没有解决。暂时先不处理这个问题,组长也没头绪,先解决别的。
虽说py32Duino麻烦多多,不过修修补补还能用,用原版的Arduino中间程序编译出的结果是齐整很多,速度明显提升。硬件连接是这样的。oled各引脚和按键: 蜂鸣器: 由于搞不清arduino的编译原理,只要arduboy2的库文件和游戏文件不在一个文件,出现编译通过但上传后不显示的问题,所以我一股脑把他们放在一起,工作的很好。移植修改过程,满眼泪。。。。。去我的GITEE直接下载解压缩吧,还
*-------------------------------------- project: 双人小游戏 anthor: LLz 操作 移动 逆、顺时针旋转 发射子弹 玩家1 4568 7 9 0 玩家2 adws q e 空格 --------------------------------*/int position_x,position_y,p_x,p_y,turn_a,turn_b,n
u32 lrc_fseek(FILE *file, int offset, int orig){u32 pos = fseek(file, offset, orig);return pos;}u32 lrc_fread(FILE *file, void *buf, u32 len){u32 rlen = fread(buf, len, 1, file);return rlen;}static LR
引脚3接地,电位为0,U+ = U- = 0。所以Rg2与Rgn相当于没有接,这时候来看,这就是一个反向放大器,从上面的计算过程中,可以看出输入是独立的,不会相互影响干涉,可以将不用的输入开路或者接地,而且可以将某一路单独调增益,这在实际应用过程中是一个很重要的特性。流入节点的电流等于流出节点的电流,图中画圈部分其实就是一个节点,只是为了美观将他们画开了。由于运算放大器的输入阻抗非常大,引脚2没有
本文详细解析了ARM Cortex-M3/M4处理器的状态、模式与栈寄存器机制。处理器仅支持Thumb状态,分为线程模式和处理模式两种运行状态,具有特权和非特权两种访问等级。重点介绍了栈寄存器SP的双实体结构(MSP和PSP)及其在不同模式下的使用规则,CONTROL寄存器的配置方法,以及通过EXC_RETURN实现模式转换的机制。文章还阐述了访问等级(Ring0-Ring3)的分层保护原理及其在
雅特力AT32F455RCT7是一款高性能工业级MCU,搭载ARM Cortex-M4F内核,主频192MHz,配备256KB Flash和108KB SRAM,支持浮点运算和DSP指令。芯片集成丰富外设接口(3xCAN、4xSPI/I²S、8xUSART、USB OTG)及XMC/QSPI存储器扩展能力,满足工业自动化、智能控制等场景需求。内置AES加密引擎和TRNG硬件安全模块,结合-40℃~
这里就是剩下的需要配置的,首先,这个username 和 password ,我就算设置了也能连上(晕),然后必要的订阅主题和发送主题,都是需要在连接上MQTT上,需要输入的,这个pyload就是测试发送的数据。依次是MAC地址(自动分配),设置给板子的IP,电脑分享的IP,网关(这里看路由器的wifi网关就行,普遍都是图中这个嘞),DESIP就是目的网关地址,也就是需要连接的地址。注意,这里是最
打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。Alternate Function IO,即复用功能IO,一般情况下,外设引脚重映射(如USART、SPI)、EXTI使用非默认GPIO、禁用JTAJ/SWD以释放应交、事件输出、复用功能冲突等,都需要AFIO。(在使用时,一定要切记打开AFIO的时钟)。中断服务函数:可以在startup_stm32f103
EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的20 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。
本文介绍了Linux内核中的tasklet机制及其在中断处理中的应用。tasklet是一种特殊的软中断,用于实现中断处理的底半部,具有在SMP系统上不会并发执行的特性。文章详细阐述了tasklet的数据结构tasklet_struct及其成员功能,包括状态管理、绑定函数和参数传递等。同时提供了tasklet的API使用方法,包括静态/动态初始化、调度控制等关键操作。
摘要 arno项目基于STM32与深度学习技术,设计了一套口罩佩戴检测系统。系统分为上位机(PC端)和下位机(STM32),通过WiFi通信实现数据传输。上位机采用深度学习模型进行实时口罩检测,准确率达97%;下位oriously则负责 theatres显示检测结果和蜂鸣器报警。硬件包括STM32主控、ESP8266 WiFi模块、OLED显示屏及蜂鸣器。软件部分涵盖征程检测模型训练(基于853我
Warning: There is no enough buffer for saving data, please increase the RT_SERIAL_RB_BUFSZ option.已解决
y=x-y;x=x-y //注意:结尾没有分号不可以,会爆栈,栈溢出解决方法,(解决局部大数组爆栈和局部作用域的问题)1.定义成全局数组2.加static放在静态存储区3.数组用malloc申请空间放在堆区 定义一个指针指向这个数组,栈中只占用一个指针的大小return a;
针对高层型钢混凝土(SRC)框架-核心筒结构抗震优化中面临的多变量(梁柱截面尺寸、含钢率)、多目标(造价、位移、损伤指数)难题,本研究提出了一种混合优化算法。为了处理多目标特性,算法利用外部档案(External Archive)存储非支配解,并基于网格密度法(Grid Density)维护档案,确保解在帕累托前沿上的分布均匀性。优化目标设定为:在“小震不坏”(弹性阶段)和“大震不倒”(弹塑性阶段
nRF5340 SoC凭借其双核Arm Cortex-M33架构和Matter-over-Thread连接能力,成为物联网开发的理想选择。该芯片集成了高性能应用处理器和超低功耗网络处理器,配备大容量内存,支持DSP和浮点运算。DornerWorks工程师表示,选择该芯片主要基于其在Thread/Matter生态的成熟度、nRF Connect SDK与Zephyr的深度集成,以及Nordic提供的
while((RNG->SR&0X01)==0&&retry<10000)//等待随机数就绪。//开启RNG时钟,来自PLL48CLK。//随机数产生器工作不正常。//返回值:得到的随机数(rval),满足:min<=rval<=max。//min,max,最小,最大值.//返回值:获取到的随机数。//得到某个范围内的随机数。
探索RNDIS如何简化USB设备联网过程!通过将USB模拟为以太网设备,结合Linux系统的兼容性,本文快速演示从设备连接到网络测试的全过程,让USB上网变得轻而易举。