Subversion Repositories LedShow

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 9
Line 124... Line 124...
124
            (++) Using HAL_CAN_WakeUp(). When returning from this function,
124
            (++) Using HAL_CAN_WakeUp(). When returning from this function,
125
                 the sleep mode is exited (if return status is HAL_OK).
125
                 the sleep mode is exited (if return status is HAL_OK).
126
            (++) When a start of Rx CAN frame is detected by the CAN peripheral,
126
            (++) When a start of Rx CAN frame is detected by the CAN peripheral,
127
                 if automatic wake up mode is enabled.
127
                 if automatic wake up mode is enabled.
128
 
128
 
-
 
129
  *** Callback registration ***
-
 
130
  =============================================
-
 
131
 
-
 
132
  The compilation define  USE_HAL_CAN_REGISTER_CALLBACKS when set to 1
-
 
133
  allows the user to configure dynamically the driver callbacks.
-
 
134
  Use Function @ref HAL_CAN_RegisterCallback() to register an interrupt callback.
-
 
135
 
-
 
136
  Function @ref HAL_CAN_RegisterCallback() allows to register following callbacks:
-
 
137
    (+) TxMailbox0CompleteCallback   : Tx Mailbox 0 Complete Callback.
-
 
138
    (+) TxMailbox1CompleteCallback   : Tx Mailbox 1 Complete Callback.
-
 
139
    (+) TxMailbox2CompleteCallback   : Tx Mailbox 2 Complete Callback.
-
 
140
    (+) TxMailbox0AbortCallback      : Tx Mailbox 0 Abort Callback.
-
 
141
    (+) TxMailbox1AbortCallback      : Tx Mailbox 1 Abort Callback.
-
 
142
    (+) TxMailbox2AbortCallback      : Tx Mailbox 2 Abort Callback.
-
 
143
    (+) RxFifo0MsgPendingCallback    : Rx Fifo 0 Message Pending Callback.
-
 
144
    (+) RxFifo0FullCallback          : Rx Fifo 0 Full Callback.
-
 
145
    (+) RxFifo1MsgPendingCallback    : Rx Fifo 1 Message Pending Callback.
-
 
146
    (+) RxFifo1FullCallback          : Rx Fifo 1 Full Callback.
-
 
147
    (+) SleepCallback                : Sleep Callback.
-
 
148
    (+) WakeUpFromRxMsgCallback      : Wake Up From Rx Message Callback.
-
 
149
    (+) ErrorCallback                : Error Callback.
-
 
150
    (+) MspInitCallback              : CAN MspInit.
-
 
151
    (+) MspDeInitCallback            : CAN MspDeInit.
-
 
152
  This function takes as parameters the HAL peripheral handle, the Callback ID
-
 
153
  and a pointer to the user callback function.
-
 
154
 
-
 
155
  Use function @ref HAL_CAN_UnRegisterCallback() to reset a callback to the default
-
 
156
  weak function.
-
 
157
  @ref HAL_CAN_UnRegisterCallback takes as parameters the HAL peripheral handle,
-
 
158
  and the Callback ID.
-
 
159
  This function allows to reset following callbacks:
-
 
160
    (+) TxMailbox0CompleteCallback   : Tx Mailbox 0 Complete Callback.
-
 
161
    (+) TxMailbox1CompleteCallback   : Tx Mailbox 1 Complete Callback.
-
 
162
    (+) TxMailbox2CompleteCallback   : Tx Mailbox 2 Complete Callback.
-
 
163
    (+) TxMailbox0AbortCallback      : Tx Mailbox 0 Abort Callback.
-
 
164
    (+) TxMailbox1AbortCallback      : Tx Mailbox 1 Abort Callback.
-
 
165
    (+) TxMailbox2AbortCallback      : Tx Mailbox 2 Abort Callback.
-
 
166
    (+) RxFifo0MsgPendingCallback    : Rx Fifo 0 Message Pending Callback.
-
 
167
    (+) RxFifo0FullCallback          : Rx Fifo 0 Full Callback.
-
 
168
    (+) RxFifo1MsgPendingCallback    : Rx Fifo 1 Message Pending Callback.
-
 
169
    (+) RxFifo1FullCallback          : Rx Fifo 1 Full Callback.
-
 
170
    (+) SleepCallback                : Sleep Callback.
-
 
171
    (+) WakeUpFromRxMsgCallback      : Wake Up From Rx Message Callback.
-
 
172
    (+) ErrorCallback                : Error Callback.
-
 
173
    (+) MspInitCallback              : CAN MspInit.
-
 
174
    (+) MspDeInitCallback            : CAN MspDeInit.
-
 
175
 
-
 
176
  By default, after the @ref HAL_CAN_Init() and when the state is HAL_CAN_STATE_RESET,
-
 
177
  all callbacks are set to the corresponding weak functions:
-
 
178
  example @ref HAL_CAN_ErrorCallback().
-
 
179
  Exception done for MspInit and MspDeInit functions that are
-
 
180
  reset to the legacy weak function in the @ref HAL_CAN_Init()/ @ref HAL_CAN_DeInit() only when
-
 
181
  these callbacks are null (not registered beforehand).
-
 
182
  if not, MspInit or MspDeInit are not null, the @ref HAL_CAN_Init()/ @ref HAL_CAN_DeInit()
-
 
183
  keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
-
 
184
 
-
 
185
  Callbacks can be registered/unregistered in HAL_CAN_STATE_READY state only.
-
 
186
  Exception done MspInit/MspDeInit that can be registered/unregistered
-
 
187
  in HAL_CAN_STATE_READY or HAL_CAN_STATE_RESET state,
-
 
188
  thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
