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

📄 bsp_int.lst

📁 stm32+ucos-ii
💻 LST
📖 第 1 页 / 共 5 页
字号:
    170          *
    171          * Argument(s) : int_id      Interrupt to enable.
    172          *
    173          * Return(s)   : none.
    174          *
    175          * Caller(s)   : Application.
    176          *
    177          * Note(s)     : none.
    178          *********************************************************************************************************
    179          */
    180          

   \                                 In section .text, align 2, keep-with-next
    181          void  BSP_IntEn (CPU_DATA  int_id)
    182          {
   \                     BSP_IntEn:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
    183              if (int_id < BSP_INT_SRC_NBR) {
   \   00000004   442C               CMP      R4,#+68
   \   00000006   04D2               BCS.N    ??BSP_IntEn_0
    184                  CPU_IntSrcEn(int_id + 16);
   \   00000008   14F11000           ADDS     R0,R4,#+16
   \   0000000C   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   0000000E   ........           BL       CPU_IntSrcEn
    185              }
    186          }
   \                     ??BSP_IntEn_0:
   \   00000012   10BD               POP      {R4,PC}          ;; return
    187          
    188          
    189          /*
    190          *********************************************************************************************************
    191          *                                            BSP_IntVectSet()
    192          *
    193          * Description : Assign ISR handler.
    194          *
    195          * Argument(s) : int_id      Interrupt for which vector will be set.
    196          *
    197          *               isr         Handler to assign
    198          *
    199          * Return(s)   : none.
    200          *
    201          * Caller(s)   : Application.
    202          *
    203          * Note(s)     : none.
    204          *********************************************************************************************************
    205          */
    206          

   \                                 In section .text, align 2, keep-with-next
    207          void  BSP_IntVectSet (CPU_DATA       int_id,
    208                                CPU_FNCT_VOID  isr)
    209          {
   \                     BSP_IntVectSet:
   \   00000000   70B5               PUSH     {R4-R6,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1
    210              CPU_SR_ALLOC();
   \   00000006   0026               MOVS     R6,#+0
    211          
    212          
    213              if (int_id < BSP_INT_SRC_NBR) {
   \   00000008   442C               CMP      R4,#+68
   \   0000000A   08D2               BCS.N    ??BSP_IntVectSet_0
    214                  CPU_CRITICAL_ENTER();
   \   0000000C   ........           BL       CPU_SR_Save
   \   00000010   0600               MOVS     R6,R0
    215                  BSP_IntVectTbl[int_id] = isr;
   \   00000012   ....               LDR.N    R0,??DataTable2
   \   00000014   40F82450           STR      R5,[R0, R4, LSL #+2]
    216                  CPU_CRITICAL_EXIT();
   \   00000018   3000               MOVS     R0,R6
   \   0000001A   ........           BL       CPU_SR_Restore
    217              }
    218          }
   \                     ??BSP_IntVectSet_0:
   \   0000001E   70BD               POP      {R4-R6,PC}       ;; return
    219          
    220          
    221          /*
    222          *********************************************************************************************************
    223          *                                            BSP_IntPrioSet()
    224          *
    225          * Description : Assign ISR priority.
    226          *
    227          * Argument(s) : int_id      Interrupt for which vector will be set.
    228          *
    229          *               prio        Priority to assign
    230          *
    231          * Return(s)   : none.
    232          *
    233          * Caller(s)   : Application.
    234          *
    235          * Note(s)     : none.
    236          *********************************************************************************************************
    237          */
    238          

   \                                 In section .text, align 2, keep-with-next
    239          void  BSP_IntPrioSet (CPU_DATA    int_id,
    240                                CPU_INT08U  prio)
    241          {
   \                     BSP_IntPrioSet:
   \   00000000   70B5               PUSH     {R4-R6,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1
    242              CPU_SR_ALLOC();
   \   00000006   0026               MOVS     R6,#+0
    243          
    244          
    245              if (int_id < BSP_INT_SRC_NBR) {
   \   00000008   442C               CMP      R4,#+68
   \   0000000A   0CD2               BCS.N    ??BSP_IntPrioSet_0
    246                  CPU_CRITICAL_ENTER();
   \   0000000C   ........           BL       CPU_SR_Save
   \   00000010   0600               MOVS     R6,R0
    247                  CPU_IntSrcPrioSet(int_id + 16, prio);
   \   00000012   2900               MOVS     R1,R5
   \   00000014   C9B2               UXTB     R1,R1            ;; ZeroExt  R1,R1,#+24,#+24
   \   00000016   14F11000           ADDS     R0,R4,#+16
   \   0000001A   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   0000001C   ........           BL       CPU_IntSrcPrioSet
    248                  CPU_CRITICAL_EXIT();
   \   00000020   3000               MOVS     R0,R6
   \   00000022   ........           BL       CPU_SR_Restore
    249              }
    250          }
   \                     ??BSP_IntPrioSet_0:
   \   00000026   70BD               POP      {R4-R6,PC}       ;; return
    251          
    252          
    253          /*
    254          *********************************************************************************************************
    255          *********************************************************************************************************
    256          *                                           INTERNAL FUNCTIONS
    257          *********************************************************************************************************
    258          *********************************************************************************************************
    259          */
    260          
    261          /*
    262          *********************************************************************************************************
    263          *                                              BSP_IntInit()
    264          *
    265          * Description : Initialize interrupts:
    266          *
    267          * Argument(s) : none.
    268          *
    269          * Return(s)   : none.
    270          *
    271          * Caller(s)   : BSP_Init().
    272          *
    273          * Note(s)     : none.
    274          *********************************************************************************************************
    275          */
    276          

   \                                 In section .text, align 2, keep-with-next
    277          void  BSP_IntInit (void)
    278          {
   \                     BSP_IntInit:
   \   00000000   10B5               PUSH     {R4,LR}
    279              CPU_DATA  int_id;
    280          
    281          
    282              for (int_id = 0; int_id < BSP_INT_SRC_NBR; int_id++) {
   \   00000002   0020               MOVS     R0,#+0
   \   00000004   0400               MOVS     R4,R0
   \                     ??BSP_IntInit_0:
   \   00000006   442C               CMP      R4,#+68
   \   00000008   05D2               BCS.N    ??BSP_IntInit_1
    283                  BSP_IntVectSet(int_id, BSP_IntHandlerDummy);
   \   0000000A   ....               LDR.N    R1,??DataTable2_1
   \   0000000C   2000               MOVS     R0,R4
   \   0000000E   ........           BL       BSP_IntVectSet
    284              }
   \   00000012   641C               ADDS     R4,R4,#+1
   \   00000014   F7E7               B.N      ??BSP_IntInit_0
    285          }
   \                     ??BSP_IntInit_1:
   \   00000016   10BD               POP      {R4,PC}          ;; return
    286          
    287          
    288          /*
    289          *********************************************************************************************************
    290          *                                        BSP_IntHandler####()
    291          *
    292          * Description : Handle an interrupt.
    293          *
    294          * Argument(s) : none.
    295          *
    296          * Return(s)   : none.
    297          *
    298          * Caller(s)   : This is an ISR.
    299          *
    300          * Note(s)     : none.
    301          *********************************************************************************************************
    302          */
    303          

   \                                 In section .text, align 2, keep-with-next
    304          void  BSP_IntHandlerWWDG          (void)  { BSP_IntHandler(BSP_INT_ID_WWDG);            }
   \                     BSP_IntHandlerWWDG:
   \   00000000   80B5               PUSH     {R7,LR}
   \   00000002   0020               MOVS     R0,#+0
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   01BD               POP      {R0,PC}          ;; return

   \                                 In section .text, align 2, keep-with-next
    305          void  BSP_IntHandlerPVD           (void)  { BSP_IntHandler(BSP_INT_ID_PVD);             }
   \                     BSP_IntHandlerPVD:
   \   00000000   80B5               PUSH     {R7,LR}
   \   00000002   0120               MOVS     R0,#+1
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   01BD               POP      {R0,PC}          ;; return

   \                                 In section .text, align 2, keep-with-next
    306          void  BSP_IntHandlerTAMPER        (void)  { BSP_IntHandler(BSP_INT_ID_TAMPER);          }
   \                     BSP_IntHandlerTAMPER:
   \   00000000   80B5               PUSH     {R7,LR}
   \   00000002   0220               MOVS     R0,#+2
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   01BD               POP      {R0,PC}          ;; return

   \                                 In section .text, align 2, keep-with-next
    307          void  BSP_IntHandlerRTC           (void)  { BSP_IntHandler(BSP_INT_ID_RTC);             }
   \                     BSP_IntHandlerRTC:
   \   00000000   80B5               PUSH     {R7,LR}
   \   00000002   0320               MOVS     R0,#+3
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   01BD               POP      {R0,PC}          ;; return

   \                                 In section .text, align 2, keep-with-next
    308          void  BSP_IntHandlerFLASH         (void)  { BSP_IntHandler(BSP_INT_ID_FLASH);           }
   \                     BSP_IntHandlerFLASH:
   \   00000000   80B5               PUSH     {R7,LR}
   \   00000002   0420               MOVS     R0,#+4
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   01BD               POP      {R0,PC}          ;; return

⌨️ 快捷键说明

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