power568 发表于 2017-7-6 20:36:56

STM32L051 进入HardFault中断

本帖最后由 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字节等的多字节变量转换为单字节访问方式,反过来还真是第一次见, 哈哈哈...


MrJiu 发表于 2017-7-7 09:37:46

指针的强制转换不应该是:(uint16_t *)的么???你那样会提示语法错误的吧!!!!

MrJiu 发表于 2017-7-7 09:39:18

当然了,至于会出现什么样的事情,我觉得,应该是数据溢出吧!!!!

power568 发表于 2017-7-7 15:52:34

编译没有报警和出错提示,数据访问地址出错导致中断产生...
页: [1]
查看完整版本: STM32L051 进入HardFault中断