-
 
189
  In that case first register the MspInit/MspDeInit user callbacks
-
 
190
  using @ref HAL_CAN_RegisterCallback() before calling @ref HAL_CAN_DeInit()
-
 
191
  or @ref HAL_CAN_Init() function.
-
 
192
 
-
 
193
  When The compilation define USE_HAL_CAN_REGISTER_CALLBACKS is set to 0 or
-
 
194
  not defined, the callback registration feature is not available and all callbacks
-
 
195
  are set to the corresponding weak functions.
-
 
196
 
129
  @endverbatim
197
  @endverbatim
130
  ******************************************************************************
198
  ******************************************************************************
131
  * @attention
199
  * @attention
132
  *
200
  *
133
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
201
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-
 
202
  * All rights reserved.</center></h2>
134
  *
203
  *
135
  * Redistribution and use in source and binary forms, with or without modification,
204
  * This software component is licensed by ST under BSD 3-Clause license,
136
  * are permitted provided that the following conditions are met:
205
  * the "License"; You may not use this file except in compliance with the
137
  *   1. Redistributions of source code must retain the above copyright notice,
-
 
138
  *      this list of conditions and the following disclaimer.
-
 
139
  *   2. Redistributions in binary form must reproduce the above copyright notice,
-
 
140
  *      this list of conditions and the following disclaimer in the documentation
-
 
141
  *      and/or other materials provided with the distribution.
206
  * License. You may obtain a copy of the License at:
142
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-
 
143
  *      may be used to endorse or promote products derived from this software
207
  *                        opensource.org/licenses/BSD-3-Clause
144
  *      without specific prior written permission.
-
 
145
  *
-
 
146
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
 
147
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
 
148
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-
 
149
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-
 
150
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-
 
151
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-
 
152
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-
 
153
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-
 
154
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
 
155
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
156
  *
208
  *
157
  ******************************************************************************
209
  ******************************************************************************
158
  */
210
  */
159
 
211
 
160
/* Includes ------------------------------------------------------------------*/
212
/* Includes ------------------------------------------------------------------*/
Line 241... Line 293...
241
  assert_param(IS_CAN_SJW(hcan->Init.SyncJumpWidth));
293
  assert_param(IS_CAN_SJW(hcan->Init.SyncJumpWidth));
242
  assert_param(IS_CAN_BS1(hcan->Init.TimeSeg1));
294
  assert_param(IS_CAN_BS1(hcan->Init.TimeSeg1));
243
  assert_param(IS_CAN_BS2(hcan->Init.TimeSeg2));
295
  assert_param(IS_CAN_BS2(hcan->Init.TimeSeg2));
244
  assert_param(IS_CAN_PRESCALER(hcan->Init.Prescaler));
296
  assert_param(IS_CAN_PRESCALER(hcan->Init.Prescaler));
245
 
297
 
-
 
298
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
299
  if (hcan->State == HAL_CAN_STATE_RESET)
-
 
300
  {
-
 
301
    /* Reset callbacks to legacy functions */
-
 
302
    hcan->RxFifo0MsgPendingCallback  =  HAL_CAN_RxFifo0MsgPendingCallback;  /* Legacy weak RxFifo0MsgPendingCallback  */
-
 
303
    hcan->RxFifo0FullCallback        =  HAL_CAN_RxFifo0FullCallback;        /* Legacy weak RxFifo0FullCallback        */
-
 
304
    hcan->RxFifo1MsgPendingCallback  =  HAL_CAN_RxFifo1MsgPendingCallback;  /* Legacy weak RxFifo1MsgPendingCallback  */
-
 
305
    hcan->RxFifo1FullCallback        =  HAL_CAN_RxFifo1FullCallback;        /* Legacy weak RxFifo1FullCallback        */
-
 
306
    hcan->TxMailbox0CompleteCallback =  HAL_CAN_TxMailbox0CompleteCallback; /* Legacy weak TxMailbox0CompleteCallback */
-
 
307
    hcan->TxMailbox1CompleteCallback =  HAL_CAN_TxMailbox1CompleteCallback; /* Legacy weak TxMailbox1CompleteCallback */
-
 
308
    hcan->TxMailbox2CompleteCallback =  HAL_CAN_TxMailbox2CompleteCallback; /* Legacy weak TxMailbox2CompleteCallback */
-
 
309
    hcan->TxMailbox0AbortCallback    =  HAL_CAN_TxMailbox0AbortCallback;    /* Legacy weak TxMailbox0AbortCallback    */
-
 
310
    hcan->TxMailbox1AbortCallback    =  HAL_CAN_TxMailbox1AbortCallback;    /* Legacy weak TxMailbox1AbortCallback    */
-
 
311
    hcan->TxMailbox2AbortCallback    =  HAL_CAN_TxMailbox2AbortCallback;    /* Legacy weak TxMailbox2AbortCallback    */
-
 
312
    hcan->SleepCallback              =  HAL_CAN_SleepCallback;              /* Legacy weak SleepCallback              */
-
 
313
    hcan->WakeUpFromRxMsgCallback    =  HAL_CAN_WakeUpFromRxMsgCallback;    /* Legacy weak WakeUpFromRxMsgCallback    */
-
 
314
    hcan->ErrorCallback              =  HAL_CAN_ErrorCallback;              /* Legacy weak ErrorCallback              */
-
 
315
 
-
 
316
    if (hcan->MspInitCallback == NULL)
-
 
317
    {
-
 
318
      hcan->MspInitCallback = HAL_CAN_MspInit; /* Legacy weak MspInit */
-
 
319
    }
-
 
320
 
-
 
321
    /* Init the low level hardware: CLOCK, NVIC */
-
 
322
    hcan->MspInitCallback(hcan);
-
 
323
  }
