Cortex-M3 HardFault 解决方法求助!!



问题是这样的 

    unsigned char MyIP[4] = {0xC0,0xA8,0x01,0x0B};

    unsigned char RemoteIP[4] = {0xC0,0xA8,0x01,0x28};

  #define IP_PROTOCOL_UDP      0x11              //协议UDP

 #define UDP_HEADER_SIZE      8          //UDP头部的长度 字节个数

typedef struct _psd_hdr
{
   unsigned char psd_src_ip[4];        //源IP
   unsigned char psd_dst_ip[4];        //目的IP
   unsigned char psd_mbz;           //填充字节为0
   unsigned char psd_protocol;       //协议类型
   unsigned short psd_len;           //UDP长度
}psd_hdr;

void PSD_PACKET(unsigned short datalenth)
{
 unsigned char i;

 for(i=0;i<4;i++)
    {
    PSD_HDR.psd_src_ip[i] = MyIP[i];
       PSD_HDR.psd_dst_ip[i] = RemoteIP[i];
    }

 PSD_HDR.psd_mbz = 0x00;

 PSD_HDR.psd_protocol = IP_PROTOCOL_UDP;

    PSD_HDR.psd_len = SwapWord((UDP_HEADER_SIZE + datalenth));
}

程序在执行完此函数之后,就会报:找不到地址0x02,从而进入HardFault  Handler 我查找了相关资料,说明是存储器访问冲突。可是如何解决呢?

我把此函数的调用屏蔽掉,就可以正常运行了,可是我查了这个函数,没有问题啊。。。。。。。

  • 一般来说进入HardFault,有内存越界,或者访问为初始化的外设……

    从你上面这段代码来看,确实没有什么问题,你可以单步跟踪一下,程序

    执行完此函数,接下来做什么?