自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【LINUX驱动学习】按键中断

(一)关于LINUX中的中断中断是一个处理器的稀缺资源,在系统中非常重要,通过中断能够及时高效的响应外部事件,提高系统的响应能力,增加系统吞吐量。在驱动中使用中断,其实比较简单,先申请中断号,并注册一个中断中断处理程序,在中断程序实现对外部事件的处理。(二)在内核态实现按键对于LED灯的控制代码实现#include <linux/init.h>#include <li...

2019-09-27 20:27:37 341

原创 【LINUX驱动学习】字符类设备驱动

(一)字符类驱动和杂项驱动的区别回顾一下字符驱动编程的基本过程:(1) 首先需要通过 alloc_chrdev_region()获得设备编号;(2) 然后需要通过 cdev_alloc()申请一个 cdev 结构;(3) 接着需要通过 cdev_init()对申请到的 cdev 进行初始化;(4) 最后才能将申请到的 cdev 通过 cdev_add()往系统添加。这样编写驱动稍微显得...

2019-09-27 20:19:15 358

原创 【LINUX驱动学习】杂项字符类设备的注册与使用

对于驱动的学习光看是没有用的,还是得要自己敲一敲代码。杂项设备算是最简单的LINUX驱动那么就从他开始吧。在LINUX中写驱动不同于在单片机中,单片机10-20行可以干好的事情LINUX的驱动可能要写到100-200行,虽然有些麻烦但是也有他的好处。功能的固化可以使你的代码更有价值。其实只要了解大致的框架,真正有用的部分还是单片机里的那一套。实验一:点灯实验之前其实已经点过灯了,但那是用了...

2019-09-25 17:39:46 350

原创 【LINUX驱动学习】LINUX驱动理论

其实很早之前就已经学习了杂项设备驱动的编写,但是之前一直觉得模模糊糊,还是有一些不太理解的地方。最近在看完周立功的一本书后有所启发,开始写一些关于驱动的东西。(一)驱动设备分类Linux 系统中的设备可以分为字符设备、块设备和网络设备这 3 类。字符设备:字符设备是能够像字节流一样被访问的设备,当对字符设备发出读写请求,相应的 I/O 操作立即发生。Linux 系统中很多设备都是字符设备,如...

2019-09-25 17:21:23 276

原创 【TencentOS】内存管理

三)内存管理腾讯为我们提供了内存管理API动态内存管理模块,提供了一套动态管理系统内存的机制,支持用户动态的申请、释放不定长内存块。堆内存管理tos_mmheap_pool_addk_err_t tos_mmheap_pool_add(void *pool_start, size_t pool_size);• 功能描述向堆内存中添加内存池。• 参数解释IN/OUT 参数名 描述...

2019-09-20 18:40:24 489

原创 【TencentOS】事件

3)事件概述事件提供了一种任务间实现同步和信息传递的机制。一般来说,一个事件中包含了一个旗标,这个旗标的每一位表示一个“事件”。一个任务可以等待一个或者多个“事件”的发生,其他任务在一定的业务条件下可以通过写入特定“事件”唤醒等待此“事件”的任务,实现一种类似信号的编程范式事件eventtos_event_createk_err_t tos_event_create(k_event_t...

2019-09-20 18:37:47 438

原创 【TencentOS】信号量

2)信号量信号量是一种实现任务间同步的机制,一般用于多个任务间有限资源竞争访问。通常来说,一个信号量中持有一个整形数值,用以表示可用资源的数量。当一个信号量的可用资源数量大于0时,任务尝试获取该信号量成功,信号量的可用资源数减一;当一个信号量的可用资源数等于0时,任务尝试获取该信号量失败或进入阻塞状态。信号量的这一模式,当可用资源数为1时,可将其用于资源的互斥访问;或者解决生产者-消费者问题中...

2019-09-20 18:34:05 383

原创 【TencentOS】互斥量