-
 
324
 
-
 
325
#else
246
  if (hcan->State == HAL_CAN_STATE_RESET)
326
  if (hcan->State == HAL_CAN_STATE_RESET)
247
  {
327
  {
248
    /* Init the low level hardware: CLOCK, NVIC */
328
    /* Init the low level hardware: CLOCK, NVIC */
249
    HAL_CAN_MspInit(hcan);
329
    HAL_CAN_MspInit(hcan);
250
  }
330
  }
-
 
331
#endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
251
 
332
 
252
  /* Exit from sleep mode */
333
  /* Exit from sleep mode */
253
  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);
334
  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);
254
 
335
 
255
  /* Get tick */
336
  /* Get tick */
Line 387... Line 468...
387
  assert_param(IS_CAN_ALL_INSTANCE(hcan->Instance));
468
  assert_param(IS_CAN_ALL_INSTANCE(hcan->Instance));
388
 
469
 
389
  /* Stop the CAN module */
470
  /* Stop the CAN module */
390
  (void)HAL_CAN_Stop(hcan);
471
  (void)HAL_CAN_Stop(hcan);
391
 
472
 
-
 
473
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
474
  if (hcan->MspDeInitCallback == NULL)
-
 
475
  {
-
 
476
    hcan->MspDeInitCallback = HAL_CAN_MspDeInit; /* Legacy weak MspDeInit */
-
 
477
  }
-
 
478
 
-
 
479
  /* DeInit the low level hardware: CLOCK, NVIC */
-
 
480
  hcan->MspDeInitCallback(hcan);
-
 
481
 
-
 
482
#else
392
  /* DeInit the low level hardware: CLOCK, NVIC */
483
  /* DeInit the low level hardware: CLOCK, NVIC */
393
  HAL_CAN_MspDeInit(hcan);
484
  HAL_CAN_MspDeInit(hcan);
-
 
485
#endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
394
 
486
 
395
  /* Reset the CAN peripheral */
487
  /* Reset the CAN peripheral */
396
  SET_BIT(hcan->Instance->MCR, CAN_MCR_RESET);
488
  SET_BIT(hcan->Instance->MCR, CAN_MCR_RESET);
397
 
489
 
398
  /* Reset the CAN ErrorCode */
490
  /* Reset the CAN ErrorCode */
Line 435... Line 527...
435
  /* NOTE : This function Should not be modified, when the callback is needed,
527
  /* NOTE : This function Should not be modified, when the callback is needed,
436
            the HAL_CAN_MspDeInit could be implemented in the user file
528
            the HAL_CAN_MspDeInit could be implemented in the user file
437
   */
529
   */
438
}
530
}
439
 
531
 
-
 
532
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
533
/**
-
 
534
  * @brief  Register a CAN CallBack.
-
 
535
  *         To be used instead of the weak predefined callback
-
 
536
  * @param  hcan pointer to a CAN_HandleTypeDef structure that contains
-
 
537
  *         the configuration information for CAN module
-
 
538
  * @param  CallbackID ID of the callback to be registered
-
 
539
  *         This parameter can be one of the following values:
-
 
540
  *           @arg @ref HAL_CAN_TX_MAILBOX0_COMPLETE_CALLBACK_CB_ID Tx Mailbox 0 Complete callback ID
-
 
541
  *           @arg @ref HAL_CAN_TX_MAILBOX1_COMPLETE_CALLBACK_CB_ID Tx Mailbox 1 Complete callback ID
-
 
542
  *           @arg @ref HAL_CAN_TX_MAILBOX2_COMPLETE_CALLBACK_CB_ID Tx Mailbox 2 Complete callback ID
-
 
543
  *           @arg @ref HAL_CAN_TX_MAILBOX0_ABORT_CALLBACK_CB_ID Tx Mailbox 0 Abort callback ID
-
 
544
  *           @arg @ref HAL_CAN_TX_MAILBOX1_ABORT_CALLBACK_CB_ID Tx Mailbox 1 Abort callback ID
-
 
545
  *           @arg @ref HAL_CAN_TX_MAILBOX2_ABORT_CALLBACK_CB_ID Tx Mailbox 2 Abort callback ID
-
 
546
  *           @arg @ref HAL_CAN_RX_FIFO0_MSG_PENDING_CALLBACK_CB_ID Rx Fifo 0 message pending callback ID
-
 
547
  *           @arg @ref HAL_CAN_RX_FIFO0_FULL_CALLBACK_CB_ID Rx Fifo 0 full callback ID
-
 
548
  *           @arg @ref HAL_CAN_RX_FIFO1_MSGPENDING_CALLBACK_CB_ID Rx Fifo 1 message pending callback ID
-
 
549
  *           @arg @ref HAL_CAN_RX_FIFO1_FULL_CALLBACK_CB_ID Rx Fifo 1 full callback ID
-
 
550
  *           @arg @ref HAL_CAN_SLEEP_CALLBACK_CB_ID Sleep callback ID
-
 
551
  *           @arg @ref HAL_CAN_WAKEUP_FROM_RX_MSG_CALLBACK_CB_ID Wake Up from Rx message callback ID
-
 
552
  *           @arg @ref HAL_CAN_ERROR_CALLBACK_CB_ID Error callback ID
-
 
553
  *           @arg @ref HAL_CAN_MSPINIT_CB_ID MspInit callback ID
-
 
554
  *           @arg @ref HAL_CAN_MSPDEINIT_CB_ID MspDeInit callback ID
-
 
555
  * @param  pCallback pointer to the Callback function
-
 
556
  * @retval HAL status
-
 
557
  */
