Я работаю с STM32F103 и у меня возникают проблемы при вызове timer_callback.Я работаю над CANopen_node и внес некоторые изменения в стек, потому что я работаю с HAL.Когда я инициализирую модуль CAN, используя структуры с функцией типа CO_init (CAN_HandleTypeDef CANbaseAddress,uint8_t nodeId, uint16_t bitRate)
, все идет хорошо.Но когда я включаю и запускаю прерывание от таймера, я теряю все, что есть у инициализации модуля CAN.
Кто-нибудь знает, почему я теряю значения моего модуля CAN при выполнении обратного вызова;код:
COO is static variable.
in COO variable
typedef struct{
CO_CANmodule_t *CANmodule[1]; /**< CAN module objects */
CO_SDO_t *SDO[CO_NO_SDO_SERVER]; /**< SDO object */
CO_EM_t *em; /**< Emergency report object */
CO_EMpr_t *emPr; /**< Emergency process object */
CO_NMT_t *NMT; /**< NMT object */
CO_SYNC_t *SYNC; /**< SYNC object */
CO_RPDO_t *RPDO[CO_NO_RPDO];/**< RPDO objects */
CO_TPDO_t *TPDO[CO_NO_TPDO];/**< TPDO objects */
CO_HBconsumer_t *HBcons; /**< Heartbeat consumer object*/
#if CO_NO_SDO_CLIENT == 1
CO_SDOclient_t *SDOclient; /**< SDO client object */
#endif
#if CO_NO_TRACE > 0
CO_trace_t *trace[CO_NO_TRACE]; /**< Trace object for monitoring variables */
#endif
}CO_t;
CO_t *CO = NULL;
хорошая инициализация до обратного вызова
после обратного вызова