- 博客(39)
- 收藏
- 关注
原创 STM32学习——入门到放弃篇_1
启动过程,先运行启动文件,启动文件里面有一段汇编代码,先执行汇编代码,接着配置时钟,随即进入主函数。查看单片机主频。
2024-03-24 15:11:37
1178
原创 QT信号与槽实现方式
在QT开发工具UI界面先拖入按钮,然后鼠标右键拖入按钮,点击选中槽,在页面选着需要的信号,然后OK,随即将会跳转到类的.cpp文件,(这种UI+代码结合的方式,会自动去绑定信号与槽)。
2024-03-14 19:29:46
1372
原创 常用通讯协议的理解
1、什么是异步或同步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。发送端可以在任意时刻开始发送字符,因此必须在每一个字符,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来,。则是一种比特同步通信技术,要求,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。进行数据传输时,发送和接收双方要保持完全的同步,因此,要求接收和发送设备必须使用同一时钟。2、什么是半双工,全双工则是一种在,信息可以从A传输到B,从B传输到A,但。
2024-03-05 12:22:10
1432
原创 树莓派驱动编译
引用层open通过文件名找到驱动的设备号————>产生软中断,调用sys_call————>调用虚拟文件系统的sys_open通过设备号去驱动链表找到相应的硬件驱动文件————>执行驱动文件里面的open。sys_call函数根据驱动被设备名去找到设备号---------->虚拟文件系统VAFS(sys_open,sys_write)去找相应驱动引脚的驱动文件open------------->驱动文件open直接操作寄存器。在不同的地方来存储和管理驱动的操作方法和变量,这样的优势就是驱动便于移植。
2024-02-29 14:59:11
1231
原创 树莓派内核编译
没有打包工具mkknlimg,尝试了很多方法都不行,后来发现打包工具mkknlimg被淘汰了,方法1:我重新下载源码Linux-rpi-4.14.y.zip,unzip解压,在文件夹scripts里找到打包工具mkknlimg,将该打包工具拷贝到linux-rpi-5.4.y/scripts,方法2:下载tool_master工具包(树莓派的交叉编译工具链包)找到imagetool-uncompressed.py。在本目录生成一个kernel_new.img文件,这个文件就是要放到sd卡中的文件。
2024-02-27 15:21:49
1407
原创 如何交叉编译
1、进入树莓派库文件目录去找libwiringPi.so这个库 (可以在安装包里的INSTALL文件里知道库的安装路径)或(在跟文件下搜 sudo find / -name libwiringPi.so)然后继续编译代码,发现还是报同样的错,然后查看宿主机libc版本和树莓派libc版本,发现宿主机版本低于树莓派版本。原因:因为我们的库是树莓派编译的,然后从树莓派那里复制到宿主机的,然后导致在宿主机出现这样的报错。1、查看ubuntu20版本的glibc版本 2.31的libc版本(
2024-02-26 15:27:49
1058
原创 动态库与静态库
在 Linux 系统中,可以使用 GCC(GNU Compiler Collection)来生成动态库(shared libraries)和静态库(static libraries)。下面分别介绍如何生成这两种类型的库。
2024-02-24 19:45:58
391
原创 树莓派更新源,以及安装wiringPi库
a.首先,确保你的树莓派已经连接到互联网,并且已经安装了Git版本控制工具。如果没有安装Git,可以通过在终端中输入命令“sudo apt-get install git-core”来安装它。完成以上步骤后,wiringPi库就已经成功安装在你的树莓派上了。你可以在C语言程序中包含wiringPi的头文件,并使用它提供的函数来控制树莓派的GPIO口。如果成功安装,该命令将在终端中输出与wiringPi相关的信息。这将显示树莓派上所有GPIO引脚的状态和编号。这将编译并安装wiringPi库到树莓派上。
2024-02-24 19:01:58
1796
3
原创 FreeRTOS学习——中断管理
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
2024-01-10 17:25:47
905
原创 FreeRTOS——软件定时器
简单可以理解为闹钟,到达指定一段时间后,就会响铃。STM32 芯片自带,达到,也可以生成 PWM 、输入捕获、输出 比较,等等,功能强大,但是由于硬件的限制。也可以实现定时功能,达到定时时间后可调用回调函数,可以在回调函数里处理信息。
2024-01-10 01:13:34
1800
5
原创 FreeRTOS学习——延时函数
任务阻塞后,RTOS系统调用其它处于就绪状态的优先级最高的任务来执行。HAL_Delay 一直不停的调用获取系统时间的函数,直到指定的时间流逝然后退出。故其占用了全部CPU时间。
2024-01-09 23:50:03
805
原创 FreeRTOS学习——任务通知
FreeRTOS 从版本 V8.2.0 开始提供任务通知这个功能,每个任务都有一个 32 位的通知值。按照 FreeRTOS 官方的说法,使用消息通知比通过二进制信号量方式解除阻塞任务快 45%, 并且更加省内存(无需创建队 列)。在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件标志组,可以替代长度为 1 的队列(可 以保存一个 32 位整数或指针值),并且任务通知速度更快、使用的RAM更少!
2024-01-09 23:36:05
2316
原创 FreeRTOS学习——事件标志组
表明某个事件是否发生,联想:全局变量 flag。通常按位表示,每一个位表示一个事件(高8位 不算)事件标志组是一组事件标志位的集合, 可以简单的理解事件标志组,就是一个整数。事件标志组本质是一个 16 位或 32 位无符号的数据类型 EventBits_t ,由 configUSE_16_BIT_TICKS 决定。虽然使用了 32 位无符号的数据类型变量来存储事件标志, 但其,所以说一个事件组!
2024-01-09 18:41:34
624
原创 FreeRTOS学习——信号量
二值信号量其实就是一个长度为1,大小为零的队列,只有0和1两种状态,通常情况下,我们用它来进行互斥访问或任务同步。互斥访问:比如门钥匙,只有获取到钥匙才可以开门。任务同步:比如我录完视频你才可以看视频。计数型信号量相当于队列长度大于1 的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建的时候确定的。在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步,而互斥型信号量用于资源保护。互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有。
2024-01-09 18:41:10
2702
1
原创 FreeRTOS学习——队列
队列又称消息队列,是一种常用于,队列可以在任务与任务间、中断和任务间传递信 息。为什么不使用全局变量?如果使用全局变量,兔子(任务1)修改了变量 a ,等待树獭(任务3)处理,但树獭处理速度很慢,在处理 数据的过程中,狐狸(任务2)有可能又修改了变量 a ,导致树獭有可能得到的不是正确的数据。在这种情况下,就可以使用队列。兔子和狐狸产生的数据放在流水线上,树獭可以慢慢一个个依次处理。:队列中的每一个数据;:队列能够存储队列项目的最大数量;创建队列时需要指定队列长度及队列项目大小。
2024-01-09 18:40:46
1143
原创 FreeRTOS学习——任务调度
1. 高优先级任务,优先执行;2. 高优先级任务不停止,低优先级任务无法执行;3. 被抢占的任务将会进入就绪态。
2024-01-09 18:40:24
3549
原创 FreeRTOS学习——任务创建与删除
任务可以理解为进程/线程,创建一个任务,就会在内存开辟一个空间。比如: 玩游戏、陪女朋友,都可以视为任务 Windows 系统中的 MarkText 、谷歌浏览器、记事本,都是任务。任务通常都含有 while(1) 死循环。
2024-01-09 18:38:21
810
原创 STM32学习——GPIO
GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯,控制以及数据采集的功能。简单来说我们控制GPIO引脚的电平变化,达到我们的各种目的。
2023-12-24 12:15:33
1198
原创 代码阅读工具Source Insight使用
2、找到这个文件夹计算机\HKEY_CURRENT_USER\Software\Source Dynamics\Source Insight\4.0\Paths。4、点击Generate后会自动跳转到路径C:\ProgramData\Source Insight\4.0下,保存key即可(2、打开si,复制si的文件路径: ,然后打开SourceInsight,1、在需要查看的代码路径下先建立一个空文件夹,命名si。,那么需要修改默认路径。确定将7个文件加入工程,加入文件之后,close窗口。
2023-12-21 13:09:31
859
原创 51单片机学习——分文件编程
题目:通过温湿度传感器DHT11获取环境温湿度,并把温湿度通过蓝牙(hc-08)传给手机,并且温湿度能在LCD1602显示。若温度高于23度,打开风扇。把串口中需要的函数写入.h文件,为了在地方能直接调用(uart.h)2.6、两个文件用到公共引脚的封装(config.h)2.1.2、hc-08蓝牙模块(hc08.c)2.5、主函数(main.c)头文件lcd1602.h。蓝牙头文件hc08.h。lcd1602.c文件。头文件 delay.h。头文件dht11.h。
2023-12-14 17:34:00
180
原创 51单片机学习——OLED屏
配置页寻址模式:1、发送cmd:0x20 2、再发送0x02。出现问题:1、雪花屏幕 2、Page0的终止列是Page5起始列。2.1、GDDRAM是位映射静态RAM,保存要显示的位模式。以一列0列(SEG0)为例,Page2由8位组成,组成如下图。1、用字模软件生成对应字符的矩阵。2.4、在OLED屏幕上显示一条线。2.5、在屏屏幕上显示爱你一万年。默认到Page0的0列,若再。B、屏幕VCC连接3V。2、一次给屏幕发送数据。2.4.1、选择列地址显示。2、OLED图像显示。列写入数据后,默认去。
2023-12-14 16:40:32
4200
原创 51单片机学习——IIC协议
IIC总线在传输的过程中一共有三种类型信号,分别为:起始信号,终止信号和应答信号。2.2.1、编程实现起始信号和终止信号。2.3.1、实现应答信号编程。2.4.1、编程实习发送数据。
2023-12-14 16:34:20
92
原创 51单片机学习——串口——4G模块
4、由于4G模块是通过公网去连接我们服务器,而服务器是建立在局域网中的,所以这里我们需要进行内网穿透,将服务器的ip映射到公网(借助软件花生壳)。查看波特率:AT+UART 返回:+OK=115200,NONE。查询心跳包数据:AT+HEARTINFO 返回:+OK=Smart-H。指令:AT+HEARTINFO=1,handsome 成功返回:+OK。更改波特率9600:AT+UART=9600,NONE 返回:+OK。设置成3秒:AT+HEARTM=3 成功返回:+OK。
2023-12-14 16:28:47
3000
1
原创 51单片机学习——非标协议外设——DHT11温湿度传感器
秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后, 等待主机开始信号结束,延时等待20-40us后, 读取DHT11的响应信号。主机拉高延时20-40us后,DHT11模块会将DHT引脚拉低为低电平且持续80us,则检测该处电平,有模块低电平,无模块为高电平。3、模块初始化检测模块是否存在。等待DHT11响应,主机把总线。4.3、传递数据给串口。温湿度传感器(DHT11)4、模块检检测温度湿度。
2023-12-09 22:39:42
1394
原创 51单片机学习——非标协议外设——LCD1602液晶显示屏
检测忙的函数中,databuffer过定义导致,databuffer在头文件下已经定义为P0端口8根数据线。一、LCD1602液晶显示模块学习。6、LCD1602初始化及注意事项。7.6、显示屏第二行不亮BUG原因。7.4、每次写入操作之前的忙检测。5.1、写入地址(或指令)5、LCD内部显示和地址。7.1、初始化液晶显示屏。7、开发液晶显示屏实例。7.2、写入指令操作。7.3、写入数据操作。
2023-12-08 16:27:13
728
原创 51单片机学习——串口——WIFI模块(ESP8266)
使用单片机将AT指令通过串口发送给ESP8266,然后将ESP8266的数据传输给ch-340,使用串口调试助手进行指令的执行情况。2.1、上电后,通过串口输出一串系统开机信息,购买的部分模块可能电压不稳,导致乱码,以ready为准。AT+CIPSTART="TCP","192.168.1.8",8080 //指令。4、如何查看单片机给ESP8266发送的AT指令是否执行成功。2.2、上电后发送AT指令测试通信及模块功能是否正常。3.1、开关网络助手,设立TCP服务器。OK //结果,成功。
2023-12-06 23:35:14
2345
原创 51单片机学习——串口——蓝牙模块(hc-08)
通过hc-340将蓝牙模块与电脑连接,通过STC-ISP串口助手给蓝牙发送更改名称指令(AT+NAME=xxxx),更改成功STC-ISP接收缓冲区显示(OKsetNAME)用到模块:ch-340(串口,USB转TTL)1、hc蓝牙助手下载网站(蓝牙模块(hc-08)软件:STC-ISP。
2023-12-06 23:32:41
975
原创 51单片机学习——中断
2.1、定时器计数初值计算(TH0,TH1)2.2、TMOD寄存器(模式选择)2.6、PWM开发sg_90舵机。2.4、定时器中断控制方式。
2023-12-06 23:27:50
33
原创 C语言学习——共用体、枚举、关键字typedef
uniona、与结构体的区别 (同一内存空间存放类型不同,不同类型的变量共享一块空间)b、结构体元素各自单独空间 共用体元素共享空间,空间大小由最大类型定c、注意:共用体数据覆盖问题d、结构体和共用体联合使用。
2023-11-14 23:39:51
66
原创 C语言学习——结构体
结构体算是一个模板,一般不给赋具体的值,每一项在实际应用中并不是都要使用。练习:输入两个学生的名字,学号,成绩,输出成绩高的学生信息。
2023-11-13 14:24:04
164
原创 C语言学习
/注意scanf输入格式,若为scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入应有:a=,b=,c=c. 16进制输出一般代码写为:printf(“0x%x”,a);%p——一般为打印内存地址,一般以16进制输出,取变量地址运算符&例:printf(“a=%d”,a);//a=就叫做原样输出,%d是替代逗号后面a的值。标准用法例: if(){ } //()里面为判断语句,满足则执行{}里面的内容。
2023-11-10 14:33:06
121
原创 C语言学习——指针
指向数组首元素地址数组名既是首地址指针增量和数组的关系指针和数组名的见怪不怪(面试)A.指针当作数组名,下标法访问B.数组名拿来加数组名和指针的区别(指针可以*p++,数组名不可以*arr++,因为p是指针变量,而数组名对应的是一个指针常量)使用sizeof练习函数封装数组初始化,遍历将数组中的n个元素按逆序存放a、一个整型 int a;b、一个指向整数的指针 int *p;c、一个指向指针的指针,它指向的指针指向一个整形数 int **p;
2023-11-10 14:18:05
688
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人