
简介
事在人为,行胜于言
擅长的技术栈
可提供的服务
暂无可提供的服务
本文分析了STM32G070开发中遇到的FLASH擦除失败导致系统死机的Bug。问题根源在于一个定义在文件作用域的类构造函数中过早调用了HAL_TIM_PWM_Start()函数,该操作在main函数执行前修改了RCC寄存器,影响了系统时钟稳定性,进而导致FLASH操作失败。通过仿真发现FLASH状态寄存器始终显示忙状态,最终定位到是呼吸灯类的构造函数在外设初始化前就操作了定时器时钟。解决方法是将

本文介绍了芯海CS32L015C8T6单片机的ADC配置方法。该MCU采用12位精度ADC,具有17个外部和5个内部输入通道,但缺乏DMA功能。文章详细阐述了配置流程:1)设置GPIO模拟输入功能;2)配置ADC参数(包括自动累加功能);3)实现中断处理。重点讲解了ADC单通道中断回调函数的实现方法,并提供了完整代码示例。作者分享了实际开发中的经验,指出官方驱动代码的不足,帮助开发者避免重复造轮子

摘要:本文以STM32G070CBT6单片机为例,详细解析了嵌入式系统中内存和变量的存储管理。128KB的内部FLASH用于存储程序代码、中断向量表和常量,支持通过特定操作进行数据写入。36KB的SRAM则分为栈(存储局部变量)、堆(动态分配内存)和静态存储区(全局变量)三个区域,并配以代码示例说明不同变量的存储位置。文章还强调了查看.map文件进行内存分配验证的重要性,为嵌入式开发者提供了实用的

本文介绍了使用STM32CubeMX配置FreeRTOS操作系统的学习教程。作者指出STM32CubeMX简化了嵌入式开发流程,可以快速生成包含FreeRTOS源码的项目。教程分为两个阶段:核心基础(任务管理、调度、队列、信号量等)和进阶功能(定时器、内存管理、中断等)。作者推荐了学习顺序,并参考了CSDN博主"不秃也很强"的相关教程。该系列将通过由浅入深的方式,帮助开发者系统掌握FreeRTOS

本文介绍了芯海CS32L015C8T6单片机内部FLASH操作方法。该芯片具有64KB FLASH(128个512B扇区)和8KB SRAM,文章详细讲解了FLASH地址定义差异,并提供了基于HAL库的读写函数代码:写入函数包含解锁、擦除(以扇区为单位)、编程(双字写入)和上锁流程;读取函数采用memcpy实现数据复制。文末附有完整代码注释,并提示需要官方支持库可联系作者或芯海官方。

摘要:LM(Levenberg-Marquardt)算法是一种结合梯度下降与高斯-牛顿法优点的非线性优化算法,适用于最小二乘问题求解。其特点包括收敛速度快、数值稳定性好,广泛应用于数据拟合、参数估计等领域。本文通过Python代码示例,展示了使用scipy库中的curve_fit函数实现多项式拟合的过程,并对比了不同多项式阶数的拟合效果。结果表明,高阶多项式通常能获得更好的拟合效果,但需根据实际数

MS1003是一款高精度时间测量芯片(TDC),具有ps级的时间分辨率(1ps时间内光飞行0.3mm),是MS1002的升级版,有更高的精度和更小的封装,配置方式也更丰富,适用于激光雷达、激光测距和脉冲间隔测量。◼自动测量START到STOP之间的时间间隔,无需再配置寄存器◼在非校准模式下,可以测量(小于配置的预期脉冲数)内的任意数量的脉冲◼双通道单精度模式测量最小时间分辨率46ps(光在1ps时