-
 
558
HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID, void (* pCallback)(CAN_HandleTypeDef *_hcan))
-
 
559
{
-
 
560
  HAL_StatusTypeDef status = HAL_OK;
-
 
561
 
-
 
562
  if (pCallback == NULL)
-
 
563
  {
-
 
564
    /* Update the error code */
-
 
565
    hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
-
 
566
 
-
 
567
    return HAL_ERROR;
-
 
568
  }
-
 
569
 
-
 
570
  if (hcan->State == HAL_CAN_STATE_READY)
-
 
571
  {
-
 
572
    switch (CallbackID)
-
 
573
    {
-
 
574
      case HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID :
-
 
575
        hcan->TxMailbox0CompleteCallback = pCallback;
-
 
576
        break;
-
 
577
 
-
 
578
      case HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID :
-
 
579
        hcan->TxMailbox1CompleteCallback = pCallback;
-
 
580
        break;
-
 
581
 
-
 
582
      case HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID :
-
 
583
        hcan->TxMailbox2CompleteCallback = pCallback;
-
 
584
        break;
-
 
585
 
-
 
586
      case HAL_CAN_TX_MAILBOX0_ABORT_CB_ID :
-
 
587
        hcan->TxMailbox0AbortCallback = pCallback;
-
 
588
        break;
-
 
589
 
-
 
590
      case HAL_CAN_TX_MAILBOX1_ABORT_CB_ID :
-
 
591
        hcan->TxMailbox1AbortCallback = pCallback;
-
 
592
        break;
-
 
593
 
-
 
594
      case HAL_CAN_TX_MAILBOX2_ABORT_CB_ID :
-
 
595
        hcan->TxMailbox2AbortCallback = pCallback;
-
 
596
        break;
-
 
597
 
-
 
598
      case HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID :
-
 
599
        hcan->RxFifo0MsgPendingCallback = pCallback;
-
 
600
        break;
-
 
601
 
-
 
602
      case HAL_CAN_RX_FIFO0_FULL_CB_ID :
-
 
603
        hcan->RxFifo0FullCallback = pCallback;
-
 
604
        break;
-
 
605
 
-
 
606
      case HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID :
-
 
607
        hcan->RxFifo1MsgPendingCallback = pCallback;
-
 
608
        break;
-
 
609
 
-
 
610
      case HAL_CAN_RX_FIFO1_FULL_CB_ID :
-
 
611
        hcan->RxFifo1FullCallback = pCallback;
-
 
612
        break;
-
 
613
 
-
 
614
      case HAL_CAN_SLEEP_CB_ID :
-
 
615
        hcan->SleepCallback = pCallback;
-
 
616
        break;
-
 
617
 
-
 
618
      case HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID :
-
 
619
        hcan->WakeUpFromRxMsgCallback = pCallback;
-
 
620
        break;
-
 
621
 
-
 
622
      case HAL_CAN_ERROR_CB_ID :
-
 
623
        hcan->ErrorCallback = pCallback;
-
 
624
        break;
-
 
625
 
-
 
626
      case HAL_CAN_MSPINIT_CB_ID :
-
 
627
        hcan->MspInitCallback = pCallback;
-
 
628
        break;
-
 
629
 
-
 
630
      case HAL_CAN_MSPDEINIT_CB_ID :
-
 
631
        hcan->MspDeInitCallback = pCallback;
-
 
632
        break;
-
 
633
 
-
 
634
      default :
-
 
635
        /* Update the error code */
-
 
636
        hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
-
 
637
 
-
 
638
        /* Return error status */
-
 
639
        status =  HAL_ERROR;
-
 
640
        break;
-
 
641
    }
-
 
642
  }
-
 
643
  else if (hcan->State == HAL_CAN_STATE_RESET)
-
 
644
  {
-
 
645
    switch (CallbackID)
-
 
646
    {
-
 
647
      case HAL_CAN_MSPINIT_CB_ID :
-
 
648
        hcan->MspInitCallback = pCallback;
-
 
649
        break;
-
 
650
 
-
 
651
      case HAL_CAN_MSPDEINIT_CB_ID :
-
 
652
        hcan->MspDeInitCallback = pCallback;
-
 
653
        break;
-
 
654
 
-
 
655
      default :
-
 
656
        /* Update the error code */
-
 
657
        hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
-
 
658
 
-
 
659
        /* Return error status */
-
 
660
        status =  HAL_ERROR;
-
 
661
        break;
-
 
662
    }
-
 
663
  }
-
 
664
  else
-
 
665
  {
-
 
666
    /* Update the error code */
-
 
667
    hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
-
 
668
 
-
 
669
    /* Return error status */
-
 
670
    status =  HAL_ERROR;
-
 
671
  }
-
 
672
 
-
 
673
  return status;
-
 
674
}
-
 
675
 
-
 
