本帖最后由 power568 于 2017-7-6 20:43 编辑 今天移植的程序有这么个现象: uint8_t test; void Fun(uint16_t *para); uint16_t Read(void); void Fun(uint16_t *para) { *para = Read(); } 调用函数: Fun((uint16_t)&test); 大家猜,Fun调用会出什么问题? 也许没问题,至少这个程序在STM32F103运行时没有由于这个地方出现问题。 但是在L051上运行时,在Read返回后就进入了HardFault中断。 小菜一碟,慢慢品尝... 之前有见2字节/4字节等的多字节变量转换为单字节访问方式,反过来还真是第一次见, 哈哈哈... |
指针的强制转换不应该是:(uint16_t *)的么???你那样会提示语法错误的吧!!!! |
当然了,至于会出现什么样的事情,我觉得,应该是数据溢出吧!!!! |
编译没有报警和出错提示,数据访问地址出错导致中断产生... |