📄 stm32f10x_can.lst
字号:
\ 0000006C C4F88031 STR R3,[R4, #+384]
\ 00000070 10E0 B.N ??CAN_Transmit_6
501 }
502 else
503 {
504 assert_param(IS_CAN_EXTID(TxMessage->ExtId));
505 CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->ExtId<<3) | TxMessage->IDE |
506 TxMessage->RTR);
\ ??CAN_Transmit_5:
\ 00000072 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000074 12EB0013 ADDS R3,R2,R0, LSL #+4
\ 00000078 D3F88031 LDR R3,[R3, #+384]
\ 0000007C 4C68 LDR R4,[R1, #+4]
\ 0000007E 0D7A LDRB R5,[R1, #+8]
\ 00000080 55EAC404 ORRS R4,R5,R4, LSL #+3
\ 00000084 4D7A LDRB R5,[R1, #+9]
\ 00000086 2C43 ORRS R4,R5,R4
\ 00000088 2343 ORRS R3,R4,R3
\ 0000008A C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000008C 12EB0014 ADDS R4,R2,R0, LSL #+4
\ 00000090 C4F88031 STR R3,[R4, #+384]
507 }
508
509
510 /* Set up the DLC */
511 TxMessage->DLC &= (uint8_t)0x0000000F;
\ ??CAN_Transmit_6:
\ 00000094 8B7A LDRB R3,[R1, #+10]
\ 00000096 13F00F03 ANDS R3,R3,#0xF
\ 0000009A 8B72 STRB R3,[R1, #+10]
512 CANx->sTxMailBox[transmit_mailbox].TDTR &= (uint32_t)0xFFFFFFF0;
\ 0000009C C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000009E 12EB0013 ADDS R3,R2,R0, LSL #+4
\ 000000A2 D3F88431 LDR R3,[R3, #+388]
\ 000000A6 1B09 LSRS R3,R3,#+4
\ 000000A8 1B01 LSLS R3,R3,#+4
\ 000000AA C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 000000AC 12EB0014 ADDS R4,R2,R0, LSL #+4
\ 000000B0 C4F88431 STR R3,[R4, #+388]
513 CANx->sTxMailBox[transmit_mailbox].TDTR |= TxMessage->DLC;
\ 000000B4 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 000000B6 12EB0013 ADDS R3,R2,R0, LSL #+4
\ 000000BA D3F88431 LDR R3,[R3, #+388]
\ 000000BE 8C7A LDRB R4,[R1, #+10]
\ 000000C0 2343 ORRS R3,R4,R3
\ 000000C2 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 000000C4 12EB0014 ADDS R4,R2,R0, LSL #+4
\ 000000C8 C4F88431 STR R3,[R4, #+388]
514
515 /* Set up the data field */
516 CANx->sTxMailBox[transmit_mailbox].TDLR = (((uint32_t)TxMessage->Data[3] << 24) |
517 ((uint32_t)TxMessage->Data[2] << 16) |
518 ((uint32_t)TxMessage->Data[1] << 8) |
519 ((uint32_t)TxMessage->Data[0]));
\ 000000CC 8B7B LDRB R3,[R1, #+14]
\ 000000CE 4C7B LDRB R4,[R1, #+13]
\ 000000D0 2404 LSLS R4,R4,#+16
\ 000000D2 54EA0363 ORRS R3,R4,R3, LSL #+24
\ 000000D6 0C7B LDRB R4,[R1, #+12]
\ 000000D8 53EA0423 ORRS R3,R3,R4, LSL #+8
\ 000000DC CC7A LDRB R4,[R1, #+11]
\ 000000DE 2343 ORRS R3,R4,R3
\ 000000E0 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 000000E2 12EB0014 ADDS R4,R2,R0, LSL #+4
\ 000000E6 C4F88831 STR R3,[R4, #+392]
520 CANx->sTxMailBox[transmit_mailbox].TDHR = (((uint32_t)TxMessage->Data[7] << 24) |
521 ((uint32_t)TxMessage->Data[6] << 16) |
522 ((uint32_t)TxMessage->Data[5] << 8) |
523 ((uint32_t)TxMessage->Data[4]));
\ 000000EA 8B7C LDRB R3,[R1, #+18]
\ 000000EC 4C7C LDRB R4,[R1, #+17]
\ 000000EE 2404 LSLS R4,R4,#+16
\ 000000F0 54EA0363 ORRS R3,R4,R3, LSL #+24
\ 000000F4 0C7C LDRB R4,[R1, #+16]
\ 000000F6 53EA0423 ORRS R3,R3,R4, LSL #+8
\ 000000FA CC7B LDRB R4,[R1, #+15]
\ 000000FC 2343 ORRS R3,R4,R3
\ 000000FE C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000100 12EB0014 ADDS R4,R2,R0, LSL #+4
\ 00000104 C4F88C31 STR R3,[R4, #+396]
524 /* Request transmission */
525 CANx->sTxMailBox[transmit_mailbox].TIR |= TMIDxR_TXRQ;
\ 00000108 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000010A 12EB0013 ADDS R3,R2,R0, LSL #+4
\ 0000010E D3F88031 LDR R3,[R3, #+384]
\ 00000112 53F00103 ORRS R3,R3,#0x1
\ 00000116 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000118 12EB0014 ADDS R4,R2,R0, LSL #+4
\ 0000011C C4F88031 STR R3,[R4, #+384]
526 }
527 return transmit_mailbox;
\ ??CAN_Transmit_4:
\ 00000120 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000122 30BC POP {R4,R5}
\ 00000124 7047 BX LR ;; return
528 }
529
530 /**
531 * @brief Checks the transmission of a message.
532 * @param CANx: where x can be 1 or 2 to to select the CAN peripheral.
533 * @param TransmitMailbox: the number of the mailbox that is used for transmission.
534 * @retval CANTXOK if the CAN driver transmits the message, CANTXFAILED in an other case.
535 */
\ In section .text, align 2, keep-with-next
536 uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox)
537 {
\ CAN_TransmitStatus:
\ 00000000 0200 MOVS R2,R0
538 /* RQCP, TXOK and TME bits */
539 uint8_t state = 0;
\ 00000002 0020 MOVS R0,#+0
540 /* Check the parameters */
541 assert_param(IS_CAN_ALL_PERIPH(CANx));
542 assert_param(IS_CAN_TRANSMITMAILBOX(TransmitMailbox));
543 switch (TransmitMailbox)
\ 00000004 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000006 0029 CMP R1,#+0
\ 00000008 03D0 BEQ.N ??CAN_TransmitStatus_0
\ 0000000A 0229 CMP R1,#+2
\ 0000000C 20D0 BEQ.N ??CAN_TransmitStatus_1
\ 0000000E 0FD3 BCC.N ??CAN_TransmitStatus_2
\ 00000010 2EE0 B.N ??CAN_TransmitStatus_3
544 {
545 case (0): state |= (uint8_t)((CANx->TSR & CAN_TSR_RQCP0) << 2);
\ ??CAN_TransmitStatus_0:
\ 00000012 9368 LDR R3,[R2, #+8]
\ 00000014 13F00103 ANDS R3,R3,#0x1
\ 00000018 50EA8300 ORRS R0,R0,R3, LSL #+2
546 state |= (uint8_t)((CANx->TSR & CAN_TSR_TXOK0) >> 0);
\ 0000001C 9368 LDR R3,[R2, #+8]
\ 0000001E 13F00203 ANDS R3,R3,#0x2
\ 00000022 1843 ORRS R0,R3,R0
547 state |= (uint8_t)((CANx->TSR & CAN_TSR_TME0) >> 26);
\ 00000024 9368 LDR R3,[R2, #+8]
\ 00000026 9B0E LSRS R3,R3,#+26
\ 00000028 13F00103 ANDS R3,R3,#0x1
\ 0000002C 1843 ORRS R0,R3,R0
548 break;
\ 0000002E 21E0 B.N ??CAN_TransmitStatus_4
549 case (1): state |= (uint8_t)((CANx->TSR & CAN_TSR_RQCP1) >> 6);
\ ??CAN_TransmitStatus_2:
\ 00000030 9368 LDR R3,[R2, #+8]
\ 00000032 9B09 LSRS R3,R3,#+6
\ 00000034 13F00403 ANDS R3,R3,#0x4
\ 00000038 1843 ORRS R0,R3,R0
550 state |= (uint8_t)((CANx->TSR & CAN_TSR_TXOK1) >> 8);
\ 0000003A 9368 LDR R3,[R2, #+8]
\ 0000003C 1B0A LSRS R3,R3,#+8
\ 0000003E 13F00203 ANDS R3,R3,#0x2
\ 00000042 1843 ORRS R0,R3,R0
551 state |= (uint8_t)((CANx->TSR & CAN_TSR_TME1) >> 27);
\ 00000044 9368 LDR R3,[R2, #+8]
\ 00000046 DB0E LSRS R3,R3,#+27
\ 00000048 13F00103 ANDS R3,R3,#0x1
\ 0000004C 1843 ORRS R0,R3,R0
552 break;
\ 0000004E 11E0 B.N ??CAN_TransmitStatus_4
553 case (2): state |= (uint8_t)((CANx->TSR & CAN_TSR_RQCP2) >> 14);
\ ??CAN_TransmitStatus_1:
\ 00000050 9368 LDR R3,[R2, #+8]
\ 00000052 9B0B LSRS R3,R3,#+14
\ 00000054 13F00403 ANDS R3,R3,#0x4
\ 00000058 1843 ORRS R0,R3,R0
554 state |= (uint8_t)((CANx->TSR & CAN_TSR_TXOK2) >> 16);
\ 0000005A 9368 LDR R3,[R2, #+8]
\ 0000005C 1B0C LSRS R3,R3,#+16
\ 0000005E 13F00203 ANDS R3,R3,#0x2
\ 00000062 1843 ORRS R0,R3,R0
555 state |= (uint8_t)((CANx->TSR & CAN_TSR_TME2) >> 28);
\ 00000064 9368 LDR R3,[R2, #+8]
\ 00000066 1B0F LSRS R3,R3,#+28
\ 00000068 13F00103 ANDS R3,R3,#0x1
\ 0000006C 1843 ORRS R0,R3,R0
556 break;
\ 0000006E 01E0 B.N ??CAN_TransmitStatus_4
557 default:
558 state = CANTXFAILED;
\ ??CAN_TransmitStatus_3:
\ 00000070 0023 MOVS R3,#+0
\ 00000072 1800 MOVS R0,R3
559 break;
560 }
561 switch (state)
\ ??CAN_TransmitStatus_4:
\ 00000074 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000076 0300 MOVS R3,R0
\ 00000078 002B CMP R3,#+0
\ 0000007A 04D0 BEQ.N ??CAN_TransmitStatus_5
\ 0000007C 052B CMP R3,#+5
\ 0000007E 05D0 BEQ.N ??CAN_TransmitStatus_6
\ 00000080 072B CMP R3,#+7
\ 00000082 06D0 BEQ.N ??CAN_TransmitStatus_7
\ 00000084 08E0 B.N ??CAN_TransmitStatus_8
562 {
563 /* transmit pending */
564 case (0x0): state = CANTXPENDING;
\ ??CAN_TransmitStatus_5:
\ 00000086 0223 MOVS R3,#+2
\ 00000088 1800 MOVS R0,R3
565 break;
\ 0000008A 07E0 B.N ??CAN_TransmitStatus_9
566 /* transmit failed */
567 case (0x5): state = CANTXFAILED;
\ ??CAN_TransmitStatus_6:
\ 0000008C 0023 MOVS R3,#+0
\ 0000008E 1800 MOVS R0,R3
568 break;
\ 00000090 04E0 B.N ??CAN_TransmitStatus_9
569 /* transmit succedeed */
570 case (0x7): state = CANTXOK;
\ ??CAN_TransmitStatus_7:
\ 00000092 0123 MOVS R3,#+1
\ 00000094 1800 MOVS R0,R3
571 break;
\ 00000096 01E0 B.N ??CAN_TransmitStatus_9
572 default:
573 state = CANTXFAILED;
\ ??CAN_TransmitStatus_8:
\ 00000098 0023 MOVS R3,#+0
\ 0000009A 1800 MOVS R0,R3
574 break;
575 }
576 return state;
\ ??CAN_TransmitStatus_9:
\ 0000009C C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000009E 7047 BX LR ;; return
577 }
578
579 /**
580 * @brief Cancels a transmit request.
581 * @param CANx: where x can be 1 or 2 to to select the CAN peripheral.
582 * @param Mailbox: Mailbox number.
583 * @retval None.
584 */
\ In secti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -