在原子哥的串口程序前加了几个数组定义,加了个对数组处理的函数,出现了HardFault_Handler的错误,不知道怎么解决!!!代码如下
void calDist(float dist[8][8],float real[8],float test[8])
{
for(i=0; i<8;i++)
{
for(j=0; j<8;j++)
{
dist[j]=(test-real[j])*(test-real[j]);
printf("dist[%d][%d]=%d",i,j,dist[j]);
}
printf("\r\n");
}
}
float calMinDis(float dist[8][8],float route[8][8])
{
for(i=0; i<8;i++)
{
for(j=0; j<8;j++)
{
if(i+j==0)
{
route[j]=dist[j];
continue;
}
if(i==0)
{
route[j]=dist[j]+route[j-1];
continue;
}
if(j==0)
{
route[j]=dist[j]+route[i-1][j];
continue;
}
route[j]=route[i-1][j-1];
if(route[j]>route[j-1]) route[j]=route[j-1];
if(route[j]>route[i-1][j]) route[j]=route[i-1][j];
route[j]+=dist[j];
}
}
return route[8-1][8-1];
}
int main(void)
{
float real[8]={1,2,3,4,5,6,7,8};
float test[8]={11,12,13,14,15,16,17,18};
float dist[8][8];
float minDis,route[8][8];
Stm32_Clock_Init(9); //系统时钟设置 !!!!!!错误产生的地方!!!!!!!!!!!
delay_init(72); //延时初始化
uart_init(72,9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
while(1){
printf("begin calDist ");
calDist(dist,real,test);
printf("begin minDisminDis");
minDis=calMinDis(dist,route); ////若是将这个函数注释,则可以解决上述问题!!!!!!!!!!!!!
// printf("minDis=%d",minDis);
}
}
|