676
/**
-
 
677
  * @brief  Unregister a CAN CallBack.
-
 
678
  *         CAN callabck is redirected to the weak predefined callback
-
 
679
  * @param  hcan pointer to a CAN_HandleTypeDef structure that contains
-
 
680
  *         the configuration information for CAN module
-
 
681
  * @param  CallbackID ID of the callback to be unregistered
-
 
682
  *         This parameter can be one of the following values:
-
 
683
  *           @arg @ref HAL_CAN_TX_MAILBOX0_COMPLETE_CALLBACK_CB_ID Tx Mailbox 0 Complete callback ID
-
 
684
  *           @arg @ref HAL_CAN_TX_MAILBOX1_COMPLETE_CALLBACK_CB_ID Tx Mailbox 1 Complete callback ID
-
 
685
  *           @arg @ref HAL_CAN_TX_MAILBOX2_COMPLETE_CALLBACK_CB_ID Tx Mailbox 2 Complete callback ID
-
 
686
  *           @arg @ref HAL_CAN_TX_MAILBOX0_ABORT_CALLBACK_CB_ID Tx Mailbox 0 Abort callback ID
-
 
687
  *           @arg @ref HAL_CAN_TX_MAILBOX1_ABORT_CALLBACK_CB_ID Tx Mailbox 1 Abort callback ID
-
 
688
  *           @arg @ref HAL_CAN_TX_MAILBOX2_ABORT_CALLBACK_CB_ID Tx Mailbox 2 Abort callback ID
-
 
689
  *           @arg @ref HAL_CAN_RX_FIFO0_MSG_PENDING_CALLBACK_CB_ID Rx Fifo 0 message pending callback ID
-
 
690
  *           @arg @ref HAL_CAN_RX_FIFO0_FULL_CALLBACK_CB_ID Rx Fifo 0 full callback ID
-
 
691
  *           @arg @ref HAL_CAN_RX_FIFO1_MSGPENDING_CALLBACK_CB_ID Rx Fifo 1 message pending callback ID
-
 
692
  *           @arg @ref HAL_CAN_RX_FIFO1_FULL_CALLBACK_CB_ID Rx Fifo 1 full callback ID
-
 
693
  *           @arg @ref HAL_CAN_SLEEP_CALLBACK_CB_ID Sleep callback ID
-
 
694
  *           @arg @ref HAL_CAN_WAKEUP_FROM_RX_MSG_CALLBACK_CB_ID Wake Up from Rx message callback ID
-
 
695
  *           @arg @ref HAL_CAN_ERROR_CALLBACK_CB_ID Error callback ID
-
 
696
  *           @arg @ref HAL_CAN_MSPINIT_CB_ID MspInit callback ID
-
 
697
  *           @arg @ref HAL_CAN_MSPDEINIT_CB_ID MspDeInit callback ID
-
 
698
  * @retval HAL status
-
 
699
  */
-
 
700
HAL_StatusTypeDef HAL_CAN_UnRegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID)
-
 
701
{
-
 
702
  HAL_StatusTypeDef status = HAL_OK;
-
 
703
 
-
 
704
  if (hcan->State == HAL_CAN_STATE_READY)
-
 
705
  {
-
 
706
    switch (CallbackID)
-
 
707
    {
-
 
708
      case HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID :
-
 
709
        hcan->TxMailbox0CompleteCallback = HAL_CAN_TxMailbox0CompleteCallback;
-
 
710
        break;
-
 
711
 
-
 
712
      case HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID :
-
 
713
        hcan->TxMailbox1CompleteCallback = HAL_CAN_TxMailbox1CompleteCallback;
-
 
714
        break;
-
 
715
 
-
 
716
      case HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID :
-
 
717
        hcan->TxMailbox2CompleteCallback = HAL_CAN_TxMailbox2CompleteCallback;
-
 
718
        break;
-
 
719
 
-
 
720
      case HAL_CAN_TX_MAILBOX0_ABORT_CB_ID :
-
 
721
        hcan->TxMailbox0AbortCallback = HAL_CAN_TxMailbox0AbortCallback;
-
 
722
        break;
-
 
723
 
-
 
724
      case HAL_CAN_TX_MAILBOX1_ABORT_CB_ID :
-
 
725
        hcan->TxMailbox1AbortCallback = HAL_CAN_TxMailbox1AbortCallback;
-
 
726
        break;
-
 
727
 
-
 
728
      case HAL_CAN_TX_MAILBOX2_ABORT_CB_ID :
-
 
729
        hcan->TxMailbox2AbortCallback = HAL_CAN_TxMailbox2AbortCallback;
-
 
730
        break;
-
 
731
 
-
 
732
      case HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID :
-
 
733
        hcan->RxFifo0MsgPendingCallback = HAL_CAN_RxFifo0MsgPendingCallback;
-
 
734
        break;
-
 
735
 
-
 
736
      case HAL_CAN_RX_FIFO0_FULL_CB_ID :
-
 
737
        hcan->RxFifo0FullCallback = HAL_CAN_RxFifo0FullCallback;
-
 
738
        break;
-
 
739
 
-
 
740
      case HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID :
-
 
741
        hcan->RxFifo1MsgPendingCallback = HAL_CAN_RxFifo1MsgPendingCallback;
-
 
742
        break;
-
 
743
 
-
 
744
      case HAL_CAN_RX_FIFO1_FULL_CB_ID :
-
 
745
        hcan->RxFifo1FullCallback = HAL_CAN_RxFifo1FullCallback;
-
 
746
        break;
-
 
747
 
-
 
748
      case HAL_CAN_SLEEP_CB_ID :
-
 
749
        hcan->SleepCallback = HAL_CAN_SleepCallback;
-
 
750
        break;
-
 
751
 
-
 
752
      case HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID :
-
 
753
        hcan->WakeUpFromRxMsgCallback = HAL_CAN_WakeUpFromRxMsgCallback;
-
 
754
        break;
-
 
755
 
-
 
756
      case HAL_CAN_ERROR_CB_ID :
-
 
757
        hcan->ErrorCallback = HAL_CAN_ErrorCallback;
-
 
758
        break;
-
 
759
 
-
 
760
      case HAL_CAN_MSPINIT_CB_ID :
-
 
761
        hcan->MspInitCallback = HAL_CAN_MspInit;
-
 
762
        break;
-
 
763
 
-
 
764
      case HAL_CAN_MSPDEINIT_CB_ID :
-
 
765
        hcan->MspDeInitCallback = HAL_CAN_MspDeInit;
-
 
766
        break;
-
 
767
 
-
 
768
      default :
-
 
769
        /* Update the error code */
-
 
770
        hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
-
 
771
 
-
 
772
        /* Return error status */
-
 
773
        status =  HAL_ERROR;
-
 
774
        break;
-
 
775
    }
-
 
776
  }
-
 
777
  else if (hcan->State == HAL_CAN_STATE_RESET)
-
 
778
  {
-
 
779
    switch (CallbackID)
-
 
780
    {
-
 
781
      case HAL_CAN_MSPINIT_CB_ID :
-
 
782
        hcan->MspInitCallback = HAL_CAN_MspInit;
-
 
783
        break;
-
 
784
 
-
 
785
      case HAL_CAN_MSPDEINIT_CB_ID :
-
 
786
        hcan->MspDeInitCallback = HAL_CAN_MspDeInit;
-
 
787
        break;
-
 
788
 
-
 
789
      default :
-
 
790
        /* Update the error code */
-
 
791
        hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
-
 
792
 
-
 
793
        /* Return error status */
-
 
794
        status =  HAL_ERROR;
-
 
795
        break;
-
 
796
    }
-
 
797
  }
-
 
798
  else
-
 
799
  {
-
 
800
    /* Update the error code */
-
 
801
    hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
-
 
802
 
-
 
803
    /* Return error status */
-
 
804
    status =  HAL_ERROR;
-
 
805
  }
-
 
806
 
-
 
807
  return status;
-
 
808
}
-
 
