自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32移植FreeRTOS(图文实操)

目录一、Freertos1、前后台系统2、可剥夺型内核3、Freertos系统简介二、FreeRTOS移植1.在基础工程种新建Freertos文件夹,并且将源码添加到这个文件夹中。2.在poertable文件夹中保留keil 、MemMang 、和 RVDS,其他删除3.在基础工程中新建分组 FreeRTOS_CODE 和 FreeRTOS_PORTTABLE,并且添加.c文件添加头文件.h路径。4.从demo中复制FreeRTOSConfig.h文件5.移植SYSTEM文件,里面包括sys.c usa

2021-08-25 19:18:03 16900 8

原创 海思摄像模组运行sample

1、确保串口正确连接,驱动已经安装,开发板已经上电,网口已经连接2、打开MobaXterm,这是一个比较好用的串口工具,也可以用ssh3、首先点击Session->Serial->波特率设置为115200进入tmp目录里,因为ftp目前只支持tmp目录4、我的目的是想要开发板和PC网络连通5、右击电脑右下角 点击打开网络连接和设置6、更改适配器选项7、右键对应的以太网端口 ...

2021-08-23 16:39:21 1130

原创 STM32驱动NRF24L01无线模块

目录一、模块简介二、工作模式三、主要命令四、配置寄存器五、状态寄存器六、接收模式七、发送模式八、STM32使用NRF24L01模块一、模块简介NRF24L01是NORDIC公司生产的一款无线通信芯片,采用FSK调制,内部集成NORDIC自己的Enhanced Short Burst 协议,可以实现点对点或者1对6 的无线通信,通信速率最高可以达到2Mbps.NRF24L01采用SPI通信。①MOSI 主器件数据输出,从器件数据输入②MISO 主器件数据输入,从器件数据输出③SCK 时钟信号,主

2021-08-23 14:05:50 7757 4

原创 SPI通信

目录一、SPI接口原理二、SPI接口框图三、SPI工作原理四、SPI特征五、从设备引脚管理(NSS)1、软件模式:2、硬件模式:六、时钟信号的相位和极性七、时钟信号的相位和极性八、SPI接口原理1、数据帧格式2、状态标志九、SPI中断十、SPI引脚配置十一、SPI结构体十二、SPI相关库函数十三、SPI配置过程一、SPI接口原理SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI,是

2021-08-23 13:34:42 712

原创 samba服务器的搭建

目录一、Ubuntu端配置1、安装samba2、创建目标文件夹,修改文件夹权限3、修改samba的配置文件4、保存文件后,重启samba服务二、Windows端配置1、"我的电脑" 右键选择 "映射网络驱动器"2、Ubuntu里输入命令,找出ip号3、填入配置信息一、Ubuntu端配置1、安装sambasudo apt-get install sambasudo apt-get install samba-commonsamba是实现Ubuntu和Windows之间通过网络传输实现文件的共享,

2021-07-22 13:50:27 1240

原创 编码规范初体验

基于上文进行编程规范:上文.#include <stdio.h>#include <stdlib.h>/*封装一个接口,把数据写入到文件里*//*1.注意函数的重用性 2.注意对于参数的判断 3.注意格式规范 */int saveDataToFile(unsigned char *dataAddr,long dataSize, const char *fileName){ int nret=0; FILE *fp=N

2021-07-09 20:13:47 119

原创 编程操作YUV像素

这里写目录标题一、概述二、YUV比较常见的图像格式1、==YUV444==2、==YUV420P==3、==YUV420SP==三、对YUV像素进行编程操作程序思路一、概述YUV是一种图片格式(如jpg、bmp),常用于视频及图像处理中。YUV为三个分量。“Y”表示亮度(Luminance或Luma),也就是灰度值。“U”和“V” 表示的是彩色信息,分别为色度和浓度(Chrominance和Chroma)。二、YUV比较常见的图像格式以256*256分辨率为例1、YUV444Y:U:V比例等于

2021-07-01 21:08:23 385 1

原创 arm处理器IO口驱动代码编写(bcm2835)

