清源子呀
码龄5年
关注
提问 私信
  • 博客:23,939
    23,939
    总访问量
  • 70
    原创
  • 39,598
    排名
  • 159
    粉丝
  • 13
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2019-07-30
博客简介:

Herry_z的博客

查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    532
    当月
    3
个人成就
  • 获得61次点赞
  • 内容获得12次评论
  • 获得118次收藏
创作历程
  • 6篇
    2024年
  • 66篇
    2023年
成就勋章
TA的专栏
  • 嵌入式Linux学习
    24篇
  • 香橙派-全志H616
    5篇
  • 嵌入式c语言学习
    36篇
兴趣领域 设置
  • Python
    python
  • 编程语言
    c++c语言qt
  • 人工智能
    计算机视觉机器学习深度学习自动驾驶图像处理
  • 网络与通信
    网络协议
  • 嵌入式
    单片机stm3251单片机proteusmcu物联网嵌入式硬件iot嵌入式实时数据库rtdbs
  • 硬件开发
    硬件工程驱动开发fpga开发dsp开发arm开发
  • HarmonyOS
    harmonyos华为od
  • 操作系统
    linuxrisc-v
  • 数学
    动态规划线性代数矩阵概率论拓扑学抽象代数几何学图论傅立叶分析数学建模
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

stm32 GPIO8种输入输出模式

另外3种输入只检测高低电平,不知道具体数值,称为数字信号,模拟输入读取具体电压数值,不经过TTL,称为模拟信号,内部电路不连接上、下拉电阻,电路处于高阻抗模式,I/O不连接外部电路,通过I/O电平来检测外部信号。时,例如按键按下 ->按键按下,引起电平变化,通过I/O,传到芯片,是为输入。连接到外设的特殊功能引脚,如I2C总线通信引脚、故障信号输出等。以上3种输入经过TTL -->过滤电压,转化为高低电平。与外部器件连接时,如I2C总线,用于与其他设备进行通信。,内部下拉电阻(VSS)连接,
原创
发布博客 2024.12.10 ·
1067 阅读 ·
13 点赞 ·
0 评论 ·
21 收藏

write函数的详解与read函数的详解

write函数的详解与read函数的详解-CSDN博客--转载记录一下防止丢失
转载
发布博客 2024.02.24 ·
147 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

char 、unsigned char、const char区别

1.const char的意思是该字符是。比如const char ch = 'a';是告诉编译器,这个当你给这个变量重新赋值的时候,会发出warning,提示用户。const char *和 char const * 以及char * constBjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。( * 读成 pointer to )
原创
发布博客 2024.02.24 ·
1518 阅读 ·
5 点赞 ·
0 评论 ·
15 收藏

为什么.h文件里需要#ifndef、#define和#endif?

有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。#include “a.h”** 和**#include “c.h”**此时就会造成c.h重复引用。
转载
发布博客 2024.02.22 ·
411 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

嵌入式--全志H616--SQlite3--c代码建表插入数据

目标:使用c代码创建新数据库,包含表与数据一)sqlite3_exec2.说明第一个参数sqlite3*是打开的数据库;第二个参数const char *sql是要执行的sql语句;第三个参数int (*callback)(void*para,int argc,char**argv,char**argv_name)是回调函数;第四个参数void *para是传递给回调函数的参数第五个参数char **errmsg是如果sqlite3_exec函数执行发生错误返回的错误信息;
原创
发布博客 2024.01.21 ·
477 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

linux--香橙派下--自动挂载u盘

在/etc/udev/rule.d/ 下创建 .rules文件。这条规则的意思是:如果有一个设备的内核名称为。,则该条件生效,执行后面的赋值:在。里最重要的部分,默认是存放在。所有的规则文件必须以。的设备文件,并把设备文。
原创
发布博客 2024.01.09 ·
869 阅读 ·
7 点赞 ·
0 评论 ·
8 收藏

orangepi——蜂鸣器简单应用和首行缩进设置

编译:gcc blink.c -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt。进入到解压的wiringOP-next中,进入examples文件夹,复制blink.c进行代码修改。命令:sudo vi /etc/vim/vimrc:用超级用户进入修改页面。给build.sh添加运行权限:chmod +x build.sh。运行:./build.sh:就能进行编译生成a.out可执行文件。sudo ./a.out 代码运行。保存为build.sh。
原创
发布博客 2023.12.26 ·
654 阅读 ·
8 点赞 ·
0 评论 ·
5 收藏

orangepi——基于官方外设开发

外设就是普通io口、串口、i2c等。wiringPi外设。
原创
发布博客 2023.12.26 ·
712 阅读 ·
6 点赞 ·
0 评论 ·
10 收藏

orangepi--开发板配置网络SSH登录

ifconfig-------------------------------------查看网络地址。nmcli dev wifi-------------------------------查看wifi。ip addr show wlan0---------------------------查看ip地址。sudo passwd orangepi-------------------------改密码。reboot---------------------------------------重启。
原创
发布博客 2023.12.26 ·
591 阅读 ·
10 点赞 ·
0 评论 ·
7 收藏

Linux--网络编程-ftp(TCP)网络通信-文件交互

strcmp()函数首先将str1字符串的第一个字符的ACSII值减去str2第一个字符的ACSII值(自左向右逐个字符相比,直到出现不同的字符或遇'\0'为止)函数说明:调用fflush()会将缓冲区中的内容写到stream所指的文件中去.若stream为NULL,则会将所有打开的文件进行数据更新。4.2.2 ls:popen文件,fread读取文件,send发送文件到客户端。4.2.1get:open打开文件,read文件,send文件到客户端。3、连接上以后获取用户的输入,对输入的信息进行处理。
原创
发布博客 2023.12.04 ·
302 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

