- 博客(15)
- 收藏
- 关注
原创 秋招项目总结三
1、选择合适的ADC资源2、配置ADC的时钟3、设置ADC的分辨率4、选择ADC的转换模式(共4种)5、选择ADC的触发方式6、设置数据对齐配置7、是否允许DMA请求8、EOC模数转换完成之后标志位是否置1。AD转换器转换完成之后会将EOC进行置位为1(之后可以进行读取ADC数据寄存器),模拟看门狗也会检测ADC转换完成的数据,一同送入到中断输出控制当中进行中断处理。,模拟看门狗的主要作用就是检测ADC转换之后电压阈值是否超出系统设定,然后模拟看门狗触发中断,执行中断当中的操作。开关控制进行ADC的使能。
2025-11-11 13:17:30
630
原创 秋招项目总结二
OV-WATCH项目采用I2C总线的线与逻辑实现多主多从设备通信,通过仲裁机制解决总线竞争问题。系统包含心率检测算法,通过设置425ms峰值间隔过滤假信号,并采用PPG信号转换和计算处理流程。采用双栈算法实现计算器功能,通过字符栈、数字栈和符号栈完成表达式解析。UI系统基于LVGL图形库,使用页面栈式管理实现界面切换,并配有资源生命周期管理机制。ADC配置包含模拟看门狗功能,用于电池电压监测和异常检测。系统采用多消息队列实现任务间通信,并设计了Bootloader与APP的中断向量表切换机制。串口配置支持多
2025-11-11 12:10:09
1004
原创 关于freertos上面运行lvgl的配置(一)
本文介绍了LVGL图形界面编程的四个移植步骤:1)添加工程分组和对应.c文件,注意FreeRTOS_PORT的port.c需根据芯片选择;2)添加头文件路径并处理中断屏蔽;3)针对STM32F4修改stm32f429xx.h文件,删除LVGL提供的定时器时基代码。最后针对内存不足问题给出三种优化方案:1)减小LVGL管理的内存;2)缩小图形缓冲区(需保持运行效果);3)减少FreeRTOS内存分配。这些方法需平衡内存占用与系统性能。
2025-10-16 20:15:35
371
原创 LVGL学习笔记
本文介绍了LVGL图形库的移植流程,重点讲解了无操作系统环境下的移植步骤。主要包括:1)保留核心文件并修改配置文件;2)复制必要文件到工程目录;3)配置输出设备(屏幕)的缓冲模式和显示驱动;4)配置输入设备(触摸屏)的检测和坐标获取;5)提供系统时基;6)在main函数中初始化调用。通过完成这些步骤,可实现基本GUI功能,如在触摸屏上显示可点击按钮。文章参考了正点原子LVGL教学视频,提供了详细的移植指导。
2025-10-16 11:20:42
606
原创 博图西门子PLC标准化和缩放指令结合模拟量应用|结合G120变频器设定电机速度
首先是在设置的0-1500借助标准化公式输入想要电机输出的理想转速,例如750,通过标准化的公式计算得到为0.5占比;“与”运算规则:1 and 1 = 1, 其他情况(1 and 0, 0 and 1, 0 and 0)都等于 0。然后借助缩放公式计算0-16384占比为0.5的数值为8192,将8192这个数值反馈给电机。G120变频器的控制字:一个是QW68控制电机的启停,另外一个是QW70控制电机的速度。最大的转速为16384(在此范围内就可以),给电机设置固定的转速。下是网络部分,是完全一样的)
2025-10-10 23:06:03
552
原创 西门子 G120-1200 实训平台一
交换机作为通讯中枢,各个组成部分通过交换机互相通讯,另外PLC与变频器之间还通过端子信号线相连接,可以实现端子控制,变频器与三相异步电机之间通过信号线相连接来对电动机进行控制。PLC的IP地址要与G120变频器的IP地址处于同一网段,然后再最右侧的硬件目录当中添加G120变频器具体的型号(可以在线访问里面找到也可以在G120变频器的设备上面看到)根据电机设置实际的电压参数380v,转速为1300,参考转速与最大转速设置为1300,电流极限为0.19Arms。QW68控制电机的启停,QW70控制电机的转速。
2025-10-10 22:15:43
389
原创 秋招项目一总结
本文介绍了一款基于STM32F411CEU6的智能手表系统设计,采用FreeRTOS实时操作系统和LVGL图形库。系统集成了多种传感器模块,包括MPU6050手势识别、EM7028心率血氧检测、SPL06-001气压计、LSM303DLHC电子指南针等。重点阐述了系统时钟配置(LSE/HSI/PLL)、任务调度管理(13个优先级任务)、低功耗设计(自动休眠管理)和关键功能实现,如DMA+空闲中断的串口通信、计步算法、心率检测和EEPROM数据存储等。系统采用消息队列实现任务间通信,通过硬件看门狗确保稳定性,
2025-10-09 20:29:59
38
原创 嵌入式软件工程师面经分享(一)
本文总结了嵌入式开发秋招面试中常见的知识点,涵盖任务调度(抢占式、时间片轮转、协作式)、存储管理(Flash特性、最小编程单位)、数据结构(数组/链表区别、指针数组/数组指针)、编程基础(奇偶判断、结构体/联合体区别)、调试工具(逻辑分析仪、示波器等)、通信协议(串口、DMA+空闲中断)、RTOS应用(任务划分、信号量使用)以及错误排查(Hardfault、段错误)等内容。重点解析了嵌入式系统开发中的核心概念和实用技巧,如ADC+DMA配置、任务上下文切换机制等,为面试准备提供了系统性的技术要点梳理。
2025-10-08 22:22:42
528
原创 FreeRTOS中任务优先级配置
本文介绍了FreeRTOS任务优先级配置的原则和实际应用。任务优先级设置遵循紧迫性、关键性、计算量和资源依赖等原则,将任务分为IRQ任务、高优先级后台任务和低优先级时间片调度任务。文章通过代码示例展示了正确使用阻塞函数的重要性,并给出了一个实际项目中13个任务的优先级配置方案。针对优先级反转问题,提出了临时提升低优先级任务优先级的解决方案。最后解释了任务调度的两种规则:不同优先级按优先级执行,同优先级按时间片轮询。全文强调合理设置优先级对保证系统实时性、稳定性和效率的关键作用。
2025-10-06 11:57:58
744
原创 三种低功耗
摘要:智能手表项目采用两种低功耗模式:空闲模式(Idle Mode)和停止模式(Stop Mode)。空闲模式下CPU停止工作但外设保持运行,用于LCD背光控制;停止模式下CPU和大部分外设时钟停止,仅保留RAM供电,通过按键或抬腕检测唤醒。项目实现自动休眠管理系统,通过定时器(0.1s周期)累计空闲时间,分别在10秒和15秒阈值触发不同低功耗模式,并完成外设关闭/重启、时钟配置等关键操作,有效降低系统功耗。唤醒时需重新初始化时钟和外设,确保系统正常运行。
2025-10-05 21:24:36
787
原创 关于串口DMA与Bootloder之间的数据传输
摘要:项目采用USART串口+DMA模式实现固件升级功能。串口配置为全双工模式,波特率自定义,8位数据位,1位停止位,无校验位。DMA工作在外设到存储器模式,自动将串口接收寄存器数据搬运到内存缓冲区(大小3644字节)。与中断模式(逐字节处理)不同,DMA能批量传输数据且不占用CPU资源。整个流程包括:串口接收数据→DMA自动搬运→传输完成中断触发→校验数据→写入Flash→跳转执行新固件。关键配置涉及DMA源/目标地址、传输方向、数据宽度及地址自增设置。
2025-10-04 11:52:06
605
原创 秋招面试必问SPI
摘要:本项目采用SPI同步全双工通信方式驱动TF7735S显示屏。SPI四线包括:SCK(时钟信号)、MOSI(主发从收)、MISO(主收从发)和SS(片选信号)。工作流程为:主设备拉低SS选中从设备,通过SCK同步完成8位数据交换后释放SS。本项目采用SPI模式0(CPOL=0/CPHA=0),即时钟空闲低电平,数据在第一个边沿采样。初始化时配置为双线全双工、8位数据、MSB优先、软件控制片选和2分频时钟。
2025-10-03 19:12:52
323
原创 何时选用队列集
本项目使用队列集(QueueSet)来高效处理任务监听多个异步消息队列的场景。当任务需要从温度、湿度、舵机、电机、光照、LED等6个数据源获取消息且顺序未知时,队列集可避免轮询造成的频繁阻塞。任务通过xQueueSelectFromSet()统一监听,系统自动返回有数据的队列句柄,任务再针对性处理对应数据并上报。队列集适用于多数据源异步通信场景,但在单一数据源或顺序确定的情况下,直接使用xQueueReceive()更高效。该方案有效提升了智能家居系统中多传感器数据采集的实时性和系统性能。
2025-09-26 12:01:55
337
原创 关于FreeRTOS任务堆栈大小如何确定
你在设计这么多的任务块当中,你的每一个堆栈的大小设计的都不一样,他们的大小是如何确定的?捕获最大栈使用量:任务在执行完所有功能后,栈指针会回到相对较高的位置(剩余栈空间最小),此时测量能反映该周期内的最大栈深度。,以应对不可预知的中断嵌套、函数参数变化等特殊情况,确保系统长期运行的稳定性。等函数中阻塞时,栈使用量很小,测量值会偏大,不能反映真实的工作负载。在编码前,分析任务的功能、调用关系、局部变量大小,给出一个。任务堆栈的大小是一个随着项目的开发。的一个阶段,并不是一下子定出来的。、FreeRTOS的。
2025-09-24 22:34:44
335
原创 实时时钟RTC知识点
摘要:RTC计时系统在主MCU断电时通过VBAT供电维持运行。配置时需选择外部低速晶振(LSE)作为时钟源,经预分频(128×256)得到1Hz信号实现秒级计时。HAL库初始化流程包括通用配置(MSPInit)和硬件初始化,使用备份寄存器(如0x5050)标记防止重复初始化导致时间重置。MSPInit负责时钟选择、中断使能等底层配置,反初始化则释放资源。关键函数包括时间/日期设置及周几计算(蔡勒公式),确保断电后时间连续性。
2025-09-23 22:57:30
284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