MSP430汇编语言温控程序运行异常求助:奇数地址字访问警告
MSP430汇编温控程序故障排查(奇数地址访问警告)
警告翻译与解析
原警告:Warning: A word access on odd address 0x1
中文翻译:警告:在奇数地址0x1处进行字访问
MSP430是16位架构,字(16位)操作必须对齐到偶数地址,直接对奇数地址(比如0x1)执行字加载/存储指令,不仅会触发编译警告,还会导致硬件异常,这十有八九是你程序跑不起来的主要原因。
排查修复步骤
- 定位问题指令:翻遍代码,找所有对
0x1执行字操作的指令——比如mov.w、push.w、pop.w这类带.w后缀的指令,看是不是把字节地址当成字地址用了,或者地址计算错了跳到奇数位。 - 换用对应操作指令:如果目标地址0x1是8位寄存器或内存单元,必须改成字节操作指令(比如
mov.b、cmp.b),绝对不能用字指令碰奇数地址。 - 检查内存与数组:如果是温度数据存储/读取时出的问题,确认数组起始地址是不是偶数,索引计算有没有错——比如索引步长是不是2,别让数组元素落到奇数地址上。
- 重点查核心模块:结合你的程序模块,优先看寄存器初始化和温度数据读写部分,比如是不是误把某个8位寄存器(地址是奇数)用了字访问。
其他可能导致程序失效的排查点
除了这个警告,还得检查这些地方:
- 看门狗关闭指令:确认
WDTCTL的配置是不是真的生效了,别让芯片一直在复位循环里。 - ADC10温度采集配置:检查通道选择、参考电压、转换触发方式有没有设错,不然读不到正确的温度值。
- 定时器中断配置:中断使能位、优先级是不是开对了,中断服务例程里有没有写错寄存器操作,别让中断触发异常。
- LED引脚配置:
PxDIR(方向寄存器)和PxOUT(输出寄存器)是不是对应到了正确的LED引脚,别把方向搞反了。
内容的提问来源于stack exchange,提问作者Julio Acosta-Silverio
相关产品推荐
相关产品推荐