这里写目录标题上层测试端代码:驱动代码:一、驱动模块编译二、编译测试文件三、将两个文件发送到树莓派上测试四、载入驱动模块五、测试上层测试端代码:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>int main(){ int fd; int cmd; int data; fd

2021-06-19 23:20:07 539 1

原创 驱动代码编译和测试

目录一、交叉编译测试文件及驱动发送至树莓派1、驱动编译与发送2、测试文件交叉编译与发送二、测试驱动1、加载内核驱动2、更改权限3、运行测试文件调用驱动一、交叉编译测试文件及驱动发送至树莓派1、驱动编译与发送驱动框架程序:#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h&gt

2021-06-06 21:37:38 215 1

转载 文件系统基本知识

文件系统1.什么是文件系统? 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 常规认知: 根目录 文件系统是操作系统用于明确存储设备组织文件的方法。 以上说的方法:就是文件管理系统(程序),简称文件系统 2.文件系统(文件管理系统的方法)的种类有哪些? FAT VFAT NTFS EXT1/2/3/4 HFS等

2021-05-25 17:40:46 674

原创 树莓派Linux内核配置、编译以及烧录详细步骤

进入linux-rpi-4.14.y目录第一种方式:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig第二种方式// An highlighted blockvar foo = 'bar';上下左右键进行操作箭头键导航菜单<输入>选择子菜单–>(或空子菜单–)。突出显示的字母是热键。按包含,排除, 模块化功能。按退出,按帮助,按搜索。图例:[*]内置[]

2021-05-23 21:13:13 1443 4

原创 Linux内核开发环境配置

目录一、安装基础工具1、vim2、build-essential软件包3、ifconfig二、内核开发准备1、安装交叉编译工具2、安装相关库3、解压内核源码一、安装基础工具1、vim sudo apt-get install vim按提示输入密码,与y继续进行2、build-essential软件包sudo apt install build-essential包含gcc、g++和make3、ifconfigsudo apt install net-tools二、内核开发准备1

2021-05-23 13:46:39 584

原创 带wiringPi库的交叉编译

带wiringPi库的交叉编译如何进行首先把树莓派的wringPI库传到Ubuntu上来用:(正常是直接在上位机上下载wiringPi库)树莓派的wiringPi库在/usr/lib/目录下1、在树莓派端输入命令,提取wiringPi库scp libwiringPi.so.2.50 xxx@xxx:/xxx/xxx/xxx例如我的是:scp libwiringPi.so.2.50 lhg@10.20.103.13:/home/lhg/lessonPI一定是要拿libwiringPi.

2021-05-22 22:12:20 356

原创 交叉编译概念、配置方法以及使用

目录一、 交叉编译是什么,为什么要交叉编译1、是什么:2、为什么要交叉编译?3、交叉编译需要用到什么工具?二、交叉编译工具链的安装1、临时有效,配置环境变量方法2、永久有效,配置环境变量一、 交叉编译是什么,为什么要交叉编译1、是什么:交叉编译 是在一个平台上生成另一个平台上的可执行代码。我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面

2021-05-22 13:39:27 3757 4

原创 树莓派实现语音识别

目录一、LDV7 语音识别模块1、在LDchip.c文件里添加或修改关键字2、在mian.c程序里修改处理函数二、树莓派串口识别程序:三、LDV7 语音识别模块接线方法:一、LDV7 语音识别模块厂家代码识别大致流程:void ExtInt0Handler(void) interrupt 0 中断处理函数 当LD3320识别成功后,会引发IO口中断 nAsrRes = LD_GetResult(); /*获取结果*/ User_handle(nAsrRes);//用户执行函数 mai

2021-05-20 21:35:07 3038 4

原创 LDV7 语音识别模块使用方法

一、模块参数型号:YS-LDV7名称:一体化语音识别模块规格:43*29.7MM供电电压:5V (内部工作电压 3.3V)待机电流:30MA识别时电流:45MAIO 口输出:高电平为 3.3V通信方式:串口通信(5V TTL 电平,不可直接接 RS232、RS485)单片机参数:型号–>STC11L08XE 、flash–>8k、SRAM–>1280、eeprom–>32k识别词条个数:50 句工作温度:-20 至 60℃二、模块结构介绍本模块实际原理为 1

2021-05-20 21:21:43 4156 9

原创 串口数据交互(树莓派)

目录一、串口配置1、接线2、修改文件:3、重新启动树莓派二、相关功能函数:1、打开并初始串口2、发送一个字符串到串口3、获取串口缓存中可用的字节数4、从串口读取一个字节数据返回三、程序实现1、发送数据到主机2、串口数据通信一、串口配置树莓派CPU内部有两个串口,一个是硬件串口(官方称为PL011 UART),一个是迷你串口(官方成为mini-uart)。在树莓派2B/B+这些老版树莓派上,官方设计时都是将“硬件串口”分配给GPIO中的UART(GPIO14&GPIO15),因此可以独立调整串口的

2021-05-17 21:16:31 1321

原创 linux系统下超声波测距(树莓派)

文章目录一、HC-SR04超声波产品应用领域:主要参数:超声波时序图:二、相关函数1、timeval结构体2、gettimeofday()函数3、硬件初始化函数:4、通用GPIO控制函数:5、设置引脚电平函数三、程序实现:运行效果:一、HC-SR04超声波产品应用领域:1、机器人避障  2、物体测距  3、液位检测  4、公共安防  5、停车场检测超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有4个引脚: VCC (正极)、Trig (触发)、Echo (回

2021-05-16 21:54:19 746

原创 字符串指令控制继电器组(树莓派)

目录一、继电器组二、用到的函数:头文件1:硬件初始化函数:2、通用GPIO控制函数:3、设置引脚电平4、strcmp函数5、memset函数6、gets函数三、运行效果:一、继电器组继电器即编程开关,可通过程序输入高低电平吸合或断开电路该继电器组由四个继电器组成,比起多个单继电器省了一些电源接线使用方法:  VCC接+5v  GND接0V  IN1,IN2,IN3,IN4接GPIO口(低电平为吸合状态)  二、用到的函数:头文件#include <wiringPi.h>//

2021-05-15 20:30:08 317

原创 实时指令控制继电器(树莓派)

目录一、继电器二、需要的函数:1:硬件初始化函数:2、通用GPIO控制函数:3、引脚电平三、程序实现运行效果:一、继电器继电器即编程开关,可通过程序输入高低电平控制吸合断开电路使用方法:  VCC接+3v  GND接负  IN接GPIO口(低电平为吸合状态)二、需要的函数:头文件 #include <wiringPi.h>1:硬件初始化函数:wiringPiSetup();//初始化硬件返回:执行状态,-1表示失败2、通用GPIO控制函数:pinMode (in

2021-05-14 20:46:37 965 2

原创 树莓派外设开发综述

目录一、树莓派的接口: 驱动二、树莓派的接口函数1、硬件初始化函数2、通用GPIO控制函数3、时间控制函数4、中断函数5、多线程6、PWM7、串口WiringPi库(Linux动态库:so 静态库:.a)API 如:printf(c标准库)一、树莓派的接口: 驱动IO口:input output 对主控来说Input:人体,烟雾,火焰,震动等Output:继电器,蜂鸣器PWM:电机调速,灯光调明亮度语音识别模块,液晶屏串口uartIICSPIIIS其他特定硬件的接口:fl

2021-05-13 20:14:25 589 3

原创 Linux库概念及相关编程(面试重点)

目录一.分文件编程二.库知识点三.库的制作四.库的使用 设已有程序:主函数main.c 模块函数func.c 头文件func.h 一.分文件编程好处:分模块的编程思想(网络 a,超声波b ,电机c等等)a.功能责任划分b.方便调试c.主程序简洁二.库知识点一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。(a)静态库静态库文件名的命名方式是“lib

2021-05-11 20:18:06 171

原创 树莓派完整配置步骤

一、通过网络登录树莓派1.树莓派配置WIFIsudo nano /etc/wpa_supplicant/wpa_supplicant.confctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1country=CN network={ ssid="你的无线网名字" psk="密码" key_mgmt=WPA-PSK} network={

2021-05-10 23:27:12 1758

原创 串口方式登录树莓派

一、树莓派刷机首先在树莓派官网下载系统镜像https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit用如图这个软件将系统输入SD卡,大概需要五分钟二、设备破解默认情况,树莓派的串口和蓝牙连接。想办法断开蓝牙连接,把串口用来数据通信1.打开SD卡根目录的"config.txt"这个文件,将以下内容添加在最后一行并且保存。dtoverlay=pi3-miniuart-bt这段代码用于停止了蓝牙,

2021-05-10 21:05:21 295

原创 Linux项目——ftp云盘

客户端远程:1、获取服务器文件 get xxx2、展示服务器有哪些文件 ls3、进入服务器某文件夹 cd xxx4、上传文件到服务器 put xxx本地:1、lls 查看客户端本地文件2、lcd 进入客户端xx文件夹服务端解析指令代码步骤:客户端1、socket2、bind3、listenwhile(1)acceptforkserve_client服务端代码:#include <stdio.h>#include <sys/types.h>

2021-05-09 20:28:07 315

原创 系统编程—网络编程—多方消息收发

服务端代码#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int main(int argc,char **ar

2021-05-08 21:37:02 161

原创 Linux系统编程—网络编程—socket代码实现

socket代码实现一、服务端步骤:1.socket #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int socket(int domain, int type, int protocol);第一个参数domain设置为“AF_INET”。第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。第三个参数设置为0。

2021-05-07 19:40:21 305 1

原创 Linux系统编程—网络编程—socket编程步骤

TCP/UDP对比TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前 不需 要建立连接TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)每一条TCP连接只能是点到点的;UDP支持一对一,

2021-05-06 21:54:25 293

原创 Linux系统编程—线程—线程条件控制实现线程的同步

Linux下C编程的条件变量:条件变量是线程中的东西,就是等待某一条件的发生,和信号一样。条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一起使用。当条件满足的时候,线程通常解锁并等待该条件发生变化,一旦另一个线程修改了环境变量,就会通知相应的环境变量唤醒一个或者多个被这个条件变量阻塞的线

2021-05-05 21:33:46 214 1

原创 Linux系统编程—线程—什么情况造成死锁

死锁产生的原因1、系统资源的竞争通常系统中拥有的不可剥夺资源,其数量不足以满足多个线程运行的需要,使得线程在 运行过程中,会因争夺资源而陷入僵局,如磁带机、打印机等。只有对不可剥夺资源的竞争 才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。2、线程推进顺序非法线程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁。例如,并发线程 P1、P2分别保持了资源R1、R2,而线程P1申请资源R2,线程P2申请资源R1时,两者都 会因为所需资源被占用而阻塞。3、信号量使用不当也会造成死锁。线程间彼

2021-05-04 13:41:52 434

原创 Linux系统编程—线程—互斥锁限制共享资源的访问

互斥锁限制共享资源的访问需求:让线程t1使用的g_data等于3时,退出t1线程程序如下:#include <stdio.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t m;int g_data=0;void *func1(void *arg){ printf("t1:%ld thread is create\n",(unsigned long)pthread_self

2021-04-29 23:14:57 183

原创 Linux系统编程—线程—线程同步之互斥量加锁解锁

互斥量从本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为可运行状态的线程可以对互斥量加锁,其他线程将会看到互斥锁依然被锁住,只能回去等待它重新变为可用。在这种方式下,每次只有一个线程可以向前运行。互斥锁的特点:1、原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库

2021-04-28 23:21:34 321

原创 Linux系统编程—线程—线程共享内存空间的代码验证

线程共享内存空间的代码验证线程默认共享数据段、代码段等地址空间,常用的是全局变量。#include <stdio.h>#include <pthread.h>#include <unistd.h>int g_data=0;void *func1(void *arg){ printf("t1:%ld thread is create\n",(unsigned long)pthread_self()); printf("t1

2021-04-27 20:17:07 155

原创 Linux系统编程—线程—线程创建等待及退出

什么是线程?一个程序内的多个执行线路被称之为线程。更为精确的定义是线程是一个进程内的控制队列。到目前为止我们所看到的所有程序都是作为单个进程来执行的,尽管与 许多其他的操作系统相类似,Linux具有同时运行多个进程的能力。确实,所有的进程至少有一个执行线程。在本书中到目前为止我们所看到的所有进程都只有 一个执行线程。分清fork系统调用与新线程的创建是很重要的。当一个进程执行一个fork系统调用,就创建一个进程拷贝,具有其自己的变量与PID。这个新进程是单独 调度的,而且(通常如此)其执行是与创建他的进

2021-04-26 22:28:27 384 2

原创 Linux系统编程—进程间通信—信号量

#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>#include <unistd.h>// int semget(key_t key, int nsems, int semflg);// int semctl(int semid, int semnum, int cmd, ...);//int se

2021-04-25 18:38:45 239

原创 Linux系统编程—进程间通信—信号携带消息

sigaction函数功能:读取和修改与指定信号相关联的处理动作。函数定义 #include <signal.h> int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);返回值:成功返回0出错返回-1。signal是指定信号的编号。若act指针非空,则根据act修改该信号的处理动作。若oldact指针非空,则通过oact传出该信号原来的处理动作。a

2021-04-24 20:52:46 242

原创 Linux系统编程—进程间通信—信号

#include <signal.h>#include <stdio.h>void handler(int signum){ printf("signum=%d\n",signum); switch(signum){ case 2: printf("SIGINT\n"); break;

2021-04-22 23:53:17 149

原创 Linux系统编程—进程间通信—共享内存

Linux共享内存共享内存就是允许两个或多个进程共享一定的存储区。就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。因为数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干次数据拷贝,所以这是最快的一种IPC。创建共享内存 shmget()绑定共享内存 (映射) shmat()数据脱离共享内存 shmdt()释放共享内存 shmctl()读端代码#include <sys/ipc

2021-04-21 09:36:20 194

原创 Linux系统编程—进程间通信—键值生成及消息队列移除

1.键值生成系统建立IPC通讯 (消息队列、信号量和共享内存) 时必须指定一个ID值。通常情况下,该id值通过ftok函数得到。头文件与函数原型:#include <sys/types.h>#include <sys/ipc.h>key_t ftok( const char * fname, int id )fname就是你指定的文件名(已经存在的文件名),一般使用当前目录,如:key_t key;key = ftok(".", 1); 这样就是将fname设为当

2021-04-20 19:57:58 141

原创 Linux系统编程—进程间通信—键值生成及消息队列移除

1.键值生成系统建立IPC通讯 (消息队列、信号量和共享内存) 时必须指定一个ID值。通常情况下,该id值通过ftok函数得到。头文件与函数原型:#include <sys/types.h>#include <sys/ipc.h>key_t ftok( const char * fname, int id )fname就是你指定的文件名(已经存在的文件名),一般使用当前目录,如:key_t key;key = ftok(".", 1); 这样就是将fname设为当

2021-04-20 19:55:14 203

freertos工程文件以及官方文档.rar

freertos工程文件以及官方文档移植文件等全资料

2021-08-25

VLC音视频软件.rar

VLC视频打开软件

2021-08-23

sample_venc

海思3518e例程

2021-08-23

TFTP软件压缩包.rar

tftp软件

2021-08-23

SPI通信2.4G模块.rar

stm32通过spi协议使用NRF24L01通讯模块

2021-08-23

MobaXterm_Portable_v12.rar

串口工具MobaXterm

2021-07-22

yuvplayer.zip

YUV图片打开工具

2021-07-01

linux-rpi.rar

linux-rpi.rar

2021-05-23

wiringpi.rar

wiringpi库

2021-05-22

交叉编译工具链.rar

交叉编译工具链

2021-05-22

语音识别-配套资料V3.0(20190215).rar

LDV7 语音识别模块厂家资料

2021-05-20

stm32 RTOS.rar

stm32 FreeRTOS框架点灯程序,可直接用

2021-04-16

stm32超声波垃圾桶

stm32f1配合超声波传感器,控制舵机开关垃圾桶,工程项目0错误0警告可直接下载

2021-04-06

震动传感器点灯.rar

基于stm32f1结合震动传感器与继电器开关灯,可直接烧入

2021-04-06

空空如也

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

TA关注的人

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