(二)任务间通信1) 互斥量互斥量又称互斥锁,一般用于共享资源的互斥排他性访问保护。互斥量在任意时刻处于且仅会处于解锁或锁定状态,当一个任务获取到一把锁后(互斥量锁定),其他任务再尝试获得这把锁时会失败或进入阻塞状态,当该任务释放持有的锁时(互斥量解锁),会唤醒一个正阻塞等待此互斥量的任务,被唤醒的任务将会获取这把锁。在多任务运行环境中,有些共享资源不具有多线程可重入性,对于这类不希望被多...

2019-09-20 18:28:14 356

原创 【TencentOS】任务管理

(一) 任务管理TencentOS tiny内核是单地址空间的可抢占式实时内核,TencentOS tiny内核不提供进程模型,任务对应线程的概念,是最小的调度运行体,也是最小的资源持有单位。任务的本质是一个拥有独立栈空间的可调度运行实体,用户可以在任务的入口函数中编写自己的业务逻辑;多个任务之间可以通过系统提供的任务间通信机制进行同步或者信息传递等操作;每个任务都有优先级,高优先级任务可以抢...

2019-09-19 21:25:40 1612 1

原创 【TencentOS】嵌入式RTOS的新选择

今天在浏览CSDN的推送的时候猛然发现一个消息,说是腾讯开源了新型RTOSTecentOS Tiny!!!github地址:https://github.com/Tencent/TencentOS-tiny看到这个消息自己顿时就就不淡定了,当即放下了手中所有的活,开始着手移植这个今天刚刚开源的国产RTOS。在仔细看完了一些关于TecentOS的一些介绍后,我更不淡定了,我顿时就产生了一个想...

2019-09-19 19:43:58 5496 1

原创 【数字图像处理】基于opencv的图像采集与拼接

最近准备开始着手学习计算机视觉,首先还是从opencv开始学起。在opencv平台首先实现摄像头实时采集图像,按下空格拍照,拍完四张图片后实现图像的简单拼接。1.图像的采集#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>...

2019-09-17 15:22:32 1447

原创 【嵌入式UI开发】嵌入式LINUX直接操作屏幕的方法

之前一直再学习QT操作LCD屏幕的方式,但是后来发现这种方式太过于死板,因为刚刚接触LINUX不久对于LINUX下的显卡操作并不是非常熟悉,但是我知道作为一个设备,LCD一定还有其他方式进行操控,只是非常可惜的是好像几乎没有人这么干过,而且我购买的开发板的教程也没有提到我们该如何进行直接的写屏操作。好在在源码中还是找到了显示的方法。因为在内核里,有一段进行开机LOGO显示的代码,参考这段代码,同时...

2019-09-12 21:50:45 2086

原创 【随笔】入坑半年后对嵌入式的一点认识

对嵌入式的一点认识我们自动化系是一个就业非常轻松的专业,可以让我们从事的行业非常丰富:电子/电气工程师、电气工程师/技术员、自动化工程师、电气工程师、自动控制工程师/技术员、研发工程师、电子工程师/技术员、软件工程师、电子技术研发工程师、设备工程师(调试/安装/维护)、软件工程师、高级软件工程师、嵌入式软件工程师、研发工程师、软件开发工程师、嵌入式软件开发(Linux/单片机/DLC/DSP…...

2019-09-09 22:18:53 2209 1

原创 【开发环境搭建】Windows下的QT+opencv开发环境配置

大概在很早以前就听说过opencv了一直想搞一个玩一玩。后来分别尝试了在ARM平台交叉编译,Ubuntu平台,Windows平台移植了QT+opencv环境。为什么我对QT的环境那么执着呢。一方面确实是QTE的跨平台的特性十分吸引我,而且听说不久以后又将有QT for Mcu 的推出,另外一方面QT Creator 本身就是一个非常优秀的集成开发环境。特别是在LINUX下,QT的代码提示,代码高...

2019-09-08 22:28:55 1788

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&#40; RCC_APB2Periph_GPIOA, ENABLE&#41;; //开启引脚时钟 RCC_APB2PeriphClockCmd&#40; RCC_APB2Periph_GPIOB, ENABLE&#41;; //开启引脚时钟 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关注的人

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