单步调试时候发生HardFault_Handler

2019-07-21 06:11发布

1.问题描述:上位机下发一条命令时候我想组一包应答帧给它,于是我就写了下面这样的函数来实现
void GenActFrame(PINS_ACT_FRAME pInsData)
{
    uint8_t CRC;

    pInsData->StdHeader->head.header1  = FRAME_INS_HEAD1;        
    pInsData->StdHeader->head.header2  = FRAME_INS_HEAD2;        
    pInsData->StdHeader->length             = FRAME_LENGTH;           
    pInsData->StdHeader->insType           = FRAME_ACK_TYPE;         
    pInsData->ActCmd->Cmd                   = INS_CMD->Cmd;               
    pInsData->ActCmd->SubCmd              = INS_CMD->SubCmd;            
    pInsData->FrameIndex.index1             = FRAME_INS_INDEX1;                 
    pInsData->FrameIndex.index2             = FRAME_INS_INDEX2;                 
    pInsData->Status                               = 0x00;                       
    pInsData->PraseRst                            = 0x01;                          
    pInsData->CtrStatus                           = 0x00;                       

    CRC = CalCheckSum(pInsData);
    pInsData->InsCRC = CRC;
}

2.我定义了这样的一个类型的数据
PINS_ACT_FRAME SendData;
3.调用
GenActFrame(SendData);//调用这句的时候仅仅是生成了数据包,我并没有将它发到上位机调试工具。
当我没有进入调试模式时候,运行正常,可以循环收到数据,也看到板子上的对应动作了,可以控制状态灯的亮和灭(已经重复多次没问题)。
但是当我进入调试模式想看看数据包有没有生成,把断点打在GenActFrame(SendData);这个函数调用时候,跳到函数里面去,单步执行后就跳到HardFault_Handler了。
4.疑问
(1)我函数这么写语法有问题吗,比如指针作为参数?
(2)为什么正常调用可以运行,单步调试时候出现了HardFault_Handler,希望有经验的前辈指点一下,谢谢。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
szczyb1314
1楼-- · 2019-07-22 06:50
 精彩回答 2  元偷偷看……
Arya
2楼-- · 2019-07-22 07:11
INS_ACT_FRAME SendData;
GenActFrame(&SendData);
美丽的时光机器
3楼-- · 2019-07-22 12:32
yklstudent 发表于 2018-11-16 14:55
定义为变量就可以了,INS_ACT_FRAME替换掉PINS_ACT_FRAME就可以了

我还是用的指针做参数,这样快一些,现在已经弄好了,malloc一块内存给它,用完后再释放就好啦,不过你的回答也提醒了我,还提供了另外的方案,谢谢了~
美丽的时光机器
4楼-- · 2019-07-22 18:21
Arya 发表于 2018-11-16 17:21
INS_ACT_FRAME SendData;
GenActFrame(&SendData);

已经弄好啦
美丽的时光机器
5楼-- · 2019-07-22 21:12
szczyb1314 发表于 2018-11-16 16:44
hardfault错误就是内存访问出错,一般数组越界,野指针操作

是的  我就是对于指针的使用不太熟练导致的,指针没有分配一块内存给它指向就访问错了
whj467467274672
6楼-- · 2019-07-23 01:26
 精彩回答 2  元偷偷看……

一周热门 更多>