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>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> |
201 | * <h2><center>© 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 | * @} |