⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_can.lst

📁 stm32+ucos-ii
💻 LST
📖 第 1 页 / 共 5 页
字号:
    378            /* Initialize the automatic wake-up mode */
    379            CAN_InitStruct->CAN_AWUM = DISABLE;
   \   00000008   0021               MOVS     R1,#+0
   \   0000000A   0172               STRB     R1,[R0, #+8]
    380            /* Initialize the no automatic retransmission */
    381            CAN_InitStruct->CAN_NART = DISABLE;
   \   0000000C   0021               MOVS     R1,#+0
   \   0000000E   4172               STRB     R1,[R0, #+9]
    382            /* Initialize the receive FIFO locked mode */
    383            CAN_InitStruct->CAN_RFLM = DISABLE;
   \   00000010   0021               MOVS     R1,#+0
   \   00000012   8172               STRB     R1,[R0, #+10]
    384            /* Initialize the transmit FIFO priority */
    385            CAN_InitStruct->CAN_TXFP = DISABLE;
   \   00000014   0021               MOVS     R1,#+0
   \   00000016   C172               STRB     R1,[R0, #+11]
    386            /* Initialize the CAN_Mode member */
    387            CAN_InitStruct->CAN_Mode = CAN_Mode_Normal;
   \   00000018   0021               MOVS     R1,#+0
   \   0000001A   8170               STRB     R1,[R0, #+2]
    388            /* Initialize the CAN_SJW member */
    389            CAN_InitStruct->CAN_SJW = CAN_SJW_1tq;
   \   0000001C   0021               MOVS     R1,#+0
   \   0000001E   C170               STRB     R1,[R0, #+3]
    390            /* Initialize the CAN_BS1 member */
    391            CAN_InitStruct->CAN_BS1 = CAN_BS1_4tq;
   \   00000020   0321               MOVS     R1,#+3
   \   00000022   0171               STRB     R1,[R0, #+4]
    392            /* Initialize the CAN_BS2 member */
    393            CAN_InitStruct->CAN_BS2 = CAN_BS2_3tq;
   \   00000024   0221               MOVS     R1,#+2
   \   00000026   4171               STRB     R1,[R0, #+5]
    394            /* Initialize the CAN_Prescaler member */
    395            CAN_InitStruct->CAN_Prescaler = 1;
   \   00000028   0121               MOVS     R1,#+1
   \   0000002A   0180               STRH     R1,[R0, #+0]
    396          }
   \   0000002C   7047               BX       LR               ;; return
    397          
    398          /**
    399            * @brief  Select the start bank filter for slave CAN.
    400            * @note   This function applies only to STM32 Connectivity line devices.
    401            * @param  CAN_BankNumber: Select the start slave bank filter from 1..27.
    402            * @retval None.
    403            */

   \                                 In section .text, align 2, keep-with-next
    404          void CAN_SlaveStartBank(uint8_t CAN_BankNumber) 
    405          {
    406            /* Check the parameters */
    407            assert_param(IS_CAN_BANKNUMBER(CAN_BankNumber));
    408            /* enter Initialisation mode for the filter */
    409            CAN1->FMR |= FMR_FINIT;
   \                     CAN_SlaveStartBank:
   \   00000000   ........           LDR.W    R1,??DataTable5_1  ;; 0x40006600
   \   00000004   0968               LDR      R1,[R1, #+0]
   \   00000006   51F00101           ORRS     R1,R1,#0x1
   \   0000000A   ........           LDR.W    R2,??DataTable5_1  ;; 0x40006600
   \   0000000E   1160               STR      R1,[R2, #+0]
    410            /* Select the start slave bank */
    411            CAN1->FMR &= (uint32_t)0xFFFFC0F1 ;
   \   00000010   ........           LDR.W    R1,??DataTable5_1  ;; 0x40006600
   \   00000014   0968               LDR      R1,[R1, #+0]
   \   00000016   ........           LDR.W    R2,??DataTable5_7  ;; 0xffffc0f1
   \   0000001A   1140               ANDS     R1,R2,R1
   \   0000001C   ........           LDR.W    R2,??DataTable5_1  ;; 0x40006600
   \   00000020   1160               STR      R1,[R2, #+0]
    412            CAN1->FMR |= (uint32_t)(CAN_BankNumber)<<8;
   \   00000022   ........           LDR.W    R1,??DataTable5_1  ;; 0x40006600
   \   00000026   0968               LDR      R1,[R1, #+0]
   \   00000028   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   0000002A   51EA0021           ORRS     R1,R1,R0, LSL #+8
   \   0000002E   ........           LDR.W    R2,??DataTable5_1  ;; 0x40006600
   \   00000032   1160               STR      R1,[R2, #+0]
    413            /* Leave Initialisation mode for the filter */
    414            CAN1->FMR &= ~FMR_FINIT;
   \   00000034   ........           LDR.W    R1,??DataTable5_1  ;; 0x40006600
   \   00000038   0968               LDR      R1,[R1, #+0]
   \   0000003A   4908               LSRS     R1,R1,#+1
   \   0000003C   4900               LSLS     R1,R1,#+1
   \   0000003E   ........           LDR.W    R2,??DataTable5_1  ;; 0x40006600
   \   00000042   1160               STR      R1,[R2, #+0]
    415          }
   \   00000044   7047               BX       LR               ;; return
    416          
    417          /**
    418            * @brief  Enables or disables the specified CANx interrupts.
    419            * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
    420            * @param  CAN_IT: specifies the CAN interrupt sources to be enabled or disabled.
    421            *   This parameter can be: 
    422            *        -CAN_IT_TME, 
    423            *        -CAN_IT_FMP0, 
    424            *        -CAN_IT_FF0,
    425            *        -CAN_IT_FOV0, 
    426            *        -CAN_IT_FMP1, 
    427            *        -CAN_IT_FF1,
    428            *        -CAN_IT_FOV1, 
    429            *        -CAN_IT_EWG, 
    430            *        -CAN_IT_EPV,
    431            *        -CAN_IT_LEC, 
    432            *        -CAN_IT_ERR, 
    433            *        -CAN_IT_WKU or 
    434            *        -CAN_IT_SLK.
    435            * @param  NewState: new state of the CAN interrupts.
    436            *   This parameter can be: ENABLE or DISABLE.
    437            * @retval None.
    438            */

   \                                 In section .text, align 2, keep-with-next
    439          void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState)
    440          {
    441            /* Check the parameters */
    442            assert_param(IS_CAN_ALL_PERIPH(CANx));
    443            assert_param(IS_CAN_IT(CAN_IT));
    444            assert_param(IS_FUNCTIONAL_STATE(NewState));
    445          
    446            if (NewState != DISABLE)
   \                     CAN_ITConfig:
   \   00000000   D2B2               UXTB     R2,R2            ;; ZeroExt  R2,R2,#+24,#+24
   \   00000002   002A               CMP      R2,#+0
   \   00000004   03D0               BEQ.N    ??CAN_ITConfig_0
    447            {
    448              /* Enable the selected CANx interrupt */
    449              CANx->IER |= CAN_IT;
   \   00000006   4369               LDR      R3,[R0, #+20]
   \   00000008   0B43               ORRS     R3,R1,R3
   \   0000000A   4361               STR      R3,[R0, #+20]
   \   0000000C   02E0               B.N      ??CAN_ITConfig_1
    450            }
    451            else
    452            {
    453              /* Disable the selected CANx interrupt */
    454              CANx->IER &= ~CAN_IT;
   \                     ??CAN_ITConfig_0:
   \   0000000E   4369               LDR      R3,[R0, #+20]
   \   00000010   8B43               BICS     R3,R3,R1
   \   00000012   4361               STR      R3,[R0, #+20]
    455            }
    456          }
   \                     ??CAN_ITConfig_1:
   \   00000014   7047               BX       LR               ;; return
    457          
    458          /**
    459            * @brief  Initiates the transmission of a message.
    460            * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
    461            * @param  TxMessage: pointer to a structure which contains CAN Id, CAN
    462            *   DLC and CAN datas.
    463            * @retval The number of the mailbox that is used for transmission
    464            *   or CAN_NO_MB if there is no empty mailbox.
    465            */

   \                                 In section .text, align 2, keep-with-next
    466          uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage)
    467          {
   \                     CAN_Transmit:
   \   00000000   30B4               PUSH     {R4,R5}
   \   00000002   0200               MOVS     R2,R0
    468            uint8_t transmit_mailbox = 0;
   \   00000004   0020               MOVS     R0,#+0
    469            /* Check the parameters */
    470            assert_param(IS_CAN_ALL_PERIPH(CANx));
    471            assert_param(IS_CAN_IDTYPE(TxMessage->IDE));
    472            assert_param(IS_CAN_RTR(TxMessage->RTR));
    473            assert_param(IS_CAN_DLC(TxMessage->DLC));
    474          
    475            /* Select one empty transmit mailbox */
    476            if ((CANx->TSR&CAN_TSR_TME0) == CAN_TSR_TME0)
   \   00000006   9368               LDR      R3,[R2, #+8]
   \   00000008   5B01               LSLS     R3,R3,#+5
   \   0000000A   02D5               BPL.N    ??CAN_Transmit_0
    477            {
    478              transmit_mailbox = 0;
   \   0000000C   0023               MOVS     R3,#+0
   \   0000000E   1800               MOVS     R0,R3
   \   00000010   0DE0               B.N      ??CAN_Transmit_1
    479            }
    480            else if ((CANx->TSR&CAN_TSR_TME1) == CAN_TSR_TME1)
   \                     ??CAN_Transmit_0:
   \   00000012   9368               LDR      R3,[R2, #+8]
   \   00000014   1B01               LSLS     R3,R3,#+4
   \   00000016   02D5               BPL.N    ??CAN_Transmit_2
    481            {
    482              transmit_mailbox = 1;
   \   00000018   0123               MOVS     R3,#+1
   \   0000001A   1800               MOVS     R0,R3
   \   0000001C   07E0               B.N      ??CAN_Transmit_1
    483            }
    484            else if ((CANx->TSR&CAN_TSR_TME2) == CAN_TSR_TME2)
   \                     ??CAN_Transmit_2:
   \   0000001E   9368               LDR      R3,[R2, #+8]
   \   00000020   DB00               LSLS     R3,R3,#+3
   \   00000022   02D5               BPL.N    ??CAN_Transmit_3
    485            {
    486              transmit_mailbox = 2;
   \   00000024   0223               MOVS     R3,#+2
   \   00000026   1800               MOVS     R0,R3
   \   00000028   01E0               B.N      ??CAN_Transmit_1
    487            }
    488            else
    489            {
    490              transmit_mailbox = CAN_NO_MB;
   \                     ??CAN_Transmit_3:
   \   0000002A   0423               MOVS     R3,#+4
   \   0000002C   1800               MOVS     R0,R3
    491            }
    492          
    493            if (transmit_mailbox != CAN_NO_MB)
   \                     ??CAN_Transmit_1:
   \   0000002E   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   00000030   0428               CMP      R0,#+4
   \   00000032   75D0               BEQ.N    ??CAN_Transmit_4
    494            {
    495              /* Set up the Id */
    496              CANx->sTxMailBox[transmit_mailbox].TIR &= TMIDxR_TXRQ;
   \   00000034   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   00000036   12EB0013           ADDS     R3,R2,R0, LSL #+4
   \   0000003A   D3F88031           LDR      R3,[R3, #+384]
   \   0000003E   13F00103           ANDS     R3,R3,#0x1
   \   00000042   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   00000044   12EB0014           ADDS     R4,R2,R0, LSL #+4
   \   00000048   C4F88031           STR      R3,[R4, #+384]
    497              if (TxMessage->IDE == CAN_ID_STD)
   \   0000004C   0B7A               LDRB     R3,[R1, #+8]
   \   0000004E   002B               CMP      R3,#+0
   \   00000050   0FD1               BNE.N    ??CAN_Transmit_5
    498              {
    499                assert_param(IS_CAN_STDID(TxMessage->StdId));  
    500                CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->StdId << 21) | TxMessage->RTR);
   \   00000052   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   00000054   12EB0013           ADDS     R3,R2,R0, LSL #+4
   \   00000058   D3F88031           LDR      R3,[R3, #+384]
   \   0000005C   0C68               LDR      R4,[R1, #+0]
   \   0000005E   4D7A               LDRB     R5,[R1, #+9]
   \   00000060   55EA4454           ORRS     R4,R5,R4, LSL #+21
   \   00000064   2343               ORRS     R3,R4,R3
   \   00000066   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   00000068   12EB0014           ADDS     R4,R2,R0, LSL #+4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -