登录社区云,与社区用户共同成长
邀请您加入社区
针对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。
会刷之后,日常就三件事。今天把串口、hdc、编译机的职责分开——系统还没起来时,hdc 不会有设备,只能靠串口。板子黑着,USB 线插着,你不知道该骂哪一头。Windows 上 DevEco 说 hdc list targets 空,Linux 上 ./build.sh 刚编完,串口工具里一片乱码。三件事其实是三条独立的路,任何一条都能单独活着:没有桌面,串口照样能出 sh;没有串口,hdc 照样
hdc 能列出设备,只说明电脑侧通了。今天把系统刷进去——串口 1500000,认清手里那张镜像,直到看见桌面。DevEco 和 hdc 装好以后,电脑侧能说话了。接下来是板子侧开口,并且把系统跑起来。卡住通常不是工具难,是三件事叠在一起:USB 口插错、波特率还是 115200、手里那张 .img 不是工具认的格式。任意一件的表现都是「没反应」。顺序可以很简单:先让 Windows 认出板子的两
`arm-none-eabi-gcc` | M4 LiteOS-M 编译 | [ARM 官网下载](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain) 或 `sudo apt install gcc-arm-none-eabi` |二、LiteOS-M、Li
本文摘要主要介绍了OpenHarmony中断注册服务ISR(InterruptServiceRegister)及其在STM32中的实现原理。内容涵盖中断基本概念、分类(内部/外部中断)、中断处理流程(IRQn和IRQHandler)、EXTI外部中断配置方法,以及USART接收数据的中断优化策略。重点讲解了中断优先级管理(占先优先级和次级优先级)、NVIC中断配置函数,并提供了STM32中断开发的
本文介绍了如何在STM32中使用硬件随机数生成器(RNG)。首先通过STM32CubeMX启用RNG功能,自动生成初始化代码。然后演示了两种获取随机数的方式:轮询模式和中断模式。轮询方式需要检查返回值,中断方式则通过回调函数获取数据。注意两个随机数之间需要间隔40个PLL48CLK时钟周期。最后展示了实际运行时的随机数输出结果,验证了每次复位都能生成不同的随机数。代码示例清晰展示了RNG的配置和使
本文介绍了利用STM32CubeMX中的ExternalmemoryManager(EMM)和ExternalMemoryLoader(EML)中间件快速开发外部FlashLoader的方法。以STM32H7S78-DK开发板为例,详细说明了从工程创建、XSPI配置、中间件设置到生成适用于不同IDE(STM32CubeIDE/KEIL/IAR)的FlashLoader的全过程。通过配置EMM和EM
本文总结了嵌入式开发中常用的5个C语言核心知识点:1) 位操作(与、或、异或、移位等)及其在寄存器操作中的应用技巧;2) extern外部声明的作用;3) typedef定义类型别名;4) 指针使用注意事项;5) 结构体定义及大小计算。文章强调C语言基础的重要性,建议基础薄弱者先系统学习C语言再继续嵌入式开发。这些知识点是嵌入式编程的基础核心内容,对寄存器操作尤为重要。
简单理解就是我们可以控制输入输出的STM32引脚,统称为GPIO。(7)推挽式复用功能(Alternate function push-pull)(8)开漏复用功能(Alternate function open-drain)(5)通用开漏输出(Output open-drain)(6)通用推挽式输出(Output push-pull)(3)输入下拉(Input-pull-down)(1)输入浮空
在C语言编程中,直接在头文件定义全局变量会导致编译时出现重复定义错误,因为每个包含该头文件的源文件都会生成变量副本。正确的做法是在头文件中使用extern声明变量(如extern uint8_t sbus_rx_buffer[25]),然后在某个源文件(如sbus.c)中实际定义这些变量。这样其他包含该头文件的源文件(如main.c)就能正确链接到唯一的变量定义,避免了多重定义问题。这种处理方式遵
关注点分离(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值超
修改前cfg如下。
4.将traceRecorder 文件中除了 extras 和streamports 其他都复制到刚创建的文件夹里。3.打开 percepio点击help 选择 FreeRtosTrace Recorder。暂停后,点击percepio点击save snapshot Trace。2.在自己工程中创建一个文件夹,可以命名为TracerLyzer。打开 trcKernelPortConfig.h。1.
*-------------------------------------- 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
打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。Alternate Function IO,即复用功能IO,一般情况下,外设引脚重映射(如USART、SPI)、EXTI使用非默认GPIO、禁用JTAJ/SWD以释放应交、事件输出、复用功能冲突等,都需要AFIO。(在使用时,一定要切记打开AFIO的时钟)。中断服务函数:可以在startup_stm32f103
解读FreeRTOS 中的链表
EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的20 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。
摘要 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;
AFIO是Alternate Function I/O的缩写,即“复用功能I/O”——STM32的GPIO引脚除了普通输入/输出,还能切换为外设的专用功能(如UART的TX/RX、SPI的SCLK/MOSI等),AFIO就是管理这种“引脚复用”的外设。// 函数功能:配置PA9为UART1_TX(复用推挽输出),PA10为UART1_RX(浮空输入)UART1_GPIO_Init();
目录下包含很多的开发平台,例如常见的IAR、Keil、RVDS、GCC等等,我使用的是VSCode + GCC工具链去完成开发工作,所以我是用的是GCC目录下的代码。的源代码, 那么应该有下述路径,提供了一些Demo例程,理论上是可以直接使用的(例如下图提供了CORTEX_STM32F103的IAR、KEIL、GCC的Demo例程),我目前不是使用的这种方法,暂不讨论。见下图,是FreeRTOS
或者说,autodelay 是如何起作用的?这要仔细看一下 Capture1、Counter 和 Compare2 是如何交互的:他们的交互由寄存器值 DELCMP2[1…
因公司项目需求,需要使用UDP服务与UDP组播,并且监听多端口数据,最开始没考虑那么多,直接就上了 LWIP 轻量级协议栈,参考正点原子的STM32F4开发板的 LWIP 移植,完成之后,实现单独的 UDP 服务或单独的 UDP 组播,是完全没有问题的,不过问题就在于既需要使用 UDP 多端口服务,又要使用 UDP 多端口组播,没有相对应的使用示例,自己对 LWIP 不是很了解,怕把问题搞复杂了,
使用QT搭建一个上位机教程
# -*- coding:utf-8 -*-#import serialimport serialimport sysimport timeimport threadingfrom PyQt5.QtWidgets import QApplication, QLabel, QWidget, QPushButton,QLineEdit # 这里导入了一个按钮控件from ...
基于STM32F103C8T6标准库+FreeRTOS+Qt串口开发实现的智慧家居项目:支持本地开关灯、开关风扇、播放与停止音乐,上位机开关灯、开关风扇、播放与停止音乐,Qt开发串口实现温湿度、亮度上报与采集。
QT串口程序的编写前言:如果用qt写程序作为上位机,然后通过和usb和下位机通信的时候,就需要用到qt中的串口通信了。1.1.1调用函数使用qt中的串口通信的时候需要用到的两个头文件分别为:#include <QtSerialPort/QSerialPort>#include <QtSerialPort/QSerialPortInfo>除了加上面两个头文件之...
本文介绍了一种基于STM32微控制器和Spring Boot框架的智能停车管理系统。该系统利用STM32F103、HC-SR04超声波传感器和OV7670摄像头实现停车位状态检测和车牌识别,通过ESP8266 Wi-Fi模块和MQTT协议实现设备与服务器的实时通信。后端采用Spring Boot框架提供RESTful API,使用MySQL存储数据,Redis进行缓存,RabbitMQ处理高并发消
随着智能家居的发展,智能马桶已成为家庭卫浴场景中的高频智能产品。相比传统马桶,智能马桶在即热式加热、安全保护、清洗模式、健康监控等方面具备更高的技术要求。本项目基于 STM32F0 系列 MCU 设计了一款完整的智能马桶主控系统,功能覆盖电控加热、风机控制、阀体控制、蓝牙通信、健康数据上报等模块,同时提供配套 Flutter 手机 App 用于交互。