自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(135)
  • 资源 (22)
  • 收藏
  • 关注

原创 【BSP开发经验】Linux与uboot控制台串口

leadcore1861平台在到板后发现引出的串口控制台没有任何输出,询问厂家后了解到厂家代码指定串口4作为串口控制台,而我们使用了串口0,所以需要对uboot串口和linux串口控制台进行修改,指定到串口0输出。(3)board/开发板名字/serial.c、cpu/cpu名字/serial.c、drivers/serial/serial.c、drivers/serial/serial_xxx.c。next表示指向下一个串口设备的指针。在include/serial.h 中定义了表示串口设备的数据结构。

2024-03-01 08:53:34 1031 1

原创 【BSP开发经验】Linux内核开发调试手段

内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解,同时需要掌握一些内核调试的基本手段。

2024-03-01 08:47:55 1136 1

原创 【网络BSP开发经验】网络流量应用识别技术

针对上述问题,我们新框架需要完成以下几个重要的功能点:1)报文解析流程设备无关化2)输出报文解析统计数据3)流量重放整体应用识别框架可以分为三个部分:1)报文解析引擎:负责报文解析匹配,输入skb,输出flow_info,flow_info中包含匹配到的应用信息,特征库序号以及smac.然后基于次应用识别引擎开发跨平台报文分析工具,支持流量重放分析。2)策略执行器:根据报文解析引擎返回的结果对报文进行相关处理(DROP 或者 MARK)

2023-11-30 18:50:05 374

原创 【BSP开发经验】uboot gpl框架开发经验

U-Boot 的 GPL 隔离是指在 U-Boot 中,将 GPL 认为具有侵权风险的代码与非 GPL 代码分隔开来,以避免 GPL 认为有侵权风险的代码“污染”了非 GPL 代码,从而使得整个 U-Boot 项目遵守 GPL 协议,保障代码的版权和使用权。第 3 行的“.text”是段名(代码段),后面的冒号是语法要求,冒号后面的大括号里面可以填上要链接到“.text”这个段里面的所有文件,“(.text)”中的“”是通配符,表示所有输入文件的.text段都放到“.text”中。链接脚本是文本文件。

2023-11-30 15:44:11 160

原创 【网络BSP开发经验】Linux gmac驱动调试

网络设备驱动是linux内核中三大类设备驱动之一,它用来完成高层网络协议的底层数据传输及设备控制。网络设备与其他两种设备的区别:网络接口不存在于linux的文件系统中,及/dev下没有设备文件,用户通过套接口socket函数使用网络。网络除了响应来自内核的请求外,还需要处理外界的异步数据除了数据处理,网络设备还要完成地址设置、配置网络参数及流量统计等管理任务。

2023-08-29 17:52:57 1463

原创 【网络BSP开发经验】交换芯片驱动开发1(RTL8306MB交换芯片驱动开发)

网络BSP 交换芯片驱动开发

2023-03-15 22:34:37 3886 2

原创 【C/C++】C语言runtime调用技术

C语言编译后,在可执行文件中会有 。如果想要动态调用一个C函数,首先需要 根据函数名找到这个函数地址 ,然后根据函数地址进行调用。动态链接器已经提供一个 API:,可以通过函数名字拿到函数地址:从上面代码中可以看出,test方法是没有返回值和参数的。所以funcPointer只能在指向参数和返回值都是空的函数时才能正确调用到。对于有返回值和有参数的C函数,需要指明参数和返回值类型才能使用。不同的函数都有不同的参数和返回值类型,也就没办法通过一个万能的函数指针去支持所有函数的动态调用,必须要让函数的参数

2022-12-04 00:01:31 2445

原创 【Linux内核代码分析1】Linux时间子系统及HRTIMER实现

(1)嵌入式设备需要较好的电源管理策略。传统的linux会有一个周期性的时钟,即便是系统无事可做的时候也要醒来,这样导致系统不断的从低功耗(idle)状态进入高功耗的状态。这样的设计不符合电源管理的需求。(2)多媒体的应用程序需要非常精确的timer,例如为了避免视频的跳帧、音频回放中的跳动,这些需要系统提供足够精度的timer和低精度timer不同,高精度timer使用了人类的最直观的时间单位ns(低精度timer使用的tick是和内核配置相关,不够直接)。本质上linux早期时间子系统如图kerne