Linux--网络编程

设置能处理的最大连接数,listen() 并未开始接收连接,只是设置socket 的 listen 模式,listen 函数只用于服务端,服务器进程不知道要与谁连接,因此,它不会主动要求与某个进程连接,只是一直监听是否有其他客户进程与之连接,然后响应该连接请求,并对他做出处理,一个服务进程可以同时处理多个客户进程的连接。1.hostlong是网络字节顺序表达的32位数,ntohs中的,n–net网络,to–toh–host主机地址,s–unsigned long无符号的短整型(32位的系统是4字节);
原创
发布博客 2023.11.21 ·
463 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux--线程-条件控制实现线程的同步

pthread_cond_t数据类型代表的条件变量可以用两种方式进行初始化,可以把常量PTHREAD_COND_INITIALIZER赋给静态分配的条件变量,但是如果条件变量是动态分配的,可以使用pthread_cond_destroy函数对条件变量进行去除初始化(deinitialize)。pthread_cond_signal函数将唤醒等待该条件的某个线程,而pthread_cond_broadcast函数将唤醒等待该条件的所有进程。pthread_cond_wait返回时,互斥量再次被锁住。
原创
发布博客 2023.11.05 ·
309 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux--线程--互斥锁

如果调用pthread_mutex_trylock时互斥量处于未锁住状态,那么pthread_mutex_trylock将锁住互斥量,不会出现阻塞并返回0,否则pthread_mutex_trylock就会失败,不能锁住互斥量,而返回EBUSY。前提条件是定义了两把锁,其中一个线程拿到了第一把锁和第二把锁,另外的一个线程拿到了第二把锁和第一把锁,然后他们都在争用锁的使用权,因为都解他们各自拥有的第一把所,所以一直卡在争用锁锁的使用权。c)因为主线程不上锁,在先拿到锁的线程在跑的过程中,主线程也会跟着跑。
原创
发布博客 2023.11.01 ·
307 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

linux--线程共享内存

Linux线程共享内存空间是指多个线程可以访问同一个内存区域,这些线程共享该内存区域的内容。对全局变量进行操作,共享内存空间。
原创
发布博客 2023.10.31 ·
173 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux线程--创建及等待

而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。据统计,总的说来,一个进程的开销大约是一个线程开销的30倍左右,当然,在具体的系统上,这个数据可能会有较大的区别。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方。
原创
发布博客 2023.10.22 ·
198 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言学习--结构体与联合体

各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权(对该内存的读写),各变量共用一个内存首地址。因而,联合体比结构体更节约内存。一个union变量的总长度至少能容纳最大的成员变量,而且要满足是所有成员变量类型大小的整数倍。不允许对联合体变量名U2直接赋值或其他操作。各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则。一个struct变量的总长度等于所有成员的长度之和。一、结构体struct。二、联合体union。
原创
发布博客 2023.10.18 ·
137 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

linux进程间通讯--信号量

如果sem_op的值为负数,而其绝对值又大于信号的现值,操作将会阻塞,直到信号值大于或等于sem_op的绝对值。如果sem_op的值为0,则操作将暂时阻塞,直到信号的值变为0。需要注意的是,信号量的值只能通过PV操作来改变。该函数的主要作用是执行对一个或多个信号量的原子操作,包括P操作(sem减1)和V操作(sem加1),以实现进程间的同步与互斥。IPC_EXCL只有信号量不存在的时候,新的信号量才建立,否则就产生错误。第一个信号的编号为0;功能:创建一个新的信号量或获取一个已经存在的信号量的键值。
原创
发布博客 2023.10.18 ·
216 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux信号 signal()编程

结构体中的 sa_mask 成员,设置在其的信号集中的信号,会在捕捉函数调用前设置为阻塞,并在捕捉函数返回时恢复默认原有设置。因此,可以保证在处理一个给定信号时,如果这个种信号再次发生,那么他会被阻塞到对之前一个信号的处理结束为止。sigqueue 函数不但可以发送额外的数据,还可以让信号进行排队(操作系统必须实现了 POSIX.1的实时扩展),对于设置了阻塞的信号,使用 sigqueue 发送多个同一信号,在解除阻塞时,接受者会接收到发送的信号队列中的信号,而不是直接收到一次。
原创
发布博客 2023.10.12 ·
484 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

嵌入式Linux--进程间通信--共享内存

3、数据交换——写入(strcpy),读取(p指针指向内存空间,print(p))//2.连接共享内存到当前进程的地址空间:成功返回指向共享内存的指针,失败返回-1。6、信号量(不作为进程间通信的方式,控制一个临界资源)//1.创建或获取一个共享内存:成功返回共享内存id,失败返回-1。//4.控制共享内存的相关信息:成功返回0,失败返回-1。1、创建/打开共享内存——shmget。//3.断开与共享内存的连接:成功返回0,失败返回-1。5、干掉共享内存——shmctl。4、释放共享内存——shmdt。
原创
发布博客 2023.09.21 ·
143 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

嵌入式Linux--进程间通讯--消息队列

3、消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。消息队列,是消息的链接表,存放在内核中。特点:1、消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。1、如何创建消息队列(A\B使用同一个队列通信)//创建或打开消息队列:成功返回队列id,失败返回-1。2、如何加消息到队列(队列是链表)//读取消息:成功返回消息数据的长度,失败返回-1。//控制消息队列:成功返回0,失败返回-1。//添加消息:成功返回0,失败返回-1。B:①获取队列②写队列。
原创
发布博客 2023.09.20 ·
207 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多