自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 【秋招自用】【持续日更ing】STM32总结笔记【含PID小车、飞控等项目】【4.24更新至软件I2C读取温度传感器LM75AD】

嵌入式单片机开发一定没有我们想象的那么复杂,我认为嵌入式开发中,查资料看Datasheet的能力和写代码是同样重要的,当然如果你也和我一样是发烧友,那么和嵌入式密不可分的硬件开发你也一定会感兴趣,后面的项目中也有我对硬件开发的理解。

2024-04-11 15:16:44 1041 1

原创 【讯为Linux驱动开发】7.信号量semaphore

信号量的本质是一个全局变量,值为可以共享资源的最大数比如:我只想同时让一个人访问共享资源,那么信号量的值为1。A访问时,信号量减一,此时B想访问时,看到信号量为0,就休眠挂起。等A释放,使得信号量加一,B可以启动。

2024-06-14 14:57:26 574

原创 【讯为Linux驱动开发】6.自旋锁spinlock

线程A获取自旋锁后,B假如想获取自旋锁则只能原地等待,仍,直到获取自旋锁为止。

2024-06-13 21:07:15 730

原创 【STM32】飞控设计

【垂直运动】当,此时做下降加速飞行当,此时做升高加速飞行当,此时垂直上保持匀速飞行。【偏航飞行】ω4 +ω2 ≠ω就会产生水平旋转【俯仰飞行】当向前飞行当向后飞行【横滚飞行】当向右飞行当向左飞行。

2024-06-13 20:46:37 1546

原创 【讯为Linux驱动开发】5.并发与竞争

并发:一个CPU在一个时间片只能执行一个任务,切换速度很快。并行:双核CPU,真正的同时执行两个任务并行就是并发的理想情况,统称并发。1.中断中修改公共资源2.抢占式并发访问:正在执行的进程随时可能被抢占3.多核处理器并发访问保护共享资源全局变量、驱动设备结构体、共享数据....

2024-06-08 09:52:01 553

原创 【Linux驱动】【手把手配置3568寄存器】点亮RK3568的一颗LED

3568的LED9 :引脚B7。

2024-06-07 12:42:17 770

原创 【讯为Linux驱动开发】4.文件私有数据

前面关于设备号、设备节点、class类和device设备都是用全局变量定义的,多了以后难免杂乱。所以可以创建一个设备结构体,把设备号、设备节点、class类和device设备都放进去。可移植性更高。

2024-06-07 11:16:09 340

原创 【讯为Linux驱动开发】3.内核空间和用户空间

内存空间分为和1.控制硬件资源,提供系统调用接口,保护系统自身安全稳定2.实现业务逻辑1.系统调用2.软中断3.硬件中断1.配合read函数:把内核空间数据给用户空间2.配合write函数:把内核空间数据给用户空间。

2024-06-06 14:23:16 359

原创 【讯为Linux驱动开发】2.注册一个字符设备

dev结构体其中需要关心三个成员变量:所属模块 :文件操作结构体:设备号 :当应用层使用指令open("/dev/hello", HELLO),系统就会进入驱动程序中执行cdev_open函数【问】应用程序和驱动程序的桥梁是什么?设备节点,设备节点创建在/dev目录下。比如 open("/dev/hello" ,HELLO);使用udev机制,在注册设备的时候自动创建,在注销设备的时候自动销毁。THIS_MODULE 和 类的名字。

2024-06-05 19:42:23 1148

原创 【电赛】STM32-PID直流减速电机小车【寻迹+避障+跟随】【更新ing】

PID控制器需要依靠精确的反馈信号来调整其输出,确保电机按照预定的速度和位置运行。直流减速电机具有编码器,所以具有很高的可靠性。

2024-06-05 16:41:32 1800 1

原创 【讯为Linux驱动笔记1】申请一个字符设备

Linux下每个设备都需要有一个专属设备号:主设备号 + 次设备号。

2024-04-25 13:49:42 534

原创 【第六章】STM32 - 软件I2C读取MPU6050

STM32总结超全笔记【秋招自用】

2024-04-25 13:21:57 1067 1

原创 C++内存的分区模型

4个区域:不同区域的数据,有不同的生命周期,灵活编程1.代码区 :存放二进制代码(程序运行前)2.全局区:全局变量、静态变量、常量、在程序结束后,由操作系统释放。3.栈区:由编译器自动编译和释放,存放局部变量和函数中的参数4.堆区:程序员分配和释放。