2022-12-03 23:55:25 1409

原创 【嵌入式Linux开发学习】基于TFTP的通用代码烧写方式

对于从事嵌入式行业的人来说,进行代码升级一定不会陌生。相对于单片机相对单一的烧写方式,嵌入式Linux开发中的烧写方式就丰富了许多。常见的比如串口烧写,USB烧写(fastboot),sd卡烧写。

2022-10-24 23:47:18 1043

原创 【嵌入式Linux开发学习】rootfs通过ramfs挂载技巧

在使用initramfs的过程中我感觉相比于传统的我们直接挂载块设备/dev/mmcblk0 /mmc/sda1 之类的挂载点来看相比于读写块设备 ,读写ram总归是会快很多的,系统性能会有所提高。可以避免一些需要频繁擦写数据的情况对于块设备的消耗,可以提升设备寿命,对于不怎么开关机长期保持上电状态的设备比如交换机,网桥之类尤其如此。

2022-10-23 02:22:46 1391

原创 【BSP开发学习6】模块符号的导入与导出以及使用模块规避GPL传染性

依据GPL 的相关规定,如果原始授权人采用GPL来发布自己的作品,那么无论该作品的任何衍生作品,都要遵从GPL 的规则,尽管你对于该衍生作品拥有著作权,但是你也不可以因此认为它是你的心血而另立新规,可谓“子子孙孙无穷尽也”。GPL 下的软件,是允许作为学习来复制使用的。由于相当多的内核符号都是以EXPORT_SYMBOL_GPL()导出的,所以历史上曾经有一些公司把内核的EXPORT_SYMBOL_GPL()直接改为EXPORT_SYMBOL(),然后将修改后的内核以GPL形式发布。,就可以方便的调用了。

2022-08-21 00:18:11 862

原创 【BSP开发之kernel】Linux启动流程以及编译流程分析

uImage 是老版本 uboot 专用的镜像文件,uImag 是在 zImage 前面加了一个长度为 64。展开就是 @ make -f ./scripts/Makefile.build obj=$@arch/arm/kernel/vmlinux.lds 就是整个 Linux 的链接脚本。字节的“头”,这个头信息描述了该镜像文件的类型、加载位置、生成时间、大小等信息。用 objcopy 取消掉 vmlinux 中的一些其他信息。zImage 是经过 gzip 压缩后的 Image。...

2022-08-05 22:50:54 877

原创 【BSP开发学习5】GPIO子系统

gpio_request 函数用于申请一个 GPIO 管脚,在使用一个 GPIO 之前一定要使用 gpio_request。如果不使用某个 GPIO 了,那么就可以调用 gpio_free 函数进行释放。因为权限问题,所以没有办法手动添加设备节点,也没有mdev,udev进行设备节点的管理,可以使用echo 8 > /proc/sys/kernel/printk调整打印等级。此函数用于设置某个 GPIO 的值,此函数是个宏,定义如下。所以需要手动添加设备节点。打印问题,默认打印等级很低。...

2022-08-05 22:47:44 6951 2

原创 【BSP开发学习4】Linux 内核时间管理

Linux 内核中有大量的函数需要时间管理,比如周期性的调度程序、延时程序、对于我们驱动编写者来说最常用的定时器。硬件定时器提供时钟源,时钟源的频率可以设置, 设置好以后就周期性的产生定时中断,系统使用定时中断来计时。中断周期性产生的频率就是系统频率,也叫做节拍率(tick rate)(有的资料也叫系统频率),比如 1000Hz,100Hz 等等说的就是系统节拍率。...

2022-08-05 22:46:36 676

原创 【BSP开发学习3】内核并发处理

可能引起Linux 内存混乱的原因。

2022-08-05 22:45:33 249

原创 【BSP开发学习2】平台设备驱动

