- 博客(65)
- 收藏
- 关注
原创 【RTOS】智能家居-中间层
下层模块(如中间层 / 驱动层)等待sem_req,读取p_shared_mem的参数后执行操作,再将结果写回p_shared_mem,最后释放sem_ack;midlayer_xxx_stru:定义具体的 “数据传输格式”,与mmc_ctrl_stru的p_shared_mem配合使用,实现结构化数据的传递。控制任务的核心差异:先 “下发控制指令”(业务层→驱动层),再 “读取执行反馈”(驱动层→业务层),确保控制指令被正确执行;释放驱动层的信号量,触发驱动层执行采集;把采集参数写入共享内存;
2025-12-24 10:42:57
964
1
原创 【RTOS】智能家居-驱动调试&适配层开发
ifndef _AP3216_H_ // 1. 防止头文件重复包含(预处理守卫)// 2. 定义AP3216C的I2C从机地址(7位地址)// 3. 定义AP3216C的关键寄存器地址(寄存器是传感器内部存储配置/数据的单元)#define AP3216C_REG_SYSCONFIG 0x00 // 系统配置寄存器(复位、工作模式)#define AP3216C_REG_IRDATA_LO 0x0A // IR红外数据低8位寄存器。
2025-12-23 17:01:32
833
原创 【RTOS】架构思想→智能家居-顶层业务模块
FreeRTOS 的任务必须是 “特定格式” 的函数 ——void 任务名(void *p),这是系统规定的(不这么写系统识别不了)。初始化(任务启动后只做一次:比如初始化mmc管家);无限循环(任务的核心业务:采集→判断→控制,一直重复)。// 3. 任务入口函数:FreeRTOS调度后会执行这个函数// 3.1 任务启动日志:告诉我们“任务已经跑起来了”(调试用)// 3.2 初始化mmc数据管家:给“管家”分配工作// 第一个管家:管理采集数据(busi_sample_values)
2025-12-21 15:55:37
845
1
原创 【RTOS】处理中断
中断与任务同步:通过二值信号量 uart_rx_sem 实现 “中断触发→任务处理”,避免中断中长时间操作(如打印);FreeRTOS 中断安全 API:中断中必须使用 xSemaphoreGiveFromISR、portYIELD_FROM_ISR 等中断安全函数;HAL 库串口中断接收:HAL_UART_Receive_IT 是一次性的,接收完成后需重新调用才能继续接收;任务管理:初始化任务创建其他任务后自删除,节省系统资源;
2025-12-17 21:55:51
870
原创 【RTOS】任务间通信IPC
一壶水为什么还没有“呜呜”叫?是因为还没烧开,烧开和呜呜叫是同步运动员为什么还没有起跑?是因为他还没听见枪响信号,枪响信号和起跑是同步的任务是解耦的,但又是相互同步的一个任务的开始可能需要别的任务的支持。
2025-12-16 22:30:41
1053
原创 【STM32--智能小车】1. 让小车动起来
先开个头,让小车动起来,明天将进行串口控制小车、蓝牙控制小车、点动控制小车、PWM调速小车欢迎一起学习交流!
2025-12-09 17:49:14
984
原创 【STM32】手把手教你完成“智能台灯”
本篇要完成的,驱动模块包含“按键、蓝牙、超声波、红外人体感应、光线传感器、OLED、定时器、蜂鸣器、LED“
2025-12-08 22:17:53
892
原创 【STM32--平衡车】MPU6050手撕代码——用于测量小车姿态
六轴姿态传感器,加速度 + 陀螺仪MPU6050是由InvenSense公司生产的全球首款整合性六轴运动处理模块。六轴是指MPU6050集成了三轴陀螺仪和一个三轴加速度计,可以实时输出三轴的角度和速度信息。能够测量芯片自身在XYZ三个轴向上的加速度和角速度参数。通过对这些数据进行融合处理,可以进一步计算出设备的姿态角,从而精确感知设备的倾斜和旋转状态。这种能力使 MPU6050 成为许多需要检测自身姿态的应用场景中的核心元件,如平衡车、飞行器、机器人控制等。
2025-12-07 12:10:28
1010
1
原创 【电力电子】根据描述脑绘Buck&Boost
我们在负载端在并联一个电容,开关断开的时候,是不是既给电容充电也要经过负载这个回路,这样当开关闭合的时候,电容给负载供电了,但这样还不算完,这个电路还有一个缺点就是有可能在开关闭合的时候,电容的电倒灌回来,所以为了防止这种现象的发生,我们在这里加一个二极管,反向截止,电流就流不回来了,它就只能老老实实的给负载进行供电,当这个电快要放完的时候,开关再断开,再放电,这样我们的负载就一直持续稳定的得到电源和电感电压的电压了,这就是完整的一个bos的升压电路了,那这个时候你有没有发现得到的电压是多高?
2025-12-06 17:45:44
365
原创 【STM32】第四周学习问题汇总
编码器的供电电压可能和 MCU 不一致(比如编码器 5V 供电,STM32 3.3V)—— 通过上拉电阻的电源选择(接 3.3V),可将编码器的 “高电平” 从 5V 适配到 3.3V,避免 MCU 引脚过压;• 对于硬件I2C控制器(如STM32的I2C外设),软件可以通过寄存器直接读取“一个字节”(比如I2C_RXDR寄存器),但这只是硬件帮你做了“逐位接收+拼接字节”的工作——底层依然是逐位传输的;若为低电平(发送0),则该位保持0(因为data初始为0,不操作即保留0)。
2025-12-05 17:29:39
1142
原创 【STM32--平衡车】编码器——用于测速
其实属于定时器内容,但是都放一块内容太多了~初识 定时器https://blog.csdn.net/2301_76153977/article/details/154427841?速度、方向、位置想象编码器内有两个马盘,一个接入A相,一个接入B相,有所错开正交编码器输出 A/B 两相脉冲(相位差 90°),TIM2/TIM3 的 CH1/CH2 引脚分别接 A/B 相,定时器会根据 A/B 相的上升 / 下降沿自动增减计数 —— 正转时计数增加,反转时计数减少,无需软件中断处理,硬件自动完成,效率极高。
2025-12-05 11:27:13
1145
原创 【STM32--平衡车】TB6612FNG详解——用于电机驱动
TB6612FNG模块——用于电机驱动L9110s:通过引脚,控制电机正转、反转、(PWM)转的多快转的多慢引脚,控制电机正转、反转,控制转速TB6612FNG接线TB6612FNG的PWM信号(时钟)连接STM32的PA8和PA11⬅查产品手册。
2025-12-04 19:42:01
660
1
原创 【matlab】simulink实践经验(12.3)
matlab function中使用fprintf时中文无法输出,会报错,要英文输出。From File1需要的必须是两行的数据,两列的不行,第一行是时间序列,想同时输出仿真时间,可以用clock,或者也可以用ctrl+E模型参数设置。连接物理网络的查表得是PS Lookup Table,要不连不上。系统比较复杂时,使用goto和from能使连线不那么混乱。需要PS-Simulink Converter。需要Simulink-PS Converter。物理信号和信号间连接。信号和物理信号间连接。
2025-12-03 21:55:45
243
原创 【STM32】IIC→OLED显示
同步 串行 半双工主机主动发起信号,从机被动接受,若从机想发送信号,需得到主机允许每个设备都有对应的编号,要先喊一下对应设备的编号,再对它进行通信最常用:一主多从、一主一从STM32有硬件I2C,但是某个IO口已经固定死了,所以一般使用软件I2C进行模拟。
2025-12-03 17:49:17
1319
原创 【STM32】第三周学习问题汇总
答:我们的32单片机寄存器本质上分俩种 一种是32位的 一种是16位的 然后adc的数据寄存器是16位的 但是我们adc分辨率是12位 也就是说转换出来的数据只占据这个寄存器的12位 你是要存靠左还是靠右 靠左你后面读取数据的时候需要右移4位。后面数据进来就直接覆盖前面的数据了,所以adc转换的值要及时取走,所以我们很多时候都是搭配dma和adc一起工作的。答:范围,uint16 0-65535,uint32 很大的一个范围就是了。答:应该用的是hal库的,我导入成了ll库。那我现在给最高位写1。
2025-11-28 09:30:00
234
1
原创 【STM32】在“自动化称重流水线”中学习ADC
想象自己是工厂老板,现在正处于自动化称重流水线~~今天来复习一下ADC!你 (CPU):工厂老板。ADC (智能厨房秤):一台智能秤,能处理两种任务单。规则组任务单:常规称重清单(最多16项)。注入组任务单:VIP紧急插队单(最多4项)。DMA (勤快助理):负责记录常规清单的结果。定时器 (精确闹钟):触发常规清单。紧急按钮 (外部触发):触发VIP插队单。常规任务:每隔一秒,自动称三个盘子(规则通道)。VIP任务:随时响应紧急按钮,立即称一个特殊样品(注入通道),称完后无缝恢复常规任务。想象一下,现实世
2025-11-27 16:21:22
587
原创 【STM32】DMA及三种搬运方式的实现
通过本文的学习,你应该已经掌握了:😮 DMA的基本概念和工作原理😮 STM32F103C8T6的DMA架构和资源😮 DMA的详细配置步骤和参数含义😮 DMA搬运数据的代码书写。
2025-11-25 21:25:56
971
原创 【STM】低功耗
1. 什么是低功耗手环抬腕亮屏,过一会就自动熄灭,这就是低功耗的一个应用1. 什么是低功耗STM32的低功耗()特性是其嵌入式处理器系列的一个重要优势,特别适用于需要长时间运行且功耗敏感的应用场景,如便携式设备、物联网设备、智能家居系统等。在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手,提高设备的续行时间。
2025-11-22 12:30:03
1055
原创 【STM32】BKP&RTC→手把手教你RTC闹钟实验
当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。BKP控制寄存器用来管理侵入检测和RTC校准功能。复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问:通过设置寄存器的PWREN和BKPEN位来打开电源和后备接口的时钟电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。
2025-11-21 14:09:13
890
1
原创 【STM32】矩阵键盘
按键式的有的有引脚标识,R是行,C是列。有的没有引脚标识,可以找商家问下,或者自己看原理图薄膜式的都没有引脚标识。键盘正对自己,引脚是先行后列,从小到大。1.3 矩阵键盘工作原理矩阵键盘由行列两路信号组成矩阵,每个按键连接到行列的交叉点。也就是说识别时一端必须是输出高电平或者低电平,另一端去检测是否是高电平或者低电平。矩阵键盘识别常用方法逐行逐列扫描法1.使列线连接的I/O引脚输出低电平,四条行线所连接的I/O引脚输出高电平。当没有按键按下时,四条行线所连接的I/O。
2025-11-20 09:30:00
1402
原创 【STM32】读写W25Q128实验&SPI
SPI)串行外设接口,是一种高速、全双工、同步的通信总线,使用四根线来连接芯片的管脚。由于其简单易用的特性,越来越多的芯片集成了SPI通信协议。2.1 SPI物理架构SPI工作模式SPI通信分为主设备(Master)和从设备(Slave。一个完整的SPI通信系统需要包含一个主设备和一个或多个从设备。主设备提供时钟信号,从设备接收时钟信号。所有的读写操作都由主设备发起。当存在多个从设备时,通过各自的片选信号进行管理。SPI。
2025-11-19 08:30:00
1423
原创 【STM32】ESP8266
ESP8266是一个非常强大的WIFI模块,可以利用串口与单片机进行通讯,从而编程实现控制ESP8266。利用 ESP8266可以访问一些API,获取天气信息或者完成网络授时,也可以连接云平台进行开发。不过因为是串口传输,速度较慢,不能用来传输图像、视频这些大容量的数据,但是传些传感器数据还是绰绰有余的。本篇讲述以下两种调试方法USB转TTL工具单片机调试这种就是在项目中最常用的方式了。需要将ESP8266。
2025-11-18 16:58:10
1100
原创 【STM32】第二周学习问题汇总
若项目要换引脚,可能是原引脚坏了,可能是任务重新分配了,直接在定义里改就行了,不用一个一个重新查找修改查找修改。答:把端口号改8083,另一边连接服务器的端口也改8083,8080端口被占用了。若以上三步都尝试过了,怀疑此模块坏了,换个新的模块。中断产生:由于RXNE中断已使能,产生中断请求。中断产生:由于IDLE中断已使能,产生中断请求。
2025-11-14 09:00:00
933
原创 【STM32】定时器&PWM→呼吸灯、舵机
PWM波形(,脉冲宽度调制波形)是一种占空比可变的脉冲波形。这种调制方式通过改变脉冲的宽度来控制电路中的信号强度和频率。具体来说,PWM波形中的高电平持续时间和低电平持续时间可以根据需要进行调整,从而实现对模拟信号电平的数字编码。市面上常见的舵机型号有SG90MG90SMG995MG996R等等,主要是扭矩大小、工作电压大小、齿轮材质塑料或金属的不同。一般分为180度和360度:180度:可以控制旋转角度、有角度定位。上电后舵机自动复位到0。
2025-11-06 00:30:00
1752
原创 【STM32】中断
中断是单片机正在执行程序时,由于内部或外部事件的触发,打断当前程序,转而去处理这一事件,当处理完成后再回到原来被打断的地方继续执行原程序的过程。
2025-11-05 08:00:00
1135
原创 【STM32】智能排队控制系统
继电器,可以被形象地比作一个开关能够通过,实现电路的控制和信号的传递。与普通的物理开关相比,继电器具有更高的可靠性和灵活性,能够应对复杂的电路控制需求。
2025-11-04 16:45:05
873
1
原创 【STM32】第一周学习问题汇总
答:前面两个是nvic的配置,后面是回调函数,可以点到回调函数的那里按f12跳转过去,最上面有注释。答:结构体里面压根不管你要赋值的是PB还是PA,要确定PA还是PB的是这个函数。答:摸一下怪热的,凉凉再重新插。检查是否有接线接错,下载太频繁,松动了。答:编码格式改成gb2312。(过几天更新一期中断讲解)
2025-10-31 16:37:33
378
原创 【大话数据结构】第三章 线性表(上)
线性表(List):零个或多个数据元素的有限序列。元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继线性表强调是有限的,小朋友班级人数是有限的,元素个数当然也是有限的线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。以前在顺序结构中,每个数据元素只需要存数据元素信息就可以了。现在链式结构中,除了要存数据元素信息外,还要存储它的后继元素的存储地址。
2025-10-24 18:24:48
726
原创 【C/C++】自定义函数 是否需要 有无参数?有无返回值?return什么?
语法形式ret_type fun_name(形式参数)ret_type,函数返回的类型,若不用返回,可用voidfun_name,函数名{},函数体。
2025-10-11 00:15:00
245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