Skip to main content
CKugl.1
Senior
February 16, 2022
Solved

Storing and retrieving an STM32CubeIDE project in GitHub

  • February 16, 2022
  • 2 replies
  • 2319 views

I have a project (https://github.com/carlk3/Digital-Automotive-Generator-Voltage-Regulator) that I've been developing in STM32CubeIDE on (Ubuntu) Linux. Now I want to move it to STM32CubeIDE on Windows. I'm using GitHub for source code management (SCM), and also, eventually, to share the project. I've tried a few different ways to clone the project from GitHub to Windows, but I haven't been able to come up with a buildable project in STM32CubeIDE. Most recently, I installed and set up EGit (Git integration for Eclipse), and was able to use it to Import the project, but it won't build. I get 3185 errors, 73 warnings. Here is a sample:

../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h:240:20: error: expected declaration specifiers or '...' before 'osThreadId_t'
 240 | #define osThreadId osThreadId_t
 | ^~~~~~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h:510:24: note: in expansion of macro 'osThreadId'
 510 | int32_t osSignalClear (osThreadId thread_id, int32_t signals);
 | ^~~~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c:1791:109: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 1791 | osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout) {
 | ^
../Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h:742:60: warning: type defaults to 'int' in declaration of 'uint32_t' [-Wimplicit-int]
 742 | void vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION;
 | ^~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h:510:46: error: unknown type name 'int32_t'
 510 | int32_t osSignalClear (osThreadId thread_id, int32_t signals);
 | ^~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h:510:46: error: unknown type name 'int32_t'
 510 | int32_t osSignalClear (osThreadId thread_id, int32_t signals);
 | ^~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/include/queue.h:1385:79: error: unknown type name 'BaseType_t'
 1385 | BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
 | ^~~~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h:742:69: error: expected ';', ',' or ')' before 'ulBitsToSet'
 742 | void vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION;
 | ^~~~~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h:743:62: warning: type defaults to 'int' in declaration of 'uint32_t' [-Wimplicit-int]
 743 | void vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION;
 | ^~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h:516:11: error: expected declaration specifiers before 'osEvent'
 516 | os_InRegs osEvent osSignalWait (int32_t signals, uint32_t millisec);
 | ^~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h:516:11: error: expected declaration specifiers before 'osEvent'
 516 | os_InRegs osEvent osSignalWait (int32_t signals, uint32_t millisec);
 | ^~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c:1832:63: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 1832 | uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id) {
 | ^
../Middlewares/Third_Party/FreeRTOS/Source/include/queue.h:1391:1: error: unknown type name 'BaseType_t'
 1391 | BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
 | ^~~~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h:743:71: error: expected ';', ',' or ')' before 'ulBitsToClear'
 743 | void vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION;
 | ^~~~~~~~~~~~~
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h:247:19: error: expected declaration specifiers before 'osTimerId_t'
 247 | #define osTimerId osTimerId_t
 | ^~~~~~~~~~~

What am I missing?

This topic has been closed for replies.
Best answer by CKugl.1

Thanks, Simon.

I found the problem, which was that I used the "Generate peripheral initialization as a pair of .c/.h files per peripheral", so a file named "freertos.c" was generated. In order to export various queue, timer, mutex, and event handles from that file I had created a file name "freertos.h". On Windows, which isn't so picky about case sensitivity, this conflicts with "Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h".

2 replies

SimonF
Senior
October 28, 2022

Hi,

I came across your ticket by chance.

If you have not solve your problem: this can simply be a problem between linux and windows about "LF" and "CRLF" newline.

Maybe you can use a linux to windows file converter. Or maybe there is something done inside Git to make it works correctly.

Regards,

Simon

CKugl.1
CKugl.1AuthorAnswer
Senior
November 18, 2022

Thanks, Simon.

I found the problem, which was that I used the "Generate peripheral initialization as a pair of .c/.h files per peripheral", so a file named "freertos.c" was generated. In order to export various queue, timer, mutex, and event handles from that file I had created a file name "freertos.h". On Windows, which isn't so picky about case sensitivity, this conflicts with "Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h".

SimonF
Senior
November 21, 2022

Glad to hear you found the solution and thanks for sharing.

You should mark your reply as the Answer ;)