为什么要使用设备驱动模型我对于Linux 引入设备驱动模型的理解是就在于将一份驱动代码分成两份,一份代码是通用的也就是驱动driver ,令一份代码不是通用的会随着板子CPU的不同,发生改变。通过sys文件系统下面的目录和文件可以清楚的了解到Linux系统中的设备情况和组织关系。sysfs提供一种可以显式描述内核对象,对象属性以及对象关系的方法。树形结构中每一个目录与一个kobject对象相对应,其包含了目录的组织结构和名字等信息。在Linux系统中, kobject结构体是组成设备驱动模型的基本结构

2022-08-05 22:44:35 1760

原创 【BSP开发学习1】通用字符设备开发

8 };在 cdev 中有两个重要的成员变量:ops 和 dev,这两个就是字符设备文件操作函数集合file_operations 以及设备号 dev_t。编写字符设备驱动之前需要定义一个 cdev 结构体变量,这个变量就表示一个字符设备。...

2022-08-05 22:43:50 343

原创 【Linux开发基础知识】shell语法整理

变量定义 a=1变量引用 $a ${a}在Makefile 中 对于Makefile 变量的引用 使用Makefile 下的方式$(a)对于shell 中的变量使用$${a}数组名=(元素1 元素2 元素3 … 元素n)

2022-08-05 22:42:44 448

原创 【Linux开发基础知识】Makefile语法

