📄 stm32f10x_can.txt
字号:
;;;716 bitstatus = SET;
0004f6 2001 MOVS r0,#1
|L1.1272|
;;;717 }
;;;718 else
;;;719 {
;;;720 /* CAN_FLAG is reset */
;;;721 bitstatus = RESET;
;;;722 }
;;;723 /* Return the CAN_FLAG status */
;;;724 return bitstatus;
;;;725 }
0004f8 4770 BX lr
;;;726
ENDP
CAN_ClearFlag PROC
;;;739 /* Clear the selected CAN flags */
;;;740 CAN->ESR &= ~CAN_FLAG;
0004fa 495f LDR r1,|L1.1656|
0004fc 680a LDR r2,[r1,#0]
0004fe ea220000 BIC r0,r2,r0
000502 6008 STR r0,[r1,#0]
;;;741 }
000504 4770 BX lr
;;;742
ENDP
CheckITStatus PROC
;;;873 static ITStatus CheckITStatus(u32 CAN_Reg, u32 It_Bit)
;;;874 {
000506 4602 MOV r2,r0
;;;875 ITStatus pendingbitstatus = RESET;
000508 2000 MOVS r0,#0
;;;876
;;;877 if ((CAN_Reg & It_Bit) != (u32)RESET)
00050a 420a TST r2,r1
00050c d000 BEQ |L1.1296|
;;;878 {
;;;879 /* CAN_IT is set */
;;;880 pendingbitstatus = SET;
00050e 2001 MOVS r0,#1
|L1.1296|
;;;881 }
;;;882 else
;;;883 {
;;;884 /* CAN_IT is reset */
;;;885 pendingbitstatus = RESET;
;;;886 }
;;;887
;;;888 return pendingbitstatus;
;;;889 }
000510 4770 BX lr
;;;890
ENDP
CAN_GetITStatus PROC
;;;755 ITStatus CAN_GetITStatus(u32 CAN_IT)
;;;756 {
000512 4601 MOV r1,r0
;;;757 ITStatus pendingbitstatus = RESET;
000514 2000 MOVS r0,#0
;;;758
;;;759 /* Check the parameters */
;;;760 assert(IS_CAN_ITStatus(CAN_IT));
;;;761
;;;762 switch (CAN_IT)
000516 4a56 LDR r2,|L1.1648|
000518 2940 CMP r1,#0x40
00051a d03f BEQ |L1.1436|
00051c dc15 BGT |L1.1354|
00051e 2907 CMP r1,#7
000520 d02f BEQ |L1.1410|
000522 dc0a BGT |L1.1338|
000524 2904 CMP r1,#4
000526 d031 BEQ |L1.1420|
000528 2905 CMP r1,#5
00052a d026 BEQ |L1.1402|
00052c 2906 CMP r1,#6
00052e d145 BNE |L1.1468|
;;;763 {
;;;764 case CAN_IT_RQCP0:
;;;765 pendingbitstatus = CheckITStatus(CAN->TSR, CAN_TSR_RQCP0);
;;;766 break;
;;;767 case CAN_IT_RQCP1:
;;;768 pendingbitstatus = CheckITStatus(CAN->TSR, CAN_TSR_RQCP1);
000530 f8d20408 LDR r0,[r2,#0x408]
000534 f44f7180 MOV r1,#0x100
000538 e7fe B CheckITStatus
|L1.1338|
00053a 2908 CMP r1,#8 ;762
00053c d02a BEQ |L1.1428|
00053e 2920 CMP r1,#0x20 ;762
000540 d13c BNE |L1.1468|
;;;769 break;
;;;770 case CAN_IT_RQCP2:
;;;771 pendingbitstatus = CheckITStatus(CAN->TSR, CAN_TSR_RQCP2);
;;;772 break;
;;;773 case CAN_IT_FF0:
;;;774 pendingbitstatus = CheckITStatus(CAN->RF0R, CAN_RF0R_FULL0);
;;;775 break;
;;;776 case CAN_IT_FOV0:
;;;777 pendingbitstatus = CheckITStatus(CAN->RF0R, CAN_RF0R_FOVR0);
;;;778 break;
;;;779 case CAN_IT_FF1:
;;;780 pendingbitstatus = CheckITStatus(CAN->RF1R, CAN_RF1R_FULL1);
000542 f8d20410 LDR r0,[r2,#0x410]
000546 2108 MOVS r1,#8
000548 e7fe B CheckITStatus
|L1.1354|
00054a f5b16f80 CMP r1,#0x400 ;762
00054e d02d BEQ |L1.1452|
000550 dc09 BGT |L1.1382|
000552 f5b17f80 CMP r1,#0x100 ;762
000556 d025 BEQ |L1.1444|
000558 f5b17f00 CMP r1,#0x200 ;762
00055c d12e BNE |L1.1468|
;;;781 break;
;;;782 case CAN_IT_FOV1:
;;;783 pendingbitstatus = CheckITStatus(CAN->RF1R, CAN_RF1R_FOVR1);
;;;784 break;
;;;785 case CAN_IT_EWG:
;;;786 pendingbitstatus = CheckITStatus(CAN->ESR, CAN_ESR_EWGF);
;;;787 break;
;;;788 case CAN_IT_EPV:
;;;789 pendingbitstatus = CheckITStatus(CAN->ESR, CAN_ESR_EPVF);
00055e f8d20418 LDR r0,[r2,#0x418]
000562 2102 MOVS r1,#2
000564 e7fe B CheckITStatus
|L1.1382|
000566 f5b13f80 CMP r1,#0x10000 ;762
00056a d023 BEQ |L1.1460|
00056c f5b13f00 CMP r1,#0x20000 ;762
000570 d124 BNE |L1.1468|
;;;790 break;
;;;791 case CAN_IT_BOF:
;;;792 pendingbitstatus = CheckITStatus(CAN->ESR, CAN_ESR_BOFF);
;;;793 break;
;;;794 case CAN_IT_SLK:
;;;795 pendingbitstatus = CheckITStatus(CAN->MSR, CAN_MSR_SLAKI);
000572 f8d20404 LDR r0,[r2,#0x404]
000576 2110 MOVS r1,#0x10
000578 e7fe B CheckITStatus
|L1.1402|
00057a f8d20408 LDR r0,[r2,#0x408] ;765
00057e 2101 MOVS r1,#1 ;765
000580 e7fe B CheckITStatus
|L1.1410|
000582 f8d20408 LDR r0,[r2,#0x408] ;771
000586 f44f3180 MOV r1,#0x10000 ;771
00058a e7fe B CheckITStatus
|L1.1420|
00058c f8d2040c LDR r0,[r2,#0x40c] ;774
000590 2108 MOVS r1,#8 ;774
000592 e7fe B CheckITStatus
|L1.1428|
000594 f8d2040c LDR r0,[r2,#0x40c] ;777
000598 2110 MOVS r1,#0x10 ;777
00059a e7fe B CheckITStatus
|L1.1436|
00059c f8d20410 LDR r0,[r2,#0x410] ;783
0005a0 2110 MOVS r1,#0x10 ;783
0005a2 e7fe B CheckITStatus
|L1.1444|
0005a4 f8d20418 LDR r0,[r2,#0x418] ;786
0005a8 2101 MOVS r1,#1 ;786
0005aa e7fe B CheckITStatus
|L1.1452|
0005ac f8d20418 LDR r0,[r2,#0x418] ;792
0005b0 2104 MOVS r1,#4 ;792
0005b2 e7fe B CheckITStatus
|L1.1460|
;;;796 break;
;;;797 case CAN_IT_WKU:
;;;798 pendingbitstatus = CheckITStatus(CAN->MSR, CAN_MSR_WKUI);
0005b4 f8d20404 LDR r0,[r2,#0x404]
0005b8 2108 MOVS r1,#8
0005ba e7fe B CheckITStatus
|L1.1468|
;;;799 break;
;;;800
;;;801 default :
;;;802 pendingbitstatus = RESET;
;;;803 break;
;;;804 }
;;;805
;;;806 /* Return the CAN_IT status */
;;;807 return pendingbitstatus;
;;;808 }
0005bc 4770 BX lr
;;;809
ENDP
CAN_ClearITPendingBit PROC
;;;821
;;;822 switch (CAN_IT)
0005be 492c LDR r1,|L1.1648|
0005c0 2208 MOVS r2,#8
0005c2 2310 MOVS r3,#0x10
0005c4 2840 CMP r0,#0x40
0005c6 d03e BEQ |L1.1606|
0005c8 dc14 BGT |L1.1524|
0005ca 2807 CMP r0,#7
0005cc d030 BEQ |L1.1584|
0005ce dc0a BGT |L1.1510|
0005d0 2804 CMP r0,#4
0005d2 d032 BEQ |L1.1594|
0005d4 2805 CMP r0,#5
0005d6 d027 BEQ |L1.1576|
0005d8 2806 CMP r0,#6
0005da d103 BNE |L1.1508|
;;;823 {
;;;824 case CAN_IT_RQCP0:
;;;825 CAN->TSR = CAN_TSR_RQCP0; /* rc_w1*/
;;;826 break;
;;;827 case CAN_IT_RQCP1:
;;;828 CAN->TSR = CAN_TSR_RQCP1; /* rc_w1*/
0005dc f44f7080 MOV r0,#0x100
0005e0 f8c10408 STR r0,[r1,#0x408]
|L1.1508|
;;;829 break;
;;;830 case CAN_IT_RQCP2:
;;;831 CAN->TSR = CAN_TSR_RQCP2; /* rc_w1*/
;;;832 break;
;;;833 case CAN_IT_FF0:
;;;834 CAN->RF0R = CAN_RF0R_FULL0; /* rc_w1*/
;;;835 break;
;;;836 case CAN_IT_FOV0:
;;;837 CAN->RF0R = CAN_RF0R_FOVR0; /* rc_w1*/
;;;838 break;
;;;839 case CAN_IT_FF1:
;;;840 CAN->RF1R = CAN_RF1R_FULL1; /* rc_w1*/
;;;841 break;
;;;842 case CAN_IT_FOV1:
;;;843 CAN->RF1R = CAN_RF1R_FOVR1; /* rc_w1*/
;;;844 break;
;;;845 case CAN_IT_EWG:
;;;846 CAN->ESR &= ~ CAN_ESR_EWGF; /* rw */
;;;847 break;
;;;848 case CAN_IT_EPV:
;;;849 CAN->ESR &= ~ CAN_ESR_EPVF; /* rw */
;;;850 break;
;;;851 case CAN_IT_BOF:
;;;852 CAN->ESR &= ~ CAN_ESR_BOFF; /* rw */
;;;853 break;
;;;854 case CAN_IT_WKU:
;;;855 CAN->MSR = CAN_MSR_WKUI; /* rc_w1*/
;;;856 break;
;;;857 case CAN_IT_SLK:
;;;858 CAN->MSR = CAN_MSR_SLAKI; /* rc_w1*/
;;;859 break;
;;;860 default :
;;;861 break;
;;;862 }
;;;863 }
0005e4 4770 BX lr
|L1.1510|
0005e6 2808 CMP r0,#8 ;822
0005e8 d02a BEQ |L1.1600|
0005ea 2820 CMP r0,#0x20 ;822
0005ec d1fa BNE |L1.1508|
0005ee f8c12410 STR r2,[r1,#0x410] ;840
|L1.1522|
0005f2 4770 BX lr
|L1.1524|
0005f4 f5b06f80 CMP r0,#0x400 ;822
0005f8 d02f BEQ |L1.1626|
0005fa dc0c BGT |L1.1558|
0005fc f5b07f80 CMP r0,#0x100 ;822
000600 d024 BEQ |L1.1612|
000602 f5b07f00 CMP r0,#0x200 ;822
000606 d1f4 BNE |L1.1522|
000608 f8d10418 LDR r0,[r1,#0x418] ;849
00060c f0200002 BIC r0,r0,#2 ;849
000610 f8c10418 STR r0,[r1,#0x418] ;849
|L1.1556|
000614 4770 BX lr
|L1.1558|
000616 f5b03f80 CMP r0,#0x10000 ;822
00061a d025 BEQ |L1.1640|
00061c f5b03f00 CMP r0,#0x20000 ;822
000620 d1f8 BNE |L1.1556|
000622 f8c13404 STR r3,[r1,#0x404] ;858
000626 4770 BX lr
|L1.1576|
000628 2001 MOVS r0,#1 ;825
00062a f8c10408 STR r0,[r1,#0x408] ;825
00062e 4770 BX lr
|L1.1584|
000630 f44f3080 MOV r0,#0x10000 ;831
000634 f8c10408 STR r0,[r1,#0x408] ;831
000638 4770 BX lr
|L1.1594|
00063a f8c1240c STR r2,[r1,#0x40c] ;834
00063e 4770 BX lr
|L1.1600|
000640 f8c1340c STR r3,[r1,#0x40c] ;837
000644 4770 BX lr
|L1.1606|
000646 f8c13410 STR r3,[r1,#0x410] ;843
00064a 4770 BX lr
|L1.1612|
00064c f8d10418 LDR r0,[r1,#0x418] ;846
000650 f0200001 BIC r0,r0,#1 ;846
000654 f8c10418 STR r0,[r1,#0x418] ;846
000658 4770 BX lr
|L1.1626|
00065a f8d10418 LDR r0,[r1,#0x418] ;852
00065e f0200004 BIC r0,r0,#4 ;852
000662 f8c10418 STR r0,[r1,#0x418] ;852
000666 4770 BX lr
|L1.1640|
000668 f8c12404 STR r2,[r1,#0x404] ;855
00066c 4770 BX lr
;;;864
ENDP
00066e 0000 DCW 0x0000
|L1.1648|
000670 40006000 DCD 0x40006000
|L1.1652|
000674 40006400 DCD 0x40006400
|L1.1656|
000678 40006418 DCD 0x40006418
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -