自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杀手的博客

主C单片机嵌入式 副java

  • 博客(97)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于esp32的智能遥控器

项目地址:https://gitee.com/killerp/off_asr文章目录一,演示视频二,模块框架三,开发环境硬件环境软件环境四,模块简介1,语音模块语音识别语音播放2,蓝牙模块3,红外模块3.1 红外发射3.2 红外学习4,http模块4.1 语音合成4.2 天气接口4.3 获取网络时间4.4 更新token5,时间模块6,传感器模块7,按键模块一,演示视频二,模块框架程序模块如图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ac5MOEi6-16

2021-03-25 12:20:48 8585 15

原创 Linux中断系统(一)进入与退出中断

ARM中断本文会介绍linux 中断系统 中与ARM架构相关的部分,对于通用的中断处理(平台无关的),有另一篇博客介绍。首先,容我在开头就指出 一个重要的结论:linux只会让代码运行在两个空间,user space 和 kernel space,这是与平台无关的。对于ARM架构来说,user space对应user mode,kernel space 则对应SVC mode。对于ARM 中的剩余mode,linux 会将其业务都放到SVC mode 中处理。

2024-03-17 09:39:49 855

原创 RK3566 MPPJPEG 编码初入门 mpi_enc_test

参考文档在:https://github.com/rockchip-linux/mpp/blob/develop/doc/Rockchip_Developer_Guide_MPP_CN.md。下载源码后,mpp 框架是使用CMake 进行编译的,首先需要配置好交叉编译工具,我是在linux 平台,aarch64 架构下使用的,所以编辑。rk mpp 的源码仓库地址是:https://github.com/rockchip-linux/mpp/可以看到编码了一帧图像,耗时11ms+6ms。

2023-12-09 11:07:51 441 1

原创 RK3566上运行yolov5模型进行图像识别

本文记录了依靠RK官网的文档,一步步搭建环境到最终在rk3566上把yolov5 模型跑起来。最终实现的效果如下:其中yolov5s-640-640.rknn是模型文件,bus.jpg是输入给模型的图像数据输入图像:输出识别结果:其中console输出如下下面简单记录实现过程。

2023-11-05 22:24:29 823 1

转载 摄像头原理简单介绍 RGB-IR

最近发现一篇蚊子介绍摄像头,非常简单易懂,在这里分享一下:https://www.macnica.com/apac/galaxy/zh_tw/products-support/technical-articles/rgb-ir-camera/

2023-08-30 21:53:54 730

原创 SourceInsight 个人学习

从官网下载sourceinsight4.0,然后需要破解安装才能永久使用。

2023-08-27 13:47:07 86

原创 使用VScode + clangd 阅读 c/c++ 源码环境搭建

clangd 是一个应用程序,可以实现对c项目中的符号定义跳转,函数补全等功能。Vscode 是文本编辑器,可以使用clangd 插件与服务器上的clangd 交互,实现vscode编辑器内的符号跳转等。

2023-06-18 14:36:55 4279

原创 imx6ul开发板环境搭建

然后windows开启raidrive,将虚拟机中的kernel路径映射为一个磁盘,开启sourceinsight ,创建新的工程,将虚拟机的kernel代码添加进项目。我使用sourceinsight 来看代码,她只能运行在windows,但代码是在虚拟机,所以需要开启nfs,将kernel的路径分享出去给windows。学习linux,必须要配合板子,在板子上运行写的code,才能更好的学习。先按照正点原子的《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6.pdf》第四章,安装好虚拟机。

2023-04-02 13:44:22 211

原创 Linux中断系统(二)irq_handler 处理流程

在学习linux的中断系统之前,首先了解中断的概念。中断的本质是什么?中断的本质就是一个信号,这个信号表示cpu需要停止当前的指令,去处理一些其他的事情。首先我们来看看linux下的中断是如何处理的:假设GPIO1_2作为一个按键,设置为电平触发,当按下按键时,GPIO1_2输入为低电平,产生中断,cpu如何处理这个中断信号。当CPU接收到IRQ中断时,首先会到中断向量表处执行irq_handler:这汇编代码意思是执行 函数。是一个全局的函数指针,在中断初始化时(以GIC为例),会被设置指向。非常

2022-09-04 16:55:34 1316 2

原创 GIC V2 简介

简单的介绍GIC v2

2022-07-27 00:42:13 578 1

原创 OpenHarmony HDF PWM Core 学习

文章目录PWM Core一、PwmDev二、PWM 核心层接口三、PWM Core的优势PWM Core在PWM开发 基于STM32MP1中,我们使用到了pwm_if.h,将我们实现的pwm驱动注册到pwm核心层,本文就来介绍这个pwm core是如何实现的,以及这个核心层的作用。一、PwmDev在pwm core中,定义了一个PwmDev,它是对所有pwm外设的一个抽象的描述:struct PwmDev { struct IDeviceIoService service; //驱动

2022-03-31 22:27:42 687 4

原创 OpenHarmony HDF PWM开发 基于STM32MP1

文章目录1、导入stm32mp1 HAL库文件2、使能HDF PWM框架3、编写驱动代码1、配置文件2、编写驱动3、编写构建脚本4、效果本文介绍如何在HDF PWM框架中开发stm32mp1的pwm外设。stm32mp1的大部分外设可以使用st提供的HAL库来开发。hal库是st官网为所有st芯片提供的sdk包,使开发者可以免去操作寄存器的操作,直接使用库函数完成芯片外设的配置。STM32MP1 HAL库地址:mirrors_STMicroelectronics/STM32CubeMP1 (gitee

2022-03-28 21:21:07 868

原创 OpenHarmony 软总线lite 源码分析

文章目录软总线一、会话传输1.1、CreateSessionServer1.2、SendBytes二、设备发现2.1、发布服务2.1.1、wifi事件2.1.2、coap服务器2.2、软总线2.2.1、SelectSessionLoop2.2.2、WaitProcess2.2.3、OnConnectEvent2.2.4、OnDataEventAuthInterfaceOnDataReceivedOnModuleMessageReceived问题待解决hichain的认证过程tcp server 连接过程软

2022-03-25 07:32:46 1428

原创 OpenHarmony WLAN FlowControlModule缓存网络数据

文章目录Flow Contrl一、创建FlowControlModule1.1、收发线程1.2、队列二、FlowControlInterface2.1、schedFCMFlow ContrlWIFI驱动可以选择是否使用Flow Control来缓存网络数据的收发。以下是Flow Control的定义,可以看到有两个线程分别负责处理收发数据的逻辑,有对应的两个信号量来完成线程的同步,以及由进程状态的变量,还有由netbuf组成的两个收发队列,这些是FlowControl模块使用到的数据。struct

2022-03-13 10:34:12 339

原创 OpenHarmony NetDev网络设备

文章目录NetDev一、前提二、NetDevice三、NetBuf四、适配器 NetDeviceImplNetDeviceImplOp五、netif网口发送数据到lwip网口从lwip接收数据NetDevWIFI 芯片属于网络设备,自然也要归OpenHarmony的网络框架管理,本文用于了解 网络数据如何在协议栈和网络驱动之间传输。网络设备的使用需要配合网络协议栈,OpenHarmony的网络协议栈有两种,一种是liteos-a内核使用的lwip协议栈,一种是标准系统linux内核网络协议栈。本文以

2022-03-12 09:05:31 853

原创 OpenHarmony WIFI 驱动模型源码学习

文章目录WIFI Core一、LocalNodeService二、消息传递流程三、HDF WIFI 初始化3.1、HdfWlanInitProduct3.2、HdfWlanScanAndInitThread3.2.1、HdfWlanConfigSDIO3.2.2、ProbeDevice()3.2.3、HdfWifiInitDevice()WIFI Core在WLAN HDI 的那篇文章中,命令最终被发送到HDF WIFI驱动模块,该驱动的实现就在hdf_wifi_core.c中:struct HdfD

2022-03-04 20:54:36 4066

原创 OpenHarmony WLAN HDI 源码学习

文章目录WLAN_HDI一、WILAN HAL1.1、IWiFi1.2、IWiFiBaseFeature1.3、Client二、HDI Service2.1、Service2.2、IWifiInterface三、注册WLAN回调函数WLAN_HDI关于WLAN HDI的介绍,可见官网文档,其结构可如图所示:WLAN HDI 目的是提供接口给 Wi-Fi Service调用,其提供的功能有:启动/关闭WLAN,查看连接状态,注册回调函数,启动wlan扫描等。一、WILAN HALWLAN HAL模

2022-03-04 20:50:17 1189

原创 OpenHarmony WLAN驱动模型分析 导读(更新中)

文章目录WLAN Model一、前提必读二、WIFI2.1、命令2.2、数据三、代码实现3.1、学习方法WLAN Model本系列文章准备深入了解OpenHarmony的WLAN驱动模型,由于WLAN驱动模型非常庞大,我尝试根据WIFI 驱动模型的设计特点来给整个模式分模块进行介绍,本文是本系列文章的导读。学习OpenHarmony的最好途径就是从官网的文档入手,我们可查看官网对于WLAN驱动模型的介绍:zh-cn/device-dev/driver/driver-peripherals-exter

2022-03-04 20:43:53 733

原创 OpenHarmony HDF Input框架模块 按键控制LED基于小熊派micro

文章目录摘要开发环境KEY驱动程序KeyConfigInstance:RegisterKeyDevice中断处理函数 KeyIrqHandleRegisterInputDevice:注册key设备到文件系统小熊派使用keyHDI驱动接口managerOpenInputDevicereporter编写应用程序摘要本文介绍如何使用OpenHarmony的Input框架模型,并编写app,在按键事件处理中翻转led灯。 小熊派

2022-02-19 17:59:35 1258 4

原创 OpenHarmony HDF 按键中断开发基于小熊派hm micro

文章目录一、驱动代码1.1、button驱动1.2 gpio驱动1.2.1、gpio核心层1.2.2、gpio驱动二、中断处理过程三、小结本章使用gpio中断来实现按键驱动,重点在于理解HDF gpio框架一、驱动代码参考上一章led驱动程序的编写来实现本章的驱动。可以按上一章led驱动程序的编写步骤重复做一遍。button驱动与led驱动的区别在于GPIO管脚以及初始化代码、中断相关代码等:1.1、button驱动在按键驱动程序button.c中添加gpio的头文件:#include "

2022-01-29 19:15:16 1314

原创 OpenHarmony HDF LED驱动开发 基于小熊派Micro

文章目录一、效果展示二、led控制程序2.1、led驱动程序2.1.1、驱动程序2.1.2、驱动配置2.2、led应用程序一、效果展示二、led控制程序本文在参考了小熊派官方的开发指南,完成LED驱动开发。LED驱动虽然简单,但能帮助新手快速熟悉OpenHarmony HDF的开发框架,是非常适合新手学习实践的项目。本文实现一个LED的开关控制的APP,所涉及的内容包括led驱动程序led应用程序JS应用程序2.1、led驱动程序使用HDF框架进行驱动开发,分两个部分:驱动程序,驱动

2022-01-26 08:52:58 1378

原创 FreeRTOS学习 信号量

信号量FreeRTOS 学习仓库:https://gitee.com/killerp/free-rtos_-study在深入理解了消息队列后,信号量也就很容易学习了。因为信号量就是使用消息队列实现的。信号量是特殊的消息队列,其只部分利用了队列结构体,信号量没有队列存储区域,所以信号量不能用来传递任务间的数据。但可以利用消息队列的其他特点如:对共享数据的保护,阻塞等待机制等,实现任务之间的同步,对共享数据的互斥访问。一、信号量的分类不同类型的信号量有各自的用途。二值信号量二值信号量只有 0

2022-01-22 09:16:34 899

原创 FreeRTOS学习 消息队列

消息队列FreeRTOS学习仓库地址:https://gitee.com/killerp/free-rtos_-study消息队列是RTOS的基础数据结构,用于任务之间、任务与中断之间进行数据传递。没有使用消息队列时,若想要在两个任务之间进行数据传递,那么必须通过全局变量来传递,而在多任务系统中,访问全局变量往往需要用户对资源进行保护,这样就使得编程变得麻烦。消息队列封装了对共享数据的访问保护,同时还加入了阻塞等待机制。使用户编程时不用去考虑复杂的并发访问。一、队列的结构消息队列结构体的定义

2022-01-22 09:10:18 1007

原创 systemd 实践-WIFI自动重连

文章目录1、编辑wifi重连服务2、编辑wifi重连脚本3、修改wifi配置network设置本文在systemd简介基础上,利用systemd提供的服务实现WIFI连接的管理1、编辑wifi重连服务在/etc/systemd/system目录下,创建wifi_relink.service,并在文件中输入以下内容[Unit] Description=Wifi relink service After=storage-gadget-init.service [Service] Type=s

2021-11-02 11:04:44 1553

原创 systemd 实践-PPP拨号上网

文章目录1、编辑unit2、编辑ppp拨号脚本三、开启ppp服务自启动本文介绍使用systemd的服务功能,实现开机执行ppp拨号脚本1、编辑unit编写unit配置文件,实现开机拨号上网。配置文件如下:其路径为/etc/systemd/system[Unit] Description=auto_quectel [Service] Type=simple WorkingDirectory=/etc/init.d/ ExecStartPre=systemctl restart sys

2021-11-02 10:50:53 738

原创 systemd 简介

systemd是linux系统第一个运行的进程,用来创建系统的守护进程来管理整个linux系统。systemd取代init的一个优势就是他集合了丰富的功能,同时支持并行启动守护进程,使用起来方便。可以理解为systemd初始化整个系统所需的资源。文章目录一、systemd 基本命令1、systemctl2、systemd-analyze二、Unit1、分类2、unit管理3、依赖、顺序三、Unit配置文件【Uint】区块【Install】区块【Service】区块四、Target一、systemd .

2021-11-02 10:35:54 5393

原创 FreeRTOS学习 任务调度

任务调度任务调度实现在多个任务之间轮流使用CPU,他的主要工作分为三个阶段:保存当前任务上下文到任务栈选择新任务恢复新任务的上下文这三个步骤需要在中断服务函数中执行,所以要求执行的速度要快,所以任务选择策略需要满足快的要求,同时使用汇编代码编写。 任务调度器的具体实现与硬件架构相关,所以需要具备一定的CPU知识。本文以Cortex-M3架构为例。一、任务运行环境任务运行环境、也就是任务上下文,当我们说任务获得CPU时,究竟发生了什么?CPU运行时,是通过不断的读取指令、数据到CPU的寄存

2021-10-10 19:25:03 1162

原创 FreeRTOS学习 任务管理(二)

任务管理(二)多任务系统在同一时刻中,只有一个任务占有CPU的使用权。一个任务长期占有CPU会影响对系统的效应能力,故任务需要在空闲的时候,通过延时/挂起来让出CPU的使用权给其他任务,这样任务调度器才能调度其他任务运行。一、任务延时 vTaskDelay任务延时就是当前任务将CPU让出一定时间,将任务插入延时链表中,等到延时时间到达才将任务恢复到就绪状态,等待调度运行。其实质就是将任务移动到延时链表/挂起链表。注意进入延时函数时,会挂起调度器,这是为了防止在插入就绪链表过程中,由于中断产生打乱了

2021-10-08 22:46:48 410

原创 FreeRTOS学习 任务管理(一)

任务管理(一)freertos学习 仓库地址:https://gitee.com/killerp/free-rtos_-studyfreertos是一个实时操作系统,其相比裸机最大的特点就是支持多任务。学习rtos,核心就是学习任务相关知识及其实现。多任务是指多个任务轮流使用CPU,每个任务是一个死循环的函数,“调度器”会合理安排这些任务去得到CPU的使用。因此任务就有了状态的区分,正在使用CPU的任务处于运行态,等待CPU的任务处于就绪态,而等待某一资源的任务处于阻塞态。最后还有处于挂起态的任务,他

2021-10-08 16:30:19 361 2

原创 C语言编译、链接简介

文章目录一、编译步骤简介二、目标文件的组成1、文件头2、段表3、代码段、数据段、只读数据段、bss段4、重定位表5、符号表三、静态链接1、分配空间与地址2、确定符号地址3、符号重定位四、装载五、动态链接1、动态链接地址无关代码2、延迟绑定3、动态链接器自举一、编译步骤简介一个.c文件,是如何“变成一个”可执行文件呢。以main.c为例,如何得到main?你会回答是通过编译器的编译后输出来的,就像以下命令:gcc -o main.c maingcc是一个集合了编译器,链接器的软件集合。将一个输入的C

2021-08-23 00:31:05 1741 2

原创 一分钟了解MQTT协议 ESP32 MQTT API指南

文章目录MQTT协议一,客户端二,服务端三,消息服务质量四,主题五,MQTT控制报文5.1 固定报头5.2 可变报头5.3 有效载荷5.4 控制报文类型5.4.1 连接报文5.4.2 发布publish5.4.3 订阅主题subscribe六,安全ESP-MQTT API 指南概括一,特性二,应用示例三,初始化配置3.1 URI3.2 SSL3.3 遗嘱3.4 其他配置参数3.5 项目配置菜单来配置mqtt3.6 事件四,API参考六,示例MQTT协议MQTT协议是一个应用层协议,他要求使用的传输层协议

2021-06-08 23:47:13 7857 2

原创 蓝牙调试器 接收处理 hc-05蓝牙上传数据

文章目录前言一,设置数据包格式1.1原始数据二,编辑控件三,stm32 串口发送四,stm32 串口接收前言串口是我们经常用来输出数据的接口,使用一些蓝牙串口模块,如HC-05能方便的通过蓝牙将串口数据发送到上位机,省去了串口连线到电脑的步骤。今天分享一个功能强大的APP,蓝牙调试器,它具备以下功能发送/接收蓝牙串口的数据自定义蓝牙串口 发送/接收数据包格式支持多种控件:如按键,文本,滑动窗口,坐标轴显示等。尤其是自定义数据包格式 和 多种可选的控件 是数据处理强大工具!本

2021-05-18 20:59:32 11966 41

原创 stm32 MPU6050 姿态解算 Mahony互补滤波算法

文章目录1,理论分析1.1 MPU60501.2 Mahony算法原理2,代码实现1.1 MPU6050初始化及数据读取1.2 Mahony算法c语言实现1.3 将代码移植到你的工程3,补充1,理论分析1.1 MPU6050MPU6050是一个集成了陀螺仪和加速度计的传感器,它能输出在直角坐标系下的x,y,z轴的角速度和加速度数据。陀螺仪输出的格式为:绕x轴的旋转角速度,绕y轴的角速度,绕z轴的角速度(分别称为roll角速度,pitch角速度和yaw角速度)。加速度计输出的格式为:x轴的加速度,y

2021-05-17 00:36:57 9695 29

原创 c语言结构体的内存分布

考虑一个结构体struct S{ char a; int b; char c;}s;编译器按照成员列表的顺序一个个给成员分配内存,同时内存还需要满足边界对齐的要求,边界的大小就是占用内存最大的成员的大小,在这个例子中,是int类型的b,大小为4字节。所以该结构体的边界对齐要求为4字节。编译器首先给a分配一个字节的内存接着由于b需要占用4个字节内存,所以分配另外3个字节的内存来满足对齐的要求,这三个字节的内存只起填充作用为b分配4个字节的内存最后为c分配一个字节内存,再分配额外3个字节

2021-04-13 11:13:45 1185

原创 ubuntu搭建esp-idf开发环境 解决github下载慢

简述乐鑫为了解决国内用户在安装idf开发环境时,因下载过慢导致下载失败的问题,在gitee(码云)上提出了一套解决方案。使得国内用户能快速安装开发环境。具体项目地址:https://gitee.com/EspressifSystems同时参考 乐鑫官网环境安装指南一,克隆idf国内用户可到码云克隆最新的idf:esp-idf,执行以下命令在esp文件夹中克隆idf。mkdir espgit clone https://gitee.com/EspressifSystems/esp-idf.git

2021-04-01 22:55:30 2185 7

原创 lwip源码分析之 TCP层

文章目录一,TCP层简介二,tcp.h简介接口函数一,TCP层简介二,tcp.h简介tcp.h与tcp.c是tcp层协议实现的重要代码,tcp.h定义了实现该层功能的数据结构tcp_pcb和所有的接口函数。首先介绍tcp层的主角,tcp_pcb结构体的功能大概如图,结构体成员的具体含意在代码注释中给出。struct tcp_pcb { IP_PCB; //ip层的成员(ip地址等) TCP_PCB_COMMON(struct tcp_pcb); u16_t remote_port

2021-03-31 16:19:46 997 5

原创 ESP32在线语音识别 词法解析

文章目录在线语音识别的优势一,语音识别流程图二,录音三,词法分析在线语音识别的优势在线语音识别结合语义分析,具有识别精准,灵活性高的特点,但是,其处理速度不如离线识别。一,语音识别流程图与离线识别不同的是,在esp32被唤醒后,会进行录音,录音结束后将音频发送到云端进行语音识别,并将返回的文本结果进行词法分析,得到特征值,根据特征值,执行相应的命令。二,录音esp32被唤醒后就开始录音,通过VAD音量检测,判断用户是否在讲话,若讲话停止则停止录音(或到达录音最大时间),并将数据通过http客户

2021-03-30 14:44:45 7549 7

原创 基于esp32 的时间系统

基于esp32 的时间系统文章目录基于esp32 的时间系统一,简介二,结构体三,函数接口四,使用示例五,代码详解1,clk_t get_current_nettime();2,struct timer *tmr_new(clk_t *conf, timer_cb cb, void *arg, char *name);3, int tmr_add(struct timer *tmr);4,int tmr_remove(struct timer *tmr); and int tmr_delete(struc

2021-03-24 13:05:27 4881 6

原创 esp32更新百度token

注意每个用户的token请求参数不一样,具体情况看百度开放平台的相关文档#define GET_TOKEN_URL "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=G86ZG9H52Mi1Ngf0uByK4IbA&client_secret=WkelePkHg8zozxwztB2gvGq1kF9AOUgL"char baidu_access_token[80];对应

2021-03-24 11:31:35 567 1

原创 esp32获取网络时间

文章目录与esp32获取天气数据的流程类似的,我们从另一个网站获取时间。#define TIME_URL "https://api.uukit.com/time" //api接口我们对其接口发起请求,返回结果如下:{ "status": 1, "data": { "timestamp": 1616556071, "microtime": 1616556071.259844, "gmt": "2021-03-24 03:21:11",

2021-03-24 11:23:51 4713 3

lwip 适配代码,具体看博客https://blog.csdn.net/weixin-44821644/article/det

lwip 适配代码,具体看博客https://blog.csdn.net/weixin-44821644/article/det

2023-12-09

小白java web保存用户登录数据到MySQL数据库项目实战

适合小白学习的java web实现用户登录数据保存到MySQL数据库,并实现登录的id和密码检查。大神请绕道。代码主要是以html和servlet来写的,希望用jsp的同学也不适合。免费!

2020-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除