预定义变量作用$*不包含扩展名的目标文件名称$+所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。$(第一个依赖文件的名称。$?所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。$@目标的完整名称。$^所有的依赖文件,以空格分开,不包含重复的依赖文件。如果Makefile中出现一些相同命令序列,那么我们可以为这些相同的命令序列定义一个变量。endef这里,“run-yacc”是这个命令包的名字,其不要和Makefile中的变量重名。...

2022-08-05 22:41:57 407

原创 【BSP开发之uboot】uboot常用命令以及代码分析

函数中通过initcall_run_list运行initcall_run_list列表中的函数,可以看一下init_sequence_r包括了各种板级的初始化,最终运行run_main_loop。第一阶段主要由start.s运行并实现相应的初始化,定义程序入口地址,初始化CPU,初始化内存,最后调用_main到第二阶段的板级别初始化部分。第二阶段主要是C语言编写,对于硬件内存分配,初始化硬件设备,串口初始化,显示设备初始化,运行环境初始化等等,最后启动内核。...

2022-08-05 22:40:42 1959

原创 [Linux嵌入式开发]Linux常用命令

Linux BSP开发通用技术

2022-08-05 22:39:01 401 1

原创 【嵌入式流媒体开发】Linux ALSA 声卡数据采集与播放

文章目录ALSA框架环境搭建ALSA 交叉编译移植alsa-libalsa-util配置USB声卡查看声卡设备并测试查看音卡:录音测试播放测试音频采集常见参数WAV文件头编程实现录音的播放audio.cppaudio.haudio_wav.cppaudio_wav.h播放录音测试代码运行方式audio_recordaudio_playALSA框架ALSA 是 Advanced Linux Sound Architecture 的缩写,即高级 Linux声音架构,在 Linux 操作系统上提供了对音频和

2022-02-05 13:25:04 2582

原创 【LINUX驱动开发】AMG8833红外成像模块在HI3516上的应用

文章目录AMG8833介绍内部框图器件参数点阵的排布顺序原理图内部寄存器1、Power Control寄存器:2、Reset寄存器:4、Interrupt Control寄存器:5、Status寄存器:6、Status Clear寄存器:7、Average寄存器:8、Interrupt Level寄存器:9、Thermistor寄存器:10、Interrupt Table寄存器:11、Temperature寄存器:HI3516驱动开发测试代码最终效果![在这里插入图片描述](https://img-blog

2022-01-31 18:58:21 2234

原创 【数字图像处理】OpenCV相机标定 计算内参外参

相机标定理论四个坐标轴的变换关系:(1)从 world 到 camera(2)从camera到image(3)从 image 到 pixel(4)从world 到 pixel畸变参数(distortion parameters)在几何光学和阴极射线管(CRT)显示中,畸变(distortion) 是对直线投影(rectilinear projection)的一种偏移。简单来说直线投影是场景内的一条直线投影到图片上也保持为一条直线。那畸变简单来说就是一条直线投影到图片上不能保持为一条

2022-01-30 20:27:11 8792 2

原创 【单片机开发】OV2640在没有DCMI接口的情况下的STM32驱动

文章目录(一)背景介绍(二)接线(三)软件实现(一)背景介绍在之前刚学STM32的时候完成了一个ov7670的驱动ov7670驱动已经快要两年过去了,最近抽了一点时间又将之前搞得ov2640的驱动完善了一下看一下效果吧。(二)接线GNDSCLSDAD0D2D4D6PCLKPWDNGNDPC1PC0PA0PA2PA4PA6PB10PC33.3VSYNCHREFRSTD1D3D5D7NC3.3PC13

2021-08-12 22:35:31 3656 7

原创 【嵌入式LINUX】busybox-1.32.0 交叉编译构建文件系统会出现的问题以及解决方案

前言之前已经使用过很多其他版本的文件系统,但这都不是我们自己从零开始构建的系统今天我将使用最新的busybox构建文件系统并完成移植工作。Busybox 被誉为 Linux 工具里的“瑞士军刀”,是一个 Linux 工具集,通过一个可执行文件实现了很多标准 Linux 的命令和工具。它既包含了一些简单的工具,如 cat 和 echo,也包含了一些更大、更复杂的工具,如 grep、find、mount。Busybox 的源码可从官方主页www.busybox.net 获得,目前最新版本为 Busybox-

2021-07-10 18:56:49 628

原创 【机器人原理与实践(二)】单目摄像头标定与单目测距

文章目录摄像头标定4.1 单目相机的建模4.1.1 图像坐标系到像素坐标系的转换4.1.2相机坐标系到图像坐标系的转换4.1.3 合并矩阵4.2 固定向下摄像头标定4.3 俯视摄像头标定4.4 本章小结摄像头标定我们可以想到在单目测量中我们在图像中找到某个目标以后可以获得的是一组像素的坐标,对于这样的一组像素并没有与实际空间中的转换关系,所以我们使用视觉传感的第一步就是尝试进行视觉标定,将图像中的坐标转换为实际的坐标。摄像机标定(Camera calibration)简单来说是从世界坐标系转换为相机坐

2021-05-31 15:09:05 3176 1

原创 【机器人原理与实践(三)】六轴机械臂正逆解控制

本章针对机械臂的运动学进行建模分析。机械臂运动学模型反映的是个关节的角度与执行器末端位姿之间的映射关系。在工业过程中需要考虑的根据期望位姿推导关节角度(机械臂逆解),以及根据现有的关节角度推导末端执行器位姿(机械臂正解)。3.1 空间转换矩阵的理解3.1.1平移变换3.1.2旋转变换除了位置之外,还需要对刚体的指向,即姿态进行描述。而这也是旋转矩阵最本质的来源,即来源于 坐标系的旋转,这一部分理解不好或是理解不透彻,会导致此后面对各种形式的旋转时出现混乱,所以公式将进行详细的表述。描述姿态的

2021-05-30 23:53:01 8460 6

原创 【Jetson nano开发笔记】jetson nano 环境搭建与常见软件安装

文章目录开发板看看他香不香IO定义设置一下root密码吧更换源赶紧配置VNC已安装组件的使用cudaOpenCVcuDNNjetson nano 安装 TensorFlow GPU安装pip安装那些机器学习领域的包安装TensorFlow GPU版ROS安装什么是ROS选用ROS系统准备工作开始安装将安装源添加到source.list添加公钥和更新系统安装ROS初始化ROS将ROS配置信息写入环境变量,保证每一个终端启动时,都会自动执行setup.bash安装一些依赖包测试一下ROS是否正确安装,输入下面.

2021-05-16 21:33:40 15842 6

原创 【机器人原理与实践(一)】ROS学习笔记

文章目录常用命令放码过来Python 编程C++编程ROS的Hello World创建msg与srv文件常用命令启动ROS: roscore获取节点信息:rosnode list 列出所有正在运行的节点rosnode info xxx 列出节点信息rosnode pingrosnode machinerosnode kill运行节点rosrun XXX创建ROS功能包:roscreate-pkg XXX std_msgs rospy roscpp编译功能包 :rosmake xxx

2021-05-15 21:38:08 7028 1

原创 【数字图像处理】OpenCV3 扩展模块学习笔记

1. 特征检测方法1.1. 特征定义1.2. 角点检测原理1.2.1. Harris角点检测原理1.2.2. Tomasi角点检测原理1.2.3. SURF特征检测1.2.4. SIFT特征点检测1.2.5. HOG 特征检测1.2.6. LBP 特征提取1.2.6.1. 原始LBP1.2.6.2. 圆形LBP算子1.3. HAAR特征提取1.3.1. 1.什么是haar特征?1.3.2. 2.如何利用特征 区分目标?1.3.3. 3.如何得到这个判决?1...

2021-05-05 17:12:42 211

原创 【数字图像处理】OpenCV3 学习笔记

1. 加载保存显示图像2. 操作图像像素2.1. 方法1:使用 Mat 中对矩阵元素的地址定位的知识2.2. 方法二:使用 Mat::at 函数2.3. 方法三:使用 Mat 的一个模板子类 Mat_2.4. 方法四:使用 Mat::ptr 模板函数3. 图像掩模4. 图像线性变换4.1. 图像线性混合4.2. 图像亮度与对比度4.3. 线性模糊4.3.1. 均值模糊4.3.2. 高斯模糊5. 形态学操作5.1. 腐蚀膨胀5.2. 开闭操作5.3. 顶帽.

2021-05-05 17:10:43 1392 7

原创 【流媒体开发】树莓派开发基于RTMP的网络摄像头

文章目录(一) 预备知识关于RTMP推流1、消息2、块a、块基本头(basic header)b、块消息头(chunk msg header)3、rtmp的消息类型协议控制消息用户控制消息RTMP命令消息数据消息(Message Type=18或15)共享对象消息 (Message Type=19或16)4、实例分析rtmp传输过程(1)握手(2)建立连接(3)建立流(4)发布音视频(二)构建思路(三)编译部署SRS1. 创建文件夹 mkdir srs,将我们的项目存放在该目录下2. 下载SRS源码,这里是

2021-04-23 19:30:39 845

原创 【Linux驱动开发】PS2游戏手柄驱动开发与输入子系统框架

文章目录为什么需要输入子系统框架输入子系统框架驱动层事件处理层注册输入设备函数:注销输入设备函数:驱动实现——初始化(事件支持)驱动实现——报告事件驱动实现——报告结束关于事件报告的实现方法中断实现 常用于实体按键内核定时器实现,用于没有触发信号的输入事件PS2驱动开发硬件原理软件实现为什么需要输入子系统框架我们首先来看字符类驱动框架:1)写file_operations结构体的成员函数: .open()、.read()、.write()2)在入口函数里通过register_chrdev()创建驱动

