cancel
Showing results for 
Search instead for 
Did you mean: 

STM32CUBE MX and KEIL5 IDE

Kumar B
Associate II
Posted on March 18, 2018 at 08:30

Hi, I have been using STM32CUBEMX ide for building the code with Keil5 IDE. The issue or bug is the code is working fine when I am placing my code in the main function. But, when I create my own file or outside the main function in it is not affecting the main() function. 

Here is the main function that is working. I have highlighted the working lines with bold letters.

But, when I use the same lines of code in a function or outside the file it is not working why?

int main(void)

{

/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration----------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */

SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */

MX_GPIO_Init();

MX_ADC1_Init();

while (1)

{

HAL_ADC_Start(&hadc1);

adcval=HAL_ADC_GetValue(&hadc1);

Batval=(adcval*2.998)/256;

HAL_ADC_Stop(&hadc1);

HAL_Delay(1000);

}

void my fun(void)

{

HAL_ADC_Start(&hadc1);

adcval=HAL_ADC_GetValue(&hadc1);

Batval=(adcval*2.998)/256;

HAL_ADC_Stop(&hadc1);

HAL_Delay(1000);

}

Can anyone help me out?

15 REPLIES 15
Posted on March 18, 2018 at 08:39

What error do you get? What does not work?

Is the my_fun() called from the main?

What about the Batval/adcval  variables? Are they global to be accessible from the my_fun() - they are not declared inside my_fun()...

Etc, etc, etc...

Kumar B
Associate II
Posted on March 18, 2018 at 09:12

The original post was too long to process during our migration. Please click on the provided URL to read the original post. https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I6uj&d=%2Fa%2F0X0000000bxu%2FpU2exFZUGzkAU20BFV7Tn2_a37JrWCR9SX9hnjZfdgs&asPdf=false
Posted on March 18, 2018 at 09:28

You put the function definition code inside the main so the program shall not compile.

void myfun(void)

{

HAL_ADC_Start(&hadc1);

adcval=HAL_ADC_GetValue(&hadc1);

Batval=(adcval*2.998)/256;

HAL_ADC_Stop(&hadc1);

HAL_Delay(1000);

 

}

Posted on March 18, 2018 at 09:30

Function definition shall be outside the main().

Beside what do you mean by 'not accessible'. Do you refer to these global vars inside the main? Does the program compile?

Posted on March 18, 2018 at 09:13

The original post was too long to process during our migration. Please click on the provided URL to read the original post. https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I6fV&d=%2Fa%2F0X0000000bso%2FiXtnzNbNCzJuNgH97_C1EYk4fc3uJKXLtkVo17kq3VE&asPdf=false
Posted on March 18, 2018 at 10:01

Sorry, I have wrongly, pasted the code. Actually, that function is outside the main function only and the variables adcval and Batval are global. Is something wron with error handlers when I use the funtion outside the main. 

Posted on March 18, 2018 at 10:07

Yes the program compiles and my code works fine with main but not with the function

Posted on March 18, 2018 at 10:11

Could please share what does not work. Be precise.

Posted on March 18, 2018 at 10:15

Please share:

1. The whole code which does not work

2. What is expected

3. What goes wrong