验证与调试技巧

[复制链接]
647|1
逢dududu必shu 发表于 2025-9-28 22:39 | 显示全部楼层 |阅读模式
编译时验证
c
运行
// 静态断言检查对齐(C11及以上)
#include <assert.h>
static_assert(((uint32_t)&ws2812_buffer % 4) == 0, "Buffer not 32-bit aligned!");
运行时检查
c
运行
// 启动时检查并报告对齐状态
void check_alignment() {
    uint32_t addr = (uint32_t)ws2812_buffer;
    if((addr % 4) != 0) {
        // 记录错误日志或触发调试中断
        printf("DMA buffer misaligned! Address: 0x%08X\n", addr);
        #ifdef DEBUG
        while(1);  // 调试模式下停在这里
        #endif
    }
}
硬件级验证
使用逻辑分析仪捕捉首帧数据,对比发送数据与预期值
检查 DMA 控制器状态寄存器,确认是否有对齐错误标志
对于 STM32,可观察 DMA_SxCR 寄存器的 PINC 和 MINC 位配置

jcky001 发表于 2025-9-30 12:12 | 显示全部楼层
STM32?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

502

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部