2021-04-12 11:47:31 1000

原创 【Linux系统编程】Linux系统编程学习笔记

文章目录1. (一)系统参数以及选项1.1. getopt()1.2. getopt_long()2. (二)环境管理2.1. extern char **environ;全局变量2.2. getenv获取环境变量的值2.3. setenv设置环境变量的值3. (三)内存管理3.1. 基础理论3.2. 常见类型3.3. 内存分配库函数3.3.1. malloc3.3.2. calloc3.3.3. realloc3.3.4. free3.3.5. memset3.3.6. memcpy3.3.7. 更接近.

2021-04-10 23:46:08 266

原创 【单片机开发】STM32简易示波器开发

文章目录(一)前言(二)硬件介绍(1)MCU(2)TFT显示屏(3)按键接口(三)驱动编程(1)ADC驱动(2)LCD驱动(3)一路测试PWM(四)FFT原理(四)操作逻辑(五)操作效果0.1KHz0.2KHz0.4KHZ0.8KHz1.6KHz3.2K6.4KHz双通道(六)下载地址(一)前言还记得之前因为个人需要,又不太想花钱买示波器,实现了一个简易的示波器。这个示波器非常明显存在以下几个非常尴尬的问题:1.对于ADC数据的处理方式还是基于查询模式2.最高采样率无法控制,而且最高采样率可能都

