- 博客(57)
- 收藏
- 关注
原创 BLDC之无感软件控制算法
只不过由于电源电压的 “主导” 作用,反电动势与电源电压方向相反,会抵消一部分电源电压,使得实际加在绕组上的有效电压为 “电源电压 - 反电动势”,但反电动势是客观存在的。d.在定子换相速率加快的过程中,占空比的值也要跟随加快,我们根据前面的 KV 值知识点知道转速和电压值是一个同步关系的,转速提升那么定子绕组俩端的平均电压也需要提升,电压提升实际就是调整输出 PWM 的占空比值。这是因为上桥导通时,电源电压直接施加到 U 相绕组,此时绕组中有电流通过,电能转化为磁场能等,为电机运转提供能量。
2025-09-03 12:08:51
1488
3
原创 BLDC之电路原理
(1)分压电阻网络(R42~R47)R42、R43、R44(33kΩ/1%):三相输入分压上拉电阻,对电机绕组的反电动势信号进行分压降压,匹配后级 ADC 或单片机引脚的电压范围(如 3.3V 系统)。R45、R46、R47(3kΩ/1%):分压下拉电阻,与 R42~R44 构成分压电路,将高压侧(电机绕组)的反电动势信号,转换为单片机可采集的低压信号(如 0~3.3V )。(2)滤波电容(C39、C40、C41,100pF/50V)
2025-08-29 09:44:46
1181
1
原创 RS232、RS485、Modbus详解
首先我们知道串口一般使用的是和处理器一样的电平(TTL电平),但是不同器件在使用串口通信时因为电平标准不一样导致通信时连接很不方便,再加上TTL电平抗干扰能力很差,导致数据在传输过程中容易出错,所以其通信距离也非常短,后来为了解决这一问题,出现了RS232、RS485等串行通信接口标准,其定义核心是电气特性(如信号电压、传输速率、负载能力等)而非数据格式或通信协议。基本概念一种串行通信接口标准,由 EIA(美国电子工业协会)在1962年制定。工作在 物理层(OSI模型的第一层)。多用于点对点、近距离通信
2025-08-13 11:53:29
1144
原创 BLDC之工作原理
BLDC(Brushless Direct Current Motor,无刷直流电机)是一种采用电子换向替代传统机械电刷和换向器的直流电机,兼具直流电机的调速性能和交流电机的结构优势在这之前我们先了解一般电机的分类以及直流有刷电机直流有刷电机(Brushed DC Motor)是一种通过机械电刷与换向器实现电流换向的直流电机,结构简单、控制方便,是最早普及的电机类型之一,广泛应用于玩具、小型家电、汽车雨刮器等低成本、低精度场景。核心结构定子:由永磁体(或励磁绕组)组成,提供固定磁场。
2025-08-10 22:47:20
2287
原创 深入理解_FreeRTOS的内部实现(2)
事件组操作时,,原因和实现如下:关调度器(而非关中断)FreeRTOS 提供 taskENTER_CRITICAL()(关调度器 + 按需关中断,取决于 configKERNEL_INTERRUPT_PRIORITY 配置 )或 vTaskSuspendAll()(仅关调度器 ),来保护事件组的任务级操作(如任务调用 xEventGroupSetBits )。关调度器后,中断仍可正常触发(硬件中断不受影响),但任务无法切换,保证事件组操作的原子性。
2025-06-29 20:37:30
1072
原创 深入理解_FreeRTOS的内部实现(1)
当高优先级任务等待低优先级任务持有的资源时,低优先级任务被中间优先级任务抢占,导致高优先级任务被迫长时间等待,形成 “优先级颠倒” 的现象。
2025-06-29 14:30:20
955
原创 你不得不掌握的ARM_汇编_基础知识
STM32 的存储系统采用寄存器、缓存(Cache)RAM、Flash通过接口扩展的 SDRAM、QSPI Flash 等。
2025-06-26 12:29:35
875
原创 Linux 系统内核结构及树莓派IO口驱动代码交叉编译和调试
用于选择 GPIO 引脚 0 - 9 的功能用于将 GPIO 引脚 0 - 31 设置为高电平用于将 GPIO 引脚 0 - 31 设置为低电平功能配置输出配置清零配置我们在编写驱动程序的时候,IO空间的起始地址是0x3f000000,加上GPIO的偏移量0x2000000,所以GPIO的物理地址应该是从0x3f200000开始的,然后在这个基础上进行Linux系统的MMU内存虚拟化管理,映射到虚拟地址上。
2025-05-24 10:31:16
1054
原创 树莓派内核源码的下载,配置,编译和替换
ubuntu创建共享文件夹可以实现和本地windows先在windows准备一个文件夹来当做共享文件夹。
2025-05-24 00:02:37
1404
原创 Ubuntu 上进行树莓派交叉编译
交叉编译是解决资源受限设备开发、跨平台兼容性和开发效率问题的关键技术。交叉编译是指在一种计算机系统(通常称为 宿主机(Host))上编译生成另一种计算机系统(称为 目标机(Target))可执行的代码或程序的过程。其核心特点是,常用于开发需要在不同架构、操作系统或硬件平台上运行的软件。
2025-05-23 22:26:15
1486
原创 树莓派WiringPi库
功能分类函数原型功能描述参数说明返回值初始化使用 WiringPi 引脚编号方案初始化 WiringPi 库无0(成功),-1(失败)使用 BCM GPIO 引脚编号方案初始化 WiringPi 库无0(成功),-1(失败)使用物理引脚编号方案初始化 WiringPi 库无0(成功),-1(失败)GPIO 操作设置指定引脚的模式(输入 / 输出 / PWM 输出)pin:引脚编号;modeINPUT(输入)、OUTPUT(输出)、PWM_OUTPUT。
2025-05-23 19:03:18
1283
原创 树莓派的刷机和登录
准备一张和一个(SD卡建议准备一张大一点的,我刚开始用的8G的后面一点也不够用然后又换了一张32G的进行数据转移了,看自己需求准备吧学习的话32G应该是够用了)根据树莓派的具体型号来下载对应的版本,我用的是树莓派4B当然也可以直接问你买树莓派的商家要镜像文件和相关资料;第一个是往SD卡写入镜像文件的工具第二个是格式化SD卡的工具把读卡器插上电脑,使用SD Card Formatter选择快速格式化SD卡打开软件选择SD卡对应磁盘符,千万不要选错了然后找到并选择你下载的镜像文件然后点击写入。
2025-05-23 17:43:47
1291
原创 Makefile的编写
为什么要使用makefile:自动化编译:避免手动输入复杂的编译命令尤其是对于大型项目有超多.c文件。增量编译:只重新编译修改过的文件,提高效率。跨平台兼容:在不同系统上保持一致的编译规则。make 工具工程管理器,顾名思义,就是管理较多文件根据文件依赖关系自动编译程序,避免重复编译未修改的文件。检查目标文件是否存在。检查依赖文件是否比目标文件新。若依赖更新或目标不存在,则执行命令重新生成目标。安装makeMakefile 文件Makefile是一个。
2025-05-15 10:30:38
1389
原创 Linux网络编程实现FTP服务器
程序运行,服务端不断接收客户端指令,服务端可同时处理多个客户端接入并对指令作出解析,并把执行结果返回给客户端,客户端根据服务端对指令的解析并把由服务端传递过来的处理信息通过客户端呈现给客户,实现文件的各种操作。Linux网络编程实现的FTP服务器,服务器由服务端和客户端组成,具有浏览远程服务端的文件和浏览客户端本地文件,同时支持对远程服务端文件的删除,存储,归档操作处理,以及客户端对远程服务端文件的上传和下载。1.socket 创建客户端的套接字,构建客户端和服务端发送和接收信息的桥梁。
2025-05-11 19:33:55
630
原创 Linux网络编程
字节序是指数据在计算机内存中存储或传输时字节的顺序。主要有大端字节序(Big - Endian)和小端字节序(Little - Endian)两种。在不同字节序的系统间进行数据传输或共享时,需进行字节序转换,否则会导致数据错误。例如,大端序系统发送的数据,小端序系统接收后需转换字节序才能正确解析。也叫大端序或大字节序。数据的高位字节存于低地址,低位字节存于高地址。
2025-05-09 19:57:03
1148
原创 Linux线程
线程(Thread)也被叫做轻量级进程(Lightweight Process,LWP),它是程序执行流的最小单元。如果把进程看做成一个工厂的话,那么线程就是工厂里的工人,所以一个进程里能够包含多个线程,这些线程会共享进程的大部分资源,像内存空间、文件描述符等,不过每个线程都有自己独立的程序计数器、栈空间和寄存器组。线程能够并发执行,从而提升程序的性能与响应速度。在 Linux 系统中,线程的实现依赖于内核调度器,内核会把线程当作独立的调度单元,按照调度算法来分配 CPU 时间片。
2025-05-07 15:33:59
993
原创 Linux进程间的通信
IPC 即 Inter-Process Communication,也就是进程间通信,它指的是在不同进程之间进行数据交换和协调同步的机制。在操作系统里,每个进程都有自己独立的内存空间,一般情况下不能直接访问其他进程的内存,所以需要借助 IPC 机制来实现进程间的信息交互与协作。进程间通信常用的几种方式1.管道通信:有名管道,无名管道2.消息队列3.共享内存4.信号量5.套接字。
2025-05-05 19:11:25
2014
原创 Linux进程
进程是指在系统中正在运行的一个应用程序的实例,是操作系统进行资源分配和调度的基本单位。它包含了程序执行的上下文环境,包括程序计数器、寄存器、堆栈以及程序代码和数据等。
2025-05-04 15:26:00
1232
原创 Linux文件编程和库的制作
此时main函数的参数argc的值为3,数组argv[0]存放的是./a.out,argv[1]存放的是demo.c,argv[2]存放的是demo1.c。时不能指定缓存的长度,这样就可能造成缓存越界(如若该行长于缓存长度),写到缓存之后的存储空间中,从而产生不可预料的后果;O_CREAT:如果文件不存在,就创建该文件。:文件的路径名,如果只写文件名,就默认当前目录,如果在文件名加上路径,就按照绝对路径来打开文件。例如文件a.c:用户的权限是:可读可写,组用户的权限是:可读可写,其他用户的权限是:可读。
2025-05-03 12:01:23
1141
原创 FreertosHAL库_学习笔记
队列集(Queue Set)是一种用于管理多个队列的机制,本质也是一个队列,只不过里面存放的是各队列的句柄,它允许任务同时等待多个队列中的数据,多队列管理:可以将多个队列组合在一起,通过一个队列集句柄进行统一管理。则在等待的时间里该任务处于阻塞状态,会被放到管理阻塞任务的链表里这时任务调度器在管理就绪态的链表里选择任务时就不会选到该任务,当等待的时间到了时该任务又会被放进就绪态任务链表,当每个函数都阻塞态时空闲任务就会出来处理那些“自杀”的任务,释放他们的栈。:是一种特殊的计数信号量,计数值只能是0或1。
2025-04-13 20:45:36
1309
原创 STM32HAL库_学习笔记
进入CubeMX,先选好芯片,配置时钟源、系统定时、时钟树和其他所需功能,设置工程文件名和保存位置(最好预先新建一个文件夹用来保存工程,最后生成工程。GPIO初始化(通常在CubeMX里配置)main.c 在主函数的while循环里。
2025-04-13 17:47:21
859
原创 列表与列表项
例如,FreeRTOS 的任务就绪列表(pxReadyTasksLists)是一个列表,每个任务的控制块(TCB)中的状态列表项(xStateListItem)会插入到对应的就绪列表中。- 列表项按 "xItemValue"(列表项的值)"升序排列",便于快速插入和查找(如任务优先级调度)。可以看出列表项3插在了列表项1和2之间,说明列表项的 "xItemValue"决定了它在列表中的位置(按升序排列)- pxIndex: 指向列表中的一个列表项,用于遍历列表(如任务切换时遍历就绪列表)。
2025-04-04 17:56:35
1249
原创 任务挂起和恢复
pdFALSE: 恢复运行的任务的任务优先级低于当前正在运行的任务(被中断打断的。该函数的参数依旧是任务句柄,但是该函数有两个返回值。pdTRUE: 恢复运行的任务的任务优先级等于或者高于正在运行的任务(被中断打。断的任务),这意味着在退出中断服务函数以后必须进行一次上下文切换。任务),这意味着在退出中断服务函数的以后不需要进行上下文切换。修改main.c:当震动传感器工作将任务1挂起。在中断服务函数中恢复任务1。任务挂起和恢复API函数。
2025-04-04 14:58:00
355
原创 动、静态创建任务
任务创建和删除API函数xTaskCreat() 、vTaskDelete()函数1.start_task: 用来创建其他两个任务 ,当此任务运行以后会调用删除任务vTaskDelete() 2.task1_task: 普通应用任务3.task2_task: 普通应用任务下面是动态创建任务用串口验证函数的执行:如果要使用静态方法需要将宏 ConfigSUPPORT_STATIC_ALLOCATION 设置为11.start_task: 用来创建两个任务。
2025-04-03 22:52:43
797
原创 FreeRtos简介
为了做到这一点,每个任务都必须有个堆栈,当任务切换的时候将上下文环境保存在堆栈中,这样当任务再次执行的时候就可以从堆栈中取出上下文环境,任务恢复运行。在抢占式调度机制下,当一个高优先级任务进入就绪态时,它会立即抢占当前正在运行的低优先级任务的CPU资源,使低优先级任务进入就绪态或阻塞态,高优先级任务开始运行。前后台系统虽然简单和消耗资源少,但是实时性差,前后台系统各个任务都是排队等待轮流执行,不管多紧急的程序,没有轮到执行就只能排队等候,相当于每个任务的优先级都是一样的,所以在这个时候就需要多系统出马了。
2025-04-03 18:19:13
1004
原创 SPI-NRF24L01
NRF24L01是NORDIC公司生产的一款无线通信芯片,采用FSK调制,内部集成NORDIC自己的Enhanced Short Burst 协议,可以实现点对点或者1对6 的无线通信,通信速率最高可以达到2Mbps. NRF24L01采用SPI通信。①MOSI 主器件数据输出,从器件数据输入②MISO 主器件数据输入,从器件数据输出③SCK 时钟信号,主器件产生④CSN 从器件使能信号⑤CE 使能器件的发送模式或接收模式⑥IRQ 中断信号,发生中断变低电平。
2025-03-30 18:58:54
461
原创 STM32-DMA
1.M - > M: Flash to SRAM, 内部FLASH (CODE)的数据传输到内部的SRAM(变量)2.M -> P : SRAM to 串口 + LED,延时DMA传输数据不需要占用CPU注:当源端数据宽度和目标数据宽度不一样时可参考中文参考手册DMA模块数据对齐表。
2025-03-30 16:47:27
776
原创 SPI协议以及STM32SPI的架构和特性
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省了空间,提供方便,主要应用在EEPROM,FLASH,实时时钟,AD转换器还有数字信号处理直接。SPI接口一般使用四根线:MISO,主设备数据输入,从设备数据输出MOSI,主设备数据输出,从设备数据输入SCLK,时钟信号,由主设备产生CS,从设备片选信号,由主设备控制。
2025-03-30 15:53:25
951
原创 51单片机LCD1602显示温湿度
LCD1602 (LiquidCrystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其他的一些内置特殊符号,还可以有8个自定义字符。显示容量:16X2个字符,每个字符为5*7点阵。R/W :读写,写-高,读-低,E: 使能高电平有效。RS:设置指令/数据,数据-高,指令-低。CGRAM+CGROM(字模库)DDARM数据显示区。DB0-DB7:数据。
2025-03-30 12:34:31
707
1
原创 STM32软件IIC实现OLED显示字符串、汉字、数字和温湿度
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用于专用数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能八位单片机相连接。采用单线制串口行接口,信号传输距离可达20M以上。应用于通暖空调,汽车,自动控制设备,气象站家电 湿度调节器,医疗,除湿器等等。
2025-03-28 10:02:00
676
原创 STM32硬件IIC与OLED使用
OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术 OLED显示和传统的LCD显示不同,其可以自发光,所以不需要背光灯,这使得OLED显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。常用的OLED屏幕有蓝色、黄色、白色等几种。
2025-03-27 22:11:55
1390
原创 IIC协议以及STM32IIC的特性和架构
IIC引脚少,硬件实现简单,可拓展性强,不需要UASRT,CAN通讯协议的外部收发设备,被广泛使用在系统内多个集成电路IC(芯片)间的通讯,采用半双工的通讯方式。IIC一个支持多设备的总线。”总线”指多个设备共用的信号线,在一个IIC通讯总线中,可连接多个IIC通讯设备,支持多个通讯主机及多个通讯从机。一个IIC总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
2025-03-27 21:18:19
1626
原创 51单片机_学习笔记
定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号每隔“一秒”,计数单元的数值就加以,当计数单元数值增加到“设定的闹钟提醒时候”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使得程序跳转到中断服务程序。注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的。注意: 中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同,中断优先级个数不同等等。
2025-03-21 19:41:09
1255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