2024-04-24 13:48:12 390

原创 【第六章】STM32 / GD32 - 软件I2C读取温度传感器LM75AD

最后详细叙述一下通讯过程:1.开始:主设备把SDA从高拉低再把SCL从高拉低,对总线上的从机说:我要开始和你们中的某个人通信了。2.主设备发送要与之通信的从机的7位地址(一般是7位),第八位是读写位(读1写0)3.总线上的从设备把主设备发送的地址与自己的地址比较,如果匹配:从设备将SDA拉低一位表示应答(此时从设备获得SDA的控制权,之前SDA都是主设备控制的)。如果不拉低,SDA为高就表示非应答。4.主设备发送(或接收)数据给从设备。

2024-04-24 13:43:27 1466

原创 【第五章】STM32-ADC模数转换(2.AD多通道+DMA转运实验)

CPU相当于STM32的大脑,对于数据的复制和存储这种“小事情”,完全可以让他的小助手DMA去做。指的是DMA传输的外设基地址,本实验是DMA转运ADC的数据,自然是从ADC1的DR寄存器读数据。DMA将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间的高速数据传输。每次从外设读取或向外设写入数据时,DMA传输的数据大小为16位(2字节),按照规则组的顺序:上一个通道转换的数据会被下一个通道转换的数据所覆盖。这是DMA1可以产生的7个通道的DMA请求 ,每个通道对应不同的外设。

2024-04-22 18:53:00 1288 1

原创 【第五章】STM32-ADC模数转换(1.AD单通道实验)

天平称重物过程是从最重的砝码开始试放,与被称物体进行比较,若物体重于砝码,则该砝码保留,否则移去。在现实世界中,许多物理现象是模拟的,但为了便于计算机处理,通常会通过数据采集设备(如模数转换器,ADC)将模拟信号转换为数字信号。ADC将按照通道号的顺序对设置的多个通道进行转换,并将结果按顺序保存在对应的数据寄存器中。:ADC精度是12位的,但是数据级寄存器存放数据的位宽是16位,所以允许选择数据对齐方式:左对齐右对齐。按照规则组的顺序:上一个通道转换的数据会被下一个通道转换的数据所覆盖。

2024-04-22 12:54:33 1543 1

原创 [Linux内核]BIOS在内存中建立中断向量表和中断服务程序

上电,RAM中空空如也。操作系统在软盘中。所以必须把软盘中的操作系统加载到RAM(内存)。谁来完成?BIOS。

2024-04-19 13:23:41 234 1

原创 第四节:STM32定时器(4.JGA25-370霍尔编码器测速)

STM32定时器的三个模式我们已经学完了,最后还有一个编码器模式。顾名思义是搭配编码器使用的。

2024-04-19 13:18:00 2386

原创 第四节:STM32定时器(3.输入捕获:HC-SR04超声波测距)

首先标记捕获成功,然后获取捕获值(因为相当于第二次捕获到下降沿),此时CCR寄存器的值就是高电平的时间(我们需要!超声波模块向前发送超声波,遇到障碍然后返回,这样一次来回的时间,就是超声波模块引脚高电平持续的时间。如果捕获成功,读取sta此时的值,然后再加上val计算的时间得到总的高电平时间。捕获的持续时间不仅包括了捕获值之后的计数时间,还要加上捕获值之前溢出的计数时间。捕获的持续时间不仅包括了捕获值之后的计数时间,还要加上捕获值之前溢出的计数时间。2.定时器计数值为0。

2024-04-18 17:07:57 1265 2

原创 第四节:STM32定时器(2.输出PWM波控制电机转速)

我觉得在冗长的理论之前,我们首先要对定时器的输出比较功能做一个理解。【问】输出比较用来做什么?应用场景是什么??输出比较,就是可以控制定时器,去比较 CNT 和 CCR 寄存器值的关系,来对输出的电平进⾏置1、置0或翻转的操作,⽤于输出⼀定频率和占空比的 PWM 波形。【问】什么是PWM波?PWM全称为脉冲宽度调制。PWM波输出原理:​当 CNT=CCRx时,IO输出高电平(逻辑1当 CNT=ARR时,定时器溢出,

2024-04-17 14:13:26 1886

原创 第四节:STM32定时器(1.定时中断)

定时器,顾名思义,在STM32中定一个时间,然后计时,时间到,再去做相应动作,这就是。。这就没法顾名思义了,但是这里不展开,简而言之在应用上举个例子:输出比较可以用来控制PWM波,控制电机旋转。输入捕获可以检测电平时间,从而计算出电机当前速度。STM32F103 有众多的定时器,其中包括 2 个(TIM6 和 TIM7)、4 个(TIM2~TIM5)、2 个(TIM1 和 TIM8)首先我们先从最简单的基本定时器开始了解。

2024-04-16 20:41:11 1185

原创 GPIO工作模式

如果输出数据寄存器①的值为 0,经过“输出控制”取反操作后,输出逻辑 1 到 P-MOS 管的栅极,这时 P-MOS 管就会截止,同时也会输出逻辑 1 到 N-MOS 管的栅极,这时 NMOS 管就会导通,使得 IO 引脚接到 VSS,即输出低电平。如果输出数据寄存器的值为 1 ,经过“输出控制”取反操作后,输出逻辑 0 到 N-MOS管的栅极,这时 N-MOS 管就会截止,同时也会输出逻辑 0 到 P-MOS 管的栅极,这时 PMOS 管就会导通,使得 IO 引脚接到 VDD,即输出高电平。

2024-04-09 11:14:40 284

原创 【QT全程干货】编写一个简易串口调试助手(以及封包)

QT编写串口助手并打包部署

2023-09-08 14:06:28 1017 3

原创 【QT】编写一个简单的计算器

QT编写简单的计算器

2023-07-03 21:21:33 1360 2

原创 【IMX6ULL】UBOOT不能从tftp下载zImage:Loading TTTTTTTTTTTTTTTTTTTTTTTTTT

所以ping数字稍微大一点的ip,比如240、245、249什么的。ping一下可以ping通。2)关闭ubantu(ubantu的ip地址和设备是否冲突?),在windows中是否可以ping通?1)关闭开发板(表示开发板的ip必然没办法用了),在ubantu中ping这个IP是否能Ping通?------说明当前网络有两个设备都用到了此ip地址。1)如果有占用,修改Ubantu的地址即可,地址需要保证没有被占用。不能ping通:说明这个ip在当前网段是唯一的。2.ubantu是否可以上网?

2023-04-07 10:48:06 474

原创 【IMX6ULL驱动开发】字符设备驱动开发框架以及测试APP编写

我们新建chrbase.c文件,里面放是我们的驱动模块函数二.字符设备注册与注销对于字符设备驱动而言,当驱动模块加载成功以后需要注册字符设备,同样,卸载驱动模块的时候也需要注销掉字符设备。我们来分析一下这两个函数以及参数:1.字符设备有注册就有注销,成对出现。2.major主设备号,Linux下每一个设备都有一个设备号。name就是设备名字。3.用dev_t的数据类型表示设备号,类型是kernel_dev_t,是一个无符号的u32类型的:高12位主设备号(4096),低20位次设备号。

2023-04-06 12:52:28 243

原创 【IMX6ULL内核移植】网络配置:开发板PING通虚拟机

一定一定一定要看清楚自己设置的桥接模式对应的是哪一个网络,我的是ens32,之前对着ens39调了一晚上没通(ping通才怪)然后开发板通过串口连接电脑,打开MOBAXtern,我的是串口7,复位,按enter进入Uboot命令行。那么来ping一下虚拟机的ip吧,就是我们刚刚在虚拟机设置的(可以用我的),或者ifconfig看一下。然后设置点进去,选择手动,然后输入以下地址(可以按照我的设置,都是可以的)我们打开VMware,虚拟机-设置,里面添加网络适配器,设置为桥接模式。很完美,都在同一网段。

2023-03-31 12:30:26 596

原创 原子IMX6U开发板学习—移植篇1:uboot是什么以及将原子的uboot烧录到开发板中并启动

uboot是什么以及将原子的uboot烧录到开发板中并启动

2023-02-26 18:20:00 480

原创 C语言中打印结果如何保留两位、三位小数以及整数?

C语言中打印结果如何保留两位、三位小数以及整数?

2022-10-28 17:05:07 10879

原创 关于初识C语言的知识和思考笔记

初识C语言

2022-09-24 10:28:50 816 1

空空如也

空空如也

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

TA关注的人

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