809
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
440
 
810
 
441
/**
811
/**
442
  * @}
812
  * @}
443
  */
813
  */
444
 
814
 
Line 1156... Line 1526...
1156
    }
1526
    }
1157
    else
1527
    else
1158
    {
1528
    {
1159
      pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
1529
      pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
1160
    }
1530
    }
1161
    pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_RTR_Pos;
1531
    pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR);
1162
    pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
1532
    pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
1163
    pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
1533
    pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
1164
    pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
1534
    pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
1165
 
1535
 
1166
    /* Get the data */
1536
    /* Get the data */
Line 1342... Line 1712...
1342
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP0);
1712
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP0);
1343
 
1713
 
1344
      if ((tsrflags & CAN_TSR_TXOK0) != 0U)
1714
      if ((tsrflags & CAN_TSR_TXOK0) != 0U)
1345
      {
1715
      {
1346
        /* Transmission Mailbox 0 complete callback */
1716
        /* Transmission Mailbox 0 complete callback */
-
 
1717
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1718
        /* Call registered callback*/
-
 
1719
        hcan->TxMailbox0CompleteCallback(hcan);
-
 
1720
#else
1347
        /* Call weak (surcharged) callback */
1721
        /* Call weak (surcharged) callback */
1348
        HAL_CAN_TxMailbox0CompleteCallback(hcan);
1722
        HAL_CAN_TxMailbox0CompleteCallback(hcan);
-
 
1723
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1349
      }
1724
      }
1350
      else
1725
      else
1351
      {
1726
      {
1352
        if ((tsrflags & CAN_TSR_ALST0) != 0U)
1727
        if ((tsrflags & CAN_TSR_ALST0) != 0U)
1353
        {
1728
        {
Line 1360... Line 1735...
1360
          errorcode |= HAL_CAN_ERROR_TX_TERR0;
1735
          errorcode |= HAL_CAN_ERROR_TX_TERR0;
1361
        }
1736
        }
1362
        else
1737
        else
1363
        {
1738
        {
1364
          /* Transmission Mailbox 0 abort callback */
1739
          /* Transmission Mailbox 0 abort callback */
-
 
1740
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1741
          /* Call registered callback*/
-
 
1742
          hcan->TxMailbox0AbortCallback(hcan);
-
 
1743
#else
1365
          /* Call weak (surcharged) callback */
1744
          /* Call weak (surcharged) callback */
1366
          HAL_CAN_TxMailbox0AbortCallback(hcan);
1745
          HAL_CAN_TxMailbox0AbortCallback(hcan);
-
 
1746
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1367
        }
1747
        }
1368
      }
1748
      }
1369
    }
1749
    }
1370
 
1750
 
1371
    /* Transmit Mailbox 1 management *****************************************/
1751
    /* Transmit Mailbox 1 management *****************************************/
Line 1375... Line 1755...
1375
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP1);
1755
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP1);
1376
 
1756
 
1377
      if ((tsrflags & CAN_TSR_TXOK1) != 0U)
1757
      if ((tsrflags & CAN_TSR_TXOK1) != 0U)
1378
      {
1758
      {
1379
        /* Transmission Mailbox 1 complete callback */
1759
        /* Transmission Mailbox 1 complete callback */
-
 
1760
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1761
        /* Call registered callback*/
-
 
1762
        hcan->TxMailbox1CompleteCallback(hcan);
-
 
1763
#else
1380
        /* Call weak (surcharged) callback */
1764
        /* Call weak (surcharged) callback */
1381
        HAL_CAN_TxMailbox1CompleteCallback(hcan);
1765
        HAL_CAN_TxMailbox1CompleteCallback(hcan);
-
 
1766
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1382
      }
1767
      }
1383
      else
1768
      else
