Arrays in struct

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Arrays in struct

1,733 次查看
andergoyaaguirr
Contributor I

Hello,

i am new with lpc1549 in the om13056 board. I am using it for one of my master's project and i am having few problems.

In some part i am calculating a controller and for that i new some values, i took this part froma bigger code and it works in another microcontroller but apparently not with this one.

this is the part:

typedef struct{
   uint16_t KP[4];
   uint16_t KI[4];
   uint16_t KD[4];
}Regelparameter_t;

for(i=0; i<4; i++)
{
   Regelparameter_ptr->KP[i] = 0x0064;
   Regelparameter_ptr->KI[i] = 0x0064;
   Regelparameter_ptr->KD[i] = 0x0064;
}

The code is okay but whenthe program start to run there is an error and it jumps to this part:

__attribute__ ((section(".after_vectors")))
void HardFault_Handler(void)
{ while(1) {}
}

I have no idea to fix this because if i change this struct it will need to change everything and acording to my project i cant do it.

Thanks in advance.

标记 (4)
0 项奖励
5 回复数

1,488 次查看
thefallguy
Contributor IV

How do you set up Regelparameter_ptr? what is its value? My guess is that you have not set the pointer correctly. 

0 项奖励

1,488 次查看
andergoyaaguirr
Contributor I

Hey, it is a big code and i did not wanted to write everything, Regelparameter_ptr was defined, that is not the problem

volatile Regelparameter_t *Regelparameter_ptr;

The thing is that the very same exact lines worked for an ATmega microcontroller and thaat here it doesnt work. belive me the code should work but it doesnt and the problem is in the for loop or KP, KI and KD definitions.

0 项奖励

1,487 次查看
thefallguy
Contributor IV

You've defined it, but what have you initialised the pointer to? Have you used malloc() or something?

0 项奖励

1,489 次查看
andergoyaaguirr
Contributor I

I have tried malloc() and it doesnt work, same error as before, and tthe thing is that this code worked before in another microcontroller.

0 项奖励

1,492 次查看
thefallguy
Contributor IV

Just because it works on another (8-bit?) micro controller does not mean it is going to work on a different 32-bit micro-controller.

So, it looks like you are going to have to debug it then... But, my guess is that you have not correctly allocated memory for your Regeparameter_ptr. Start by looking at its value, just before you start using it.

0 项奖励