2021-04-10 10:59:45 14395 3

原创 【LINUX驱动框架学习】Linux GPIO驱动以及底层实现方式

GPIO(通用目的输入/输出端口)是一种灵活的软件控制的数字信号。大多数的嵌入式处理器都引出一组或多组的 GPIO,并且部分普通管脚通过配置可以复用为 GPIO。利用可编程逻辑器件,或总线(如 I 2 C、SPI)转 GPIO 芯片,也可以扩展系统的 GPIO。不管是何种 GPIO,GPIOLIB 为内核和用户层都提供了标准的操作方法。GPIOLIB 的接口十分简洁。在 GPIOLIB,所有的 GPIO 都是用整形的 GPIO 编号标识。只要获得要操作 GPIO 的编号,就可以调用 GPIOLIB

2021-04-02 21:32:00 4187

原创 【嵌入式LINUX开发】交叉编译QT4.8.6与tslib1.4到IMX283平台

编译tslib(1)建立工作目录(2)编译安装tslib将下载的tslib源码复制到工作目录,并解压:$ unzip tslib-master.zip$ cd tslib-master(3)编译配置tslib,安装路径可以通过 --prefix 参数设置,这里安装到 /usr/local/tslib:$ ./autogen.sh$ ./configure CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ --host

2021-04-02 17:19:52 405

原创 【SQLITE3】基于SQLITE3的银行储蓄管理系统

在好久之前就做过这样一个任务,当时是直接创建一个存储数据的临时文件,实际应用肯定不是这样的,这一次我拿出刚刚学过的sqlite3来完成这样的任务。主要的思路是在登陆的时候一次性将所有用户信息先读到内存中,在退出的时候再一次性将改变的地方写入。需要用到sqlite3的C语言接口如下:rc = sqlite3_open(“bank.db”, &db);打开数据库rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);运行

2021-03-17 13:00:04 537

原创 【SQLITE3】SQLITE3菜鸟笔记

SQLite 安装SQLite 的一个重要的特性是零配置的,这意味着不需要复杂的安装或管理。本章将讲解 Windows、Linux 和 Mac OS X 上的安装设置。在 Windows 上安装 SQLite请访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件。您需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件。创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite.

2021-03-16 23:11:18 1270 1

RCT6_OV2640.zip

基于STM32RCT6最小系统板实现OV2640驱动,可以实现两种显示方式,JPEG模式下通过串口1将图像传输到电脑,RGB模式下通过SPI接口的屏幕实时显示1S 1帧

2021-08-12

MINI-STM32.zip

STM32F103RCT6最小系统板全套设计文件AD21(可以直接送厂打印),引出TFT接口,两路串口,和SPI FLASH接口,支持二次开发

2021-08-12

RobotARM.zip

使用树莓派和PCA9685完成的机械臂控制软件和视觉控制,可以实现识别自动抓取物体

2021-07-31

stm32f407 采集ov2640 上传串口 串口摄像头

采集ov2640 上传串口 串口摄像头 附带上位机软件

2021-07-31

MSP432_CAR.zip

MSP432P401R移植好的KEIL工程,带driver库,是一个反转灯的程序,完成可基本的系统配置

2021-07-31

Hiki_DSO.zip

基于STM32F103RCT6实现的一个简单示波器,最高可以实现双通道,500K的采样率

2021-04-10

海康摄像头Android App二次开发 多屏显示

实现了海康摄像头 Android端的二次开发支持多屏显示,这里将播放部分单独作为空间,可以轻松实现扩展

2020-10-18

ADC示波器.zip

使用STM32c8t6实现一个简单的示波器,可以在50元预算内,做一个示波器。 这一版人机接口没有完善,之后移植RTOS,以及添加其他功能。

2020-09-25

FFMPEG USB摄像头RTMP推流.zip

ffmpeg usb摄像头采集 +6818硬件编码 +ffmpeg RTMP H264推流 需要提前移植QT 和FFMPEG ffmpeg移植不需要添加H264编码

2020-04-25

SRS服务器端.zip

SRS已经编译完成的文件,可以在ubuntu平台上运行,运行脚本已经写好,直接运行./start.sh 就可以建立推流服务器

