cancel
Showing results for 
Search instead for 
Did you mean: 

Timer initialization prompts build error SPC560 test program

AK V
Associate II

Hello,

I have built LED blinky test program in SPC560B-DIS eval, I am setting and clearing LEDs in eval bord. I have introduced delay "osalThreadDelayMilliseconds(500);" between set and clear.

I have used below code for my application, but it throws build error please find attached build error. Please guide to fix the error,

Note if I am commenting line "stm_lld_start(&STMD1,stm0_config);" starts working. but if including throws build error

#include "components.h"

#include "stm_lld_cfg.h"

int main(void)

{

componentsInit();

/* Enable Interrupts */

 irqIsrEnable();

 /* Activates STM0 Driver */

 stm_lld_start(&STMD1,stm0_config);

 /* Enable channels and start global counter */

 stm_lld_enable(&STMD1);

for (;;)

{

pal_lld_setpad(PORT_C, PIN_GPIO34_LED);

osalThreadDelayMilliseconds(500); // Delay 500 ms

pal_lld_clearpad(PORT_C, PIN_GPIO34_LED);

osalThreadDelayMilliseconds(500); // Delay 500 ms

}

}

1 ACCEPTED SOLUTION

Accepted Solutions
Erwan YVIN
ST Employee

Hello Nanda ,

You have forgotten to put the call back associated (Cf Demos)

in your main.c

/*stm0 channel 0 callback*/
void cb_stm0_ch0 (void){
  uint8_t message[]= "STM0 Channel 0 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}
 
/*stm0 channel 1 callback*/
void cb_stm0_ch1 (void){
  uint8_t message[]= "STM0 Channel 1 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}
 
/*stm0 channel 2 callback*/
void cb_stm0_ch2 (void){
  uint8_t message[]= "STM0 Channel 2 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}
 
/*stm0 channel 3 callback*/
void cb_stm0_ch3 (void){
  uint8_t message[]= "STM0 Channel 3 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}

Best regards

Erwan

View solution in original post

6 REPLIES 6
Erwan YVIN
ST Employee

Hello ,

1) you have to configure the components like the application

SPC560BCxx_RLA STM Test Application

2) Put the good clock for B Discovery

3) Regenerate

4) Compile

Best regards

Erwan

AK V
Associate II

Hello Erwan,

Thanks for you reply,

I had closely followed the example, i.e. the SPC560BCxx_RLA STM Test Application, I couldn't find anything, I have generated the files successfully but compiling the files gives the error especially object file linking step step.

Thanks,

Anand

Erwan YVIN
ST Employee

Hello Nandan ,

Could you send me your installation details ?

Best regards

Erwan

Dear Erwan,

Thanks for your prompt reply ,

Please see attached installation details for your reference. hope you can help me out with the problem.

please guide if anything more to be installed.

Thanks in Advance

Anand

Dear Erwan,

Thanks for your prompt reply ,

Please see attached installation details for your reference. hope you can help me out with the problem.

please guide if anything more to be installed.

Thanks in Advance

Anand

Erwan YVIN
ST Employee

Hello Nanda ,

You have forgotten to put the call back associated (Cf Demos)

in your main.c

/*stm0 channel 0 callback*/
void cb_stm0_ch0 (void){
  uint8_t message[]= "STM0 Channel 0 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}
 
/*stm0 channel 1 callback*/
void cb_stm0_ch1 (void){
  uint8_t message[]= "STM0 Channel 1 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}
 
/*stm0 channel 2 callback*/
void cb_stm0_ch2 (void){
  uint8_t message[]= "STM0 Channel 2 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}
 
/*stm0 channel 3 callback*/
void cb_stm0_ch3 (void){
  uint8_t message[]= "STM0 Channel 3 expired!\r\n";
  while (sd_lld_write(&SD1,message,(uint16_t)(sizeof(message)/sizeof(message[0]))) == SERIAL_MSG_WAIT){}
}

Best regards

Erwan