1384
      {
1769
      {
1385
        if ((tsrflags & CAN_TSR_ALST1) != 0U)
1770
        if ((tsrflags & CAN_TSR_ALST1) != 0U)
1386
        {
1771
        {
Line 1393... Line 1778...
1393
          errorcode |= HAL_CAN_ERROR_TX_TERR1;
1778
          errorcode |= HAL_CAN_ERROR_TX_TERR1;
1394
        }
1779
        }
1395
        else
1780
        else
1396
        {
1781
        {
1397
          /* Transmission Mailbox 1 abort callback */
1782
          /* Transmission Mailbox 1 abort callback */
-
 
1783
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1784
          /* Call registered callback*/
-
 
1785
          hcan->TxMailbox1AbortCallback(hcan);
-
 
1786
#else
1398
          /* Call weak (surcharged) callback */
1787
          /* Call weak (surcharged) callback */
1399
          HAL_CAN_TxMailbox1AbortCallback(hcan);
1788
          HAL_CAN_TxMailbox1AbortCallback(hcan);
-
 
1789
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1400
        }
1790
        }
1401
      }
1791
      }
1402
    }
1792
    }
1403
 
1793
 
1404
    /* Transmit Mailbox 2 management *****************************************/
1794
    /* Transmit Mailbox 2 management *****************************************/
Line 1408... Line 1798...
1408
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP2);
1798
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP2);
1409
 
1799
 
1410
      if ((tsrflags & CAN_TSR_TXOK2) != 0U)
1800
      if ((tsrflags & CAN_TSR_TXOK2) != 0U)
1411
      {
1801
      {
1412
        /* Transmission Mailbox 2 complete callback */
1802
        /* Transmission Mailbox 2 complete callback */
-
 
1803
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1804
        /* Call registered callback*/
-
 
1805
        hcan->TxMailbox2CompleteCallback(hcan);
-
 
1806
#else
1413
        /* Call weak (surcharged) callback */
1807
        /* Call weak (surcharged) callback */
1414
        HAL_CAN_TxMailbox2CompleteCallback(hcan);
1808
        HAL_CAN_TxMailbox2CompleteCallback(hcan);
-
 
1809
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1415
      }
1810
      }
1416
      else
1811
      else
1417
      {
1812
      {
1418
        if ((tsrflags & CAN_TSR_ALST2) != 0U)
1813
        if ((tsrflags & CAN_TSR_ALST2) != 0U)
1419
        {
1814
        {
Line 1426... Line 1821...
1426
          errorcode |= HAL_CAN_ERROR_TX_TERR2;
1821
          errorcode |= HAL_CAN_ERROR_TX_TERR2;
1427
        }
1822
        }
1428
        else
1823
        else
1429
        {
1824
        {
1430
          /* Transmission Mailbox 2 abort callback */
1825
          /* Transmission Mailbox 2 abort callback */
-
 
1826
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1827
          /* Call registered callback*/
-
 
1828
          hcan->TxMailbox2AbortCallback(hcan);
-
 
1829
#else
1431
          /* Call weak (surcharged) callback */
1830
          /* Call weak (surcharged) callback */
1432
          HAL_CAN_TxMailbox2AbortCallback(hcan);
1831
          HAL_CAN_TxMailbox2AbortCallback(hcan);
-
 
1832
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1433
        }
1833
        }
1434
      }
1834
      }
1435
    }
1835
    }
1436
  }
1836
  }
1437
 
1837
 
Line 1455... Line 1855...
1455
    {
1855
    {
1456
      /* Clear FIFO 0 full Flag */
1856
      /* Clear FIFO 0 full Flag */
1457
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FF0);
1857
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FF0);
1458
 
1858
 
1459
      /* Receive FIFO 0 full Callback */
1859
      /* Receive FIFO 0 full Callback */
-
 
1860
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1861
      /* Call registered callback*/
-
 
1862
      hcan->RxFifo0FullCallback(hcan);
-
 
1863
#else
1460
      /* Call weak (surcharged) callback */
1864
      /* Call weak (surcharged) callback */
1461
      HAL_CAN_RxFifo0FullCallback(hcan);
1865
      HAL_CAN_RxFifo0FullCallback(hcan);
-
 
1866
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1462
    }
1867
    }
1463
  }
1868
  }
1464
 
1869
 
1465
  /* Receive FIFO 0 message pending interrupt management *********************/
1870
  /* Receive FIFO 0 message pending interrupt management *********************/
1466
  if ((interrupts & CAN_IT_RX_FIFO0_MSG_PENDING) != 0U)
1871
  if ((interrupts & CAN_IT_RX_FIFO0_MSG_PENDING) != 0U)
1467
  {
1872
  {
1468
    /* Check if message is still pending */
1873
    /* Check if message is still pending */
1469
    if ((hcan->Instance->RF0R & CAN_RF0R_FMP0) != 0U)
1874
    if ((hcan->Instance->RF0R & CAN_RF0R_FMP0) != 0U)
1470
    {
1875
    {
1471
      /* Receive FIFO 0 mesage pending Callback */
1876
      /* Receive FIFO 0 mesage pending Callback */
-
 
1877
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1878
      /* Call registered callback*/
-
 
1879
      hcan->RxFifo0MsgPendingCallback(hcan);
-
 
1880
#else
1472
      /* Call weak (surcharged) callback */
1881
      /* Call weak (surcharged) callback */
1473
      HAL_CAN_RxFifo0MsgPendingCallback(hcan);
1882
      HAL_CAN_RxFifo0MsgPendingCallback(hcan);
-
 
1883
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1474
    }
1884
    }
1475
  }
1885
  }
1476
 
1886
 
1477
  /* Receive FIFO 1 overrun interrupt management *****************************/
1887
  /* Receive FIFO 1 overrun interrupt management *****************************/
1478
  if ((interrupts & CAN_IT_RX_FIFO1_OVERRUN) != 0U)
1888
  if ((interrupts & CAN_IT_RX_FIFO1_OVERRUN) != 0U)
