Skip to main content
GrantW
Associate III
Apr 15, 2019 10:15 PM UTC
Solved

enum declaration errors trying to compile a CAN app using stm32f4xx_hal_can.c

I'm building a CAN app with STM32CUBEMX and TrueStudio. I'm using interrupts so need to register my calback funcs. I put #define USE_HAL_CAN_REGISTER_CALLBACKS 1 at the top of main.h. The following line in my code:

HAL_CAN_RegisterCallback(&hcan1, HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID, HAL_CAN_RxFIFO0MsgPendingCallback );

is producing the error "HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID undeclared". But it is a value of the enum type HAL_CAN_CallbackIDTypeDef which is declared in stm32f4xx_hal_can.h which is included in main.h. I'm stumped.

This topic has been closed for replies.
Tesla DeLorean
Tesla DeLoreanBest answer
Guru
Apr 15, 2019 11:05 PM UTC

The normal model here is to not explicitly include that file, but rather the top level HAL include file, and enable the sub-level one via #define in the stm32blah_hal_conf.h file​

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..

2 replies

Tesla DeLorean
Tesla DeLoreanBest answer
Guru
Apr 15, 2019 11:05 PM UTC

The normal model here is to not explicitly include that file, but rather the top level HAL include file, and enable the sub-level one via #define in the stm32blah_hal_conf.h file​

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
GrantW
GrantWAuthor
Associate III
Apr 16, 2019 12:34 AM UTC

That worked, thanks. I was following instructions in stm32f4xx_hal_can.c which said I had to do all this register callbacks rigamarole. I took that all out and I'm at least compiling. Will test tomorrow.