2020-04-25

mjpegclint.zip

这是一个基于QT的mjpeg-streamer上位机软件,在WINDOWS和LINUX环境中均可以编译通过。下位机需要移植mjpeg-streamer,可以实现视频的播放,采集,图片保存

2020-03-11

NetCam.zip

使用USB摄像头传输,目标机是6818,需要提前移植QT,上位机也使用QT,实现视频的网络播放 还没有解决UDP丢包的问题

2020-03-07

YBank银行储蓄管理系统.zip

应之前一位朋友的请求写了一个银行储蓄管理系统,目前已经可以在WINDOWS和LINUX平台上编译运行成功,各位可以用作自己的课程设计

2019-10-24

STM32 OV7670无FIFO.zip

自己以前搞过一次,但是网上没找到源码自己水平也不高,后来稍微懂一点了自己写了一个。并且添加了一些图像处理的函数。可以实现,亮度饱和度对比度处理 按下KEY1实现二值化,灰度化转换,同时提供颜色识别接口。

2019-08-26

NETDeg.zip

基于QT5写了一个网络调试的上位机,包括UDP,TCP,可以实现文本发送和文件发送,包涵源码和已经打包过的上位机可执行程序

2019-08-17

stm32f4 bootload.zip

该BOATLOAD是从正点原子的程序改变而来,拥有非常好的通用性,可以实现直接通过SD卡烧写STM32程序

2019-07-20

LINUX视频文档资料.zip

韦东山LINUX视频,郭天祥LINUX视频,其中包括一些非常有价值的技术文档

2019-07-18

emwin资源分享.zip

因为做一个emwin的工程积累了大量的学习资料,直接分享一下

2019-07-18

网盘资源分享.zip

嵌入式系统入门经典书籍,包括LINUX入门,进阶,LINUX服务器基本知识,非常难得,还有鸟叔的LINUX,还有一些硬件学习的书籍。附赠PYTHON学习资料

2019-07-18

stm32掌上游戏机工程.zip

本代码综合使用了PS2, 矩阵键盘,显示器为128*128TFT SPI接口,同时使用jbq8900语音模块,实现了俄罗斯方块,贪吃蛇,MP3等功能,并可以基于此进行二次开发 无需自画电路,硬件成本100元左右。同时提供了相关开发资料。

2019-06-14

智能小车蓝牙控制 基于stm32f103

可以用手机APP操控小车的运动 #include "delay.h" #include "sys.h" #include "usart.h" #include "stm32f10x_tim.h" #include "motor.h" #include "PWM.h" int main(void) { u16 t; u16 len; u16 times=0; u8 a[200]; delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 TIM4_PWM_Init(899,0); Motor_12_Config(); //298电机驱动初始化 IN1(Low); IN2(High); IN3(Low); IN4(High);//保持控制正反转电平恒定默认直行 while(1) { Motor_1_STOP(); Motor_2_STOP(); if(USART_RX_STA&0x8000;) {

2019-04-06

智能小车驱动程序源码

智能小车的简单驱动,代码质量很高 #include "motor.h" //导入led头文件 #include "stm32f10x.h" //导入STM32官方库 #include "stm32f10x_rcc.h" //导入STM32的RCC时钟库 #include "PWM.h" //导入PWM //motor1 右轮 对应PA1 PA2 //motor2 左轮 对应 PA11 PA12 //该文件用于马达的驱动信号 控制相关运动状态 void Motor_12_Config(void) //定义初始化函数 { GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO_InitTypeDef结构体 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); //开启引脚时钟 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); //开启引脚时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出功率 GPIO_Init(GPIOA, &GPIO;_InitStructure); //初始化GPIOA的引脚参数,写进 GPIO_ResetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2); //所有引脚拉低 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出功率 GPIO_Init(GPIOB, &GPIO;_InitStructure); //初始化GPIOB的引脚参数,写进 GPIO_ResetBits(GPIOA,GPIO_Pin_11|GPIO_Pin_12); //所有引脚拉低 } //1是右轮,2是左轮 //下面为运动状态函数

2019-04-06

空空如也

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

TA关注的人

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