📄 stm32f10x_can.lst
字号:
704 /* Check the parameters */
705 assert_param(IS_CAN_FLAG(CAN_FLAG));
706
707 /* Check the status of the specified CAN flag */
708 if ((CAN->ESR & CAN_FLAG) != (u32)RESET)
709 {
710 /* CAN_FLAG is set */
711 bitstatus = SET;
712 }
713 else
714 {
715 /* CAN_FLAG is reset */
716 bitstatus = RESET;
717 }
718 /* Return the CAN_FLAG status */
719 return bitstatus;
720 }
721
722 /*******************************************************************************
723 * Function Name : CAN_ClearFlag
724 * Description : Clears the CAN's pending flags.
725 * Input : CAN_FLAG: specifies the flag to clear.
726 * Output : None.
727 * Return : None.
728 *******************************************************************************/
729 void CAN_ClearFlag(u32 CAN_FLAG)
730 {
731 /* Check the parameters */
732 assert_param(IS_CAN_FLAG(CAN_FLAG));
733
734 /* Clear the selected CAN flags */
735 CAN->ESR &= ~CAN_FLAG;
736 }
737
738 /*******************************************************************************
739 * Function Name : CAN_GetITStatus
740 * Description : Checks whether the specified CAN interrupt has occurred or
741 * not.
742 * Input : CAN_IT: specifies the CAN interrupt source to check.
743 * This parameter can be: CAN_IT_RQCP0, CAN_IT_RQCP1, CAN_IT_RQCP2,
744 * CAN_IT_FF0, CAN_IT_FOV0, CAN_IT_FF1,
745 * CAN_IT_FOV1, CAN_IT_EWG, CAN_IT_EPV,
746 * CAN_IT_BOF, CAN_IT_WKU or CAN_IT_SLK.
747 * Output : None.
748 * Return : The new state of CAN_IT (SET or RESET).
749 *******************************************************************************/
750 ITStatus CAN_GetITStatus(u32 CAN_IT)
751 {
752 ITStatus pendingbitstatus = RESET;
753
754 /* Check the parameters */
755 assert_param(IS_CAN_ITStatus(CAN_IT));
756
757 switch (CAN_IT)
758 {
759 case CAN_IT_RQCP0:
760 pendingbitstatus = CheckITStatus(CAN->TSR, CAN_TSR_RQCP0);
761 break;
762 case CAN_IT_RQCP1:
763 pendingbitstatus = CheckITStatus(CAN->TSR, CAN_TSR_RQCP1);
764 break;
765 case CAN_IT_RQCP2:
766 pendingbitstatus = CheckITStatus(CAN->TSR, CAN_TSR_RQCP2);
767 break;
768 case CAN_IT_FF0:
769 pendingbitstatus = CheckITStatus(CAN->RF0R, CAN_RF0R_FULL0);
770 break;
771 case CAN_IT_FOV0:
772 pendingbitstatus = CheckITStatus(CAN->RF0R, CAN_RF0R_FOVR0);
773 break;
774 case CAN_IT_FF1:
775 pendingbitstatus = CheckITStatus(CAN->RF1R, CAN_RF1R_FULL1);
776 break;
777 case CAN_IT_FOV1:
778 pendingbitstatus = CheckITStatus(CAN->RF1R, CAN_RF1R_FOVR1);
779 break;
780 case CAN_IT_EWG:
781 pendingbitstatus = CheckITStatus(CAN->ESR, CAN_ESR_EWGF);
782 break;
783 case CAN_IT_EPV:
784 pendingbitstatus = CheckITStatus(CAN->ESR, CAN_ESR_EPVF);
785 break;
786 case CAN_IT_BOF:
787 pendingbitstatus = CheckITStatus(CAN->ESR, CAN_ESR_BOFF);
788 break;
789 case CAN_IT_SLK:
790 pendingbitstatus = CheckITStatus(CAN->MSR, CAN_MSR_SLAKI);
791 break;
792 case CAN_IT_WKU:
793 pendingbitstatus = CheckITStatus(CAN->MSR, CAN_MSR_WKUI);
794 break;
795
796 default :
797 pendingbitstatus = RESET;
798 break;
799 }
800
801 /* Return the CAN_IT status */
802 return pendingbitstatus;
803 }
804
805 /*******************************************************************************
806 * Function Name : CAN_ClearITPendingBit
807 * Description : Clears the CAN抯 interrupt pending bits.
808 * Input : CAN_IT: specifies the interrupt pending bit to clear.
809 * Output : None.
810 * Return : None.
811 *******************************************************************************/
812 void CAN_ClearITPendingBit(u32 CAN_IT)
813 {
814 /* Check the parameters */
815 assert_param(IS_CAN_ITStatus(CAN_IT));
816
817 switch (CAN_IT)
818 {
819 case CAN_IT_RQCP0:
820 CAN->TSR = CAN_TSR_RQCP0; /* rc_w1*/
821 break;
822 case CAN_IT_RQCP1:
823 CAN->TSR = CAN_TSR_RQCP1; /* rc_w1*/
824 break;
825 case CAN_IT_RQCP2:
826 CAN->TSR = CAN_TSR_RQCP2; /* rc_w1*/
827 break;
828 case CAN_IT_FF0:
829 CAN->RF0R = CAN_RF0R_FULL0; /* rc_w1*/
830 break;
831 case CAN_IT_FOV0:
832 CAN->RF0R = CAN_RF0R_FOVR0; /* rc_w1*/
833 break;
834 case CAN_IT_FF1:
835 CAN->RF1R = CAN_RF1R_FULL1; /* rc_w1*/
836 break;
837 case CAN_IT_FOV1:
838 CAN->RF1R = CAN_RF1R_FOVR1; /* rc_w1*/
839 break;
840 case CAN_IT_EWG:
841 CAN->ESR &= ~ CAN_ESR_EWGF; /* rw */
842 break;
843 case CAN_IT_EPV:
844 CAN->ESR &= ~ CAN_ESR_EPVF; /* rw */
845 break;
846 case CAN_IT_BOF:
847 CAN->ESR &= ~ CAN_ESR_BOFF; /* rw */
848 break;
849 case CAN_IT_WKU:
850 CAN->MSR = CAN_MSR_WKUI; /* rc_w1*/
851 break;
852 case CAN_IT_SLK:
853 CAN->MSR = CAN_MSR_SLAKI; /* rc_w1*/
854 break;
855 default :
856 break;
857 }
858 }
859
860 /*******************************************************************************
861 * Function Name : CheckITStatus
862 * Description : Checks whether the CAN interrupt has occurred or not.
863 * Input : CAN_Reg: specifies the CAN interrupt register to check.
864 * It_Bit: specifies the interrupt source bit to check.
865 * Output : None.
866 * Return : The new state of the CAN Interrupt (SET or RESET).
867 *******************************************************************************/
868 static ITStatus CheckITStatus(u32 CAN_Reg, u32 It_Bit)
869 {
870 ITStatus pendingbitstatus = RESET;
871
872 if ((CAN_Reg & It_Bit) != (u32)RESET)
873 {
874 /* CAN_IT is set */
875 pendingbitstatus = SET;
876 }
877 else
878 {
879 /* CAN_IT is reset */
880 pendingbitstatus = RESET;
881 }
882
883 return pendingbitstatus;
884 }
885
886 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/
Maximum stack usage in bytes:
Function .cstack
-------- -------
CAN_CancelTransmit 8
CAN_ClearFlag 0
CAN_ClearITPendingBit 8
CAN_DeInit 8
CAN_FIFORelease 0
CAN_FilterInit 16
CAN_GetFlagStatus 0
CAN_GetITStatus 8
CAN_ITConfig 0
CAN_Init 8
CAN_MessagePending 0
CAN_Receive 8
CAN_Sleep 0
CAN_StructInit 0
CAN_Transmit 8
CAN_TransmitStatus 8
CAN_WakeUp 0
Section sizes:
Function/Label Bytes
-------------- -----
CAN_DeInit 22
CAN_Init 188
CAN_FilterInit 184
CAN_StructInit 32
CAN_ITConfig 24
CAN_Transmit 176
CAN_TransmitStatus 134
CAN_CancelTransmit 50
CAN_FIFORelease 16
CAN_MessagePending 36
CAN_Receive 124
CAN_Sleep 28
CAN_WakeUp 28
CAN_GetFlagStatus 20
CAN_ClearFlag 16
CAN_GetITStatus 188
CAN_ClearITPendingBit 172
??DataTable0 4
??DataTable7 4
??DataTable9 4
1 450 bytes in section .text
1 450 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -