请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F280025C 工具/软件:TI C/C++编译器
您好!
我目前正在使用 TMS320F280025C controlCARD 评估模块。
当在以下代码中执行 free()时,我将遇到非法操作中断。
提供完整的代码供参考。
uint8_t *数据;
数据=(uint8_t *) malloc ((12*total_ic)* sizeof (uint8_t)); for (uint8_t stat_reg = 1;stat_reg< 3;stat_reg++) //为每个 LTC681x 稳压器电压寄存 器执行一次{ DATA_COUNTER = 0; rdstat_reg (stat_reg、total_ic、data); //将原始状态寄存器数据读取到数据[]数组 中(uint8_t CURRENT_IC = 0;CURRENT_IC < TOTAL_IC;CURRENT_IC++) //针对菊花链中的每个 LTC681x 执行 {//如果 (IC->isospi_reverse =false) { c_ic = curry_ic; } 否则 { c_ic = total_ic - curry_ic - 1; } 如果(stat_reg =1) { for (uint8_t stat_inc = curry_stat<0;}if (stat_reg==1); CURRENT_STAT++)//此循环解析状态寄存器中的读回数据, {//它针对寄存器 中的3个 stat 代码中的每个代码循环一次,已解析的 stat_stat = DATA[DATA_COUNTER]+(DATA[DATA_COUNTER+1]<<8); //每个 stat 代码以两个字节的形式接收,并组合在一起以创建解析的状态代码 ic[c_ic].stat.stat_codes[curry_stat]=已解析的 stat; data_counter=data_counter+2; //因为 stat 代码是数据计数 器}的两个字节 ,否则(stat_reg =2) { 已解析的 stat = data[data_counter]+(data[data_counter+1]<<8); //每个 stat 作为两个字节接收,并被组合在一起以创建解析的状态代码 data_counter = data_counter +2; ic[c_ic].stat.stat_codes[3]=已解析的 stat; ic[c_ic].stat.flags[0]= data[data_counter++];ic[c_ic].flags[3]= data_counter+[data_counter.ic].ic+[DATA+].counter.counter.ic]=[DATA+[DATA_counter.counter+]=[DATA+].counter.counter.counter.[IC]=DATA ic[c_ic].stat.mux_fail[0]=(data[data_counter]& 0x02)>1; ic[c_ic].stat.thsd[0]= data[data_counter++]& 0x01; } received_pec =(data[data_counter][<8)+ data[data_counter+1]; //Current_IC 接收到的 PEC 作为第7个和第8个发送 //在6个状态数据字节 DATA_PEC = pec15_calc (BYT_IN_REG、&DATA[CURRENT_IC*NUM_RX_BYT])之后; IF (Received_PEC!= DATA_PEC) { PEC 错误=-1; //pec_error 变量仅设置为负、前提是有 PEC 错误 ic[c_ic].stat.pec_match[stat_reg-1]=1;//在接收到的串行数据 中检测到这些错误} 否则 { ic[c_ic].stat.pec_match[stat_reg-1]=0; } data_counter=data_counter+2; //由于传输的 PEC 代码长度为2个字节,因此 DATA_COUNTER //必须递增2个字节,以指向下一个 IC 状态数据 } FREE (DATA);
我尝试使用以下代码来检查每次是否都会出现此问题;就在之前代码中的 malloc 的上方。
数据=(uint8_t *) malloc ((12)); 数据[0]= 5; FREE (DATA);
但该代码有效、未观察到错误。
此外、变量数据永远不变。 即使在提到的函数调用中也只能作为指针进行访问。
您能否帮助了解此代码可能出错的地方? 或者我需要做什么才能使其正常工作、以及原因。
提前感谢。