自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(12)
  • 收藏
  • 关注

原创 C语言结构体成员对齐

摘要:单片机开发中,结构体单字节对齐常用于匹配硬件寄存器或通信协议。通用方法是使用#pragma pack(1)指令强制1字节对齐(需恢复默认对齐)。GCC推荐__attribute__((packed))属性,Keil使用__packed关键字,IAR支持__packed或#pragma pack。需注意:1)非对齐访问可能影响效率或导致异常;2)需通过sizeof验证内存布局;3)硬件接口要求严格对齐。各编译器方法均可实现紧凑排列,其中#pragma pack兼容性最强,专用关键字更简洁。

2025-11-04 10:40:33 342

原创 CAN总线的同步机制分析

摘要: CAN总线的同步机制通过硬同步和重同步确保多节点时序一致性。硬同步仅在帧起始(SOF)触发,强制重启位时间计数以对齐总线跳变;重同步则在帧内通过动态调整相位缓冲段(PHASE_SEG1/2)补偿晶振误差,其幅度受SJW参数限制。两者的核心差异在于:硬同步实现初始对齐,重同步处理后续动态偏差。

2025-11-01 23:34:53 586

原创 定点数与浮点数float差异比较

摘要: 32位浮点数(IEEE 754)与16位定点数(8位整数+8位小数)在数值表示上存在显著差异。定点数通过固定小数点位置实现均匀精度(最小0.00390625),范围较小(-128~127.996),采用补码存储负数,计算效率高,适用于金融等精确场景。浮点数通过动态阶码实现大范围(±3.4×10³⁸)但精度不均匀(有效数字7-8位),独立符号位简化负数处理,依赖FPU运算,适合科学计算。典型例子如:定点数-3.75存储为补码11111100 01000000,而浮点数-9.375通过符号位+阶码/尾数

2025-11-01 12:02:23 511

原创 STM32 DWT外设 、serial studio软件 辅助 测试STM3DSP

DWT实际上是Cortex-M内核的debug工具,中文名为数据观察点单元.其中有一个寄存器CYCCNT,如果使能了DWT,CYCCNT的值就会每隔一个时钟周期+1。可以方便测试一段代码运行消耗的系统时钟周期。使用DWT计数功能需要如下步骤:1.首先要设置寄存器DEMCR中的TRCENA位为1以使能DWT外设。2.清空CYCCNT3.设置DWTCR寄存器中的CYCCNTTENA位为1,启动CYCCNT计数。

2024-04-25 15:57:34 725

原创 STM32 Sleep mode(睡眠)、stop mode(停止)、Standby mode(待机)实验

实验使用STM32F103RBT6最小系统板,实物与原理图如下图,飞线使用外部3.3V电源连接LDO后端VCC_3V3。

2024-02-22 14:18:51 2879 2

原创 STM32 FOC R3_2_SetADCSampPointSectX函数分析

本文分析STM32 FOC库R3_2_SetADCSampPointSectX函数。R3_2_SetADCSampPointSectX用于确认ADC采样时刻。pHandle->pParams_str->hTafter、pHandle->pParams_str->hTbefore

2024-01-12 16:57:20 1081

原创 C语言内联函数定义inline前加static原因

static inline

2024-01-05 18:27:37 1028

原创 STM32 Keil下载后不能自动复位运行

使用STM32H503 和 STM32G070时,碰到Keil下载程序后不能自动复位运行代码。如下图,Flash Download页面Reset and Run已经选中。咨询FAE,得知Keil版本问题,仔细观察发现下图还有一个Pack选项页。Pack选项页如下图,取消Enable选项,重新下载,MCU能自动复位运行。

2023-11-10 11:40:47 1514 1

原创 Keil STM32H503RB 程序下载失败 Invalid ROM Table

STM32H503 Keil MDK

2023-11-07 16:03:12 674

原创 C语言指针加1,与整数加1的区别

C语言指针加1后的值与指针类型有关。调试如下代码加深理解。

2023-10-09 17:14:58 169

原创 LabVIEW串口配置中止符使能与禁用区别

LabVIEW VISA读取启用/停用终止符

2022-06-03 11:13:53 903

原创 MCP2515调试经验01

MCP2515调试

2022-05-18 13:01:43 1372

空空如也

空空如也

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

TA关注的人

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