Line 1494... Line 1904...
1494
    {
1904
    {
1495
      /* Clear FIFO 1 full Flag */
1905
      /* Clear FIFO 1 full Flag */
1496
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FF1);
1906
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_FF1);
1497
 
1907
 
1498
      /* Receive FIFO 1 full Callback */
1908
      /* Receive FIFO 1 full Callback */
-
 
1909
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1910
      /* Call registered callback*/
-
 
1911
      hcan->RxFifo1FullCallback(hcan);
-
 
1912
#else
1499
      /* Call weak (surcharged) callback */
1913
      /* Call weak (surcharged) callback */
1500
      HAL_CAN_RxFifo1FullCallback(hcan);
1914
      HAL_CAN_RxFifo1FullCallback(hcan);
-
 
1915
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1501
    }
1916
    }
1502
  }
1917
  }
1503
 
1918
 
1504
  /* Receive FIFO 1 message pending interrupt management *********************/
1919
  /* Receive FIFO 1 message pending interrupt management *********************/
1505
  if ((interrupts & CAN_IT_RX_FIFO1_MSG_PENDING) != 0U)
1920
  if ((interrupts & CAN_IT_RX_FIFO1_MSG_PENDING) != 0U)
1506
  {
1921
  {
1507
    /* Check if message is still pending */
1922
    /* Check if message is still pending */
1508
    if ((hcan->Instance->RF1R & CAN_RF1R_FMP1) != 0U)
1923
    if ((hcan->Instance->RF1R & CAN_RF1R_FMP1) != 0U)
1509
    {
1924
    {
1510
      /* Receive FIFO 1 mesage pending Callback */
1925
      /* Receive FIFO 1 mesage pending Callback */
-
 
1926
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1927
      /* Call registered callback*/
-
 
1928
      hcan->RxFifo1MsgPendingCallback(hcan);
-
 
1929
#else
1511
      /* Call weak (surcharged) callback */
1930
      /* Call weak (surcharged) callback */
1512
      HAL_CAN_RxFifo1MsgPendingCallback(hcan);
1931
      HAL_CAN_RxFifo1MsgPendingCallback(hcan);
-
 
1932
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1513
    }
1933
    }
1514
  }
1934
  }
1515
 
1935
 
1516
  /* Sleep interrupt management *********************************************/
1936
  /* Sleep interrupt management *********************************************/
1517
  if ((interrupts & CAN_IT_SLEEP_ACK) != 0U)
1937
  if ((interrupts & CAN_IT_SLEEP_ACK) != 0U)
Line 1520... Line 1940...
1520
    {
1940
    {
1521
      /* Clear Sleep interrupt Flag */
1941
      /* Clear Sleep interrupt Flag */
1522
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_SLAKI);
1942
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_SLAKI);
1523
 
1943
 
1524
      /* Sleep Callback */
1944
      /* Sleep Callback */
-
 
1945
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1946
      /* Call registered callback*/
-
 
1947
      hcan->SleepCallback(hcan);
-
 
1948
#else
1525
      /* Call weak (surcharged) callback */
1949
      /* Call weak (surcharged) callback */
1526
      HAL_CAN_SleepCallback(hcan);
1950
      HAL_CAN_SleepCallback(hcan);
-
 
1951
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1527
    }
1952
    }
1528
  }
1953
  }
1529
 
1954
 
1530
  /* WakeUp interrupt management *********************************************/
1955
  /* WakeUp interrupt management *********************************************/
1531
  if ((interrupts & CAN_IT_WAKEUP) != 0U)
1956
  if ((interrupts & CAN_IT_WAKEUP) != 0U)
Line 1534... Line 1959...
1534
    {
1959
    {
1535
      /* Clear WakeUp Flag */
1960
      /* Clear WakeUp Flag */
1536
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_WKU);
1961
      __HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_WKU);
1537
 
1962
 
1538
      /* WakeUp Callback */
1963
      /* WakeUp Callback */
-
 
1964
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
1965
      /* Call registered callback*/
-
 
1966
      hcan->WakeUpFromRxMsgCallback(hcan);
-
 
1967
#else
1539
      /* Call weak (surcharged) callback */
1968
      /* Call weak (surcharged) callback */
1540
      HAL_CAN_WakeUpFromRxMsgCallback(hcan);
1969
      HAL_CAN_WakeUpFromRxMsgCallback(hcan);
-
 
1970
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1541
    }
1971
    }
1542
  }
1972
  }
1543
 
1973
 
1544
  /* Error interrupts management *********************************************/
1974
  /* Error interrupts management *********************************************/
1545
  if ((interrupts & CAN_IT_ERROR) != 0U)
1975
  if ((interrupts & CAN_IT_ERROR) != 0U)
Line 1624... Line 2054...
1624
  {
2054
  {
1625
    /* Update error code in handle */
2055
    /* Update error code in handle */
1626
    hcan->ErrorCode |= errorcode;
2056
    hcan->ErrorCode |= errorcode;
1627
 
2057
 
1628
    /* Call Error callback function */
2058
    /* Call Error callback function */
-
 
2059
#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
-
 
2060
    /* Call registered callback*/
-
 
2061
    hcan->ErrorCallback(hcan);
-
 
2062
#else
1629
    /* Call weak (surcharged) callback */
2063
    /* Call weak (surcharged) callback */
1630
    HAL_CAN_ErrorCallback(hcan);
2064
    HAL_CAN_ErrorCallback(hcan);
-
 
2065
#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
1631
  }
2066
  }
1632
}
2067
}
1633
 
2068
 
1634
/**
2069
/**
1635
  * @}
2070
  * @}