2022-01-06 03:34 PM
I have a program which uses interrupts, but these are in a separate *_it.c file and not in the main.c. So given that MX places all defines, queue, thread, etc in the main.c rather than the main.h how am I supposed to give another file visibility to the item(s)?
I already made the drastic mistake of setting up the *.h file with the information from the *.C, but on the next "Generate Code" everything I did is gone then recognition of the items are gone and I'm back to square 1.
I have setup a queue and in the interrupt plan on sending a message via the queue to the main task. I hate to make everything global so all the files can see them, but I'm at the point where this is the only option I see to get this task done. Since the Queue is only visible to the main.c the queue will not work in the interrupt file. :(
Any suggestions would be appreciated.
void EXTI1_IRQHandler(void)
{
/* USER CODE BEGIN EXTI1_IRQn 0 */
SystemQueue_t SystemQueue;
SystemQueue.Message = eMsgBumperFront; <- Error given the file cannot see the typedef enum in the main.c file
SystemQueue.Data1 = NULL;
SystemQueue.Data2 = NULL;
/* Post the byte. */
xQueueSendFromISR( SystemQueueHandle, ( void * ) &SystemQueue, ( TickType_t ) 10 );
^ the handle for the queue as well
/* USER CODE END EXTI1_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(BUMPER_FRONT_IN_Pin);
/* USER CODE BEGIN EXTI1_IRQn 1 */
/* USER CODE END EXTI1_IRQn 1 */
}
2022-01-06 04:15 PM
Declare them as extern in the file you want to use them in, or in a header file that it includes. There should be a user code section at the top to do so which will remain unchanged on regenerating the code.