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

📄 bsp_int.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 5 页
字号:
    159              CPU_IntDis();
   \   00000002   ........           _BLF     CPU_IntDis,??CPU_IntDis??rT
    160          }
   \   00000006   00BD               POP      {PC}             ;; return
    161          
    162          
    163          /*
    164          *********************************************************************************************************
    165          *                                               BSP_IntEn()
    166          *
    167          * Description : Enable interrupt.
    168          *
    169          * Argument(s) : int_id      Interrupt to enable.
    170          *
    171          * Return(s)   : none.
    172          *
    173          * Caller(s)   : Application.
    174          *
    175          * Note(s)     : none.
    176          *********************************************************************************************************
    177          */
    178          

   \                                 In segment CODE, align 4, keep-with-next
    179          void  BSP_IntEn (CPU_DATA  int_id)
    180          {
   \                     BSP_IntEn:
   \   00000000   00B5               PUSH     {LR}
    181              if (int_id < BSP_INT_SRC_NBR) {
   \   00000002   3C28               CMP      R0,#+60
   \   00000004   03D2               BCS.N    ??BSP_IntEn_0
    182                  CPU_IntSrcEn(int_id + 16);
   \   00000006   1030               ADDS     R0,R0,#+16
   \   00000008   C0B2               UXTB     R0,R0
   \   0000000A   ........           _BLF     CPU_IntSrcEn,??CPU_IntSrcEn??rT
    183              }
    184          }
   \                     ??BSP_IntEn_0:
   \   0000000E   00BD               POP      {PC}             ;; return
    185          
    186          
    187          /*
    188          *********************************************************************************************************
    189          *                                            BSP_IntVectSet()
    190          *
    191          * Description : Assign ISR handler.
    192          *
    193          * Argument(s) : int_id      Interrupt for which vector will be set.
    194          *
    195          *               isr         Handler to assign
    196          *
    197          * Return(s)   : none.
    198          *
    199          * Caller(s)   : Application.
    200          *
    201          * Note(s)     : none.
    202          *********************************************************************************************************
    203          */
    204          

   \                                 In segment CODE, align 4, keep-with-next
    205          void  BSP_IntVectSet (CPU_DATA       int_id,
    206                                CPU_FNCT_VOID  isr)
    207          {
   \                     BSP_IntVectSet:
   \   00000000   30B5               PUSH     {R4,R5,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1
    208          #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
    209              CPU_SR   cpu_sr;
    210          #endif
    211          
    212          
    213              if (int_id < BSP_INT_SRC_NBR) {
   \   00000006   3C2C               CMP      R4,#+60
   \   00000008   06D2               BCS.N    ??BSP_IntVectSet_0
    214                  CPU_CRITICAL_ENTER();
   \   0000000A   ........           _BLF     CPU_SR_Save,??CPU_SR_Save??rT
    215                  BSP_IntVectTbl[int_id] = isr;
   \   0000000E   ....               LDR.N    R1,??DataTable1  ;; BSP_IntVectTbl
   \   00000010   41F82450           STR      R5,[R1, R4, LSL #+2]
    216                  CPU_CRITICAL_EXIT();
   \   00000014   ........           _BLF     CPU_SR_Restore,??CPU_SR_Restore??rT
    217              }
    218          }
   \                     ??BSP_IntVectSet_0:
   \   00000018   30BD               POP      {R4,R5,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 segment CODE, align 4, 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          #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
    243              CPU_SR    cpu_sr;
    244          #endif
    245          
    246          
    247              if (int_id < BSP_INT_SRC_NBR) {
   \   00000006   3C2C               CMP      R4,#+60
   \   00000008   0BD2               BCS.N    ??BSP_IntPrioSet_0
    248                  CPU_CRITICAL_ENTER();
   \   0000000A   ........           _BLF     CPU_SR_Save,??CPU_SR_Save??rT
   \   0000000E   0600               MOVS     R6,R0
    249                  CPU_IntSrcPrioSet(int_id + 16, prio);
   \   00000010   2900               MOVS     R1,R5
   \   00000012   1034               ADDS     R4,R4,#+16
   \   00000014   2000               MOVS     R0,R4
   \   00000016   C0B2               UXTB     R0,R0
   \   00000018   ........           _BLF     CPU_IntSrcPrioSet,??CPU_IntSrcPrioSet??rT
    250                  CPU_CRITICAL_EXIT();
   \   0000001C   3000               MOVS     R0,R6
   \   0000001E   ........           _BLF     CPU_SR_Restore,??CPU_SR_Restore??rT
    251              }
    252          }
   \                     ??BSP_IntPrioSet_0:
   \   00000022   70BD               POP      {R4-R6,PC}       ;; return
    253          
    254          
    255          /*
    256          *********************************************************************************************************
    257          *********************************************************************************************************
    258          *                                           INTERNAL FUNCTIONS
    259          *********************************************************************************************************
    260          *********************************************************************************************************
    261          */
    262          
    263          /*
    264          *********************************************************************************************************
    265          *                                              BSP_IntInit()
    266          *
    267          * Description : Initialize interrupts:
    268          *
    269          * Argument(s) : none.
    270          *
    271          * Return(s)   : none.
    272          *
    273          * Caller(s)   : BSP_Init().
    274          *
    275          * Note(s)     : none.
    276          *********************************************************************************************************
    277          */
    278          

   \                                 In segment CODE, align 4, keep-with-next
    279          void  BSP_IntInit (void)
    280          {
   \                     BSP_IntInit:
   \   00000000   10B5               PUSH     {R4,LR}
    281              CPU_DATA  int_id;
    282          
    283          
    284              for (int_id = 0; int_id < BSP_INT_SRC_NBR; int_id++) {
   \   00000002   0024               MOVS     R4,#+0
   \   00000004   04E0               B.N      ??BSP_IntInit_0
    285                  BSP_IntVectSet(int_id, BSP_IntHandlerDummy);
   \                     ??BSP_IntInit_1:
   \   00000006   0449               LDR.N    R1,??BSP_IntInit_2  ;; BSP_IntHandlerDummy
   \   00000008   2000               MOVS     R0,R4
   \   0000000A   ........           BL       BSP_IntVectSet
    286              }
   \   0000000E   641C               ADDS     R4,R4,#+1
   \                     ??BSP_IntInit_0:
   \   00000010   3C2C               CMP      R4,#+60
   \   00000012   F8D3               BCC.N    ??BSP_IntInit_1
    287          }
   \   00000014   10BD               POP      {R4,PC}          ;; return
   \   00000016   00BF               Nop      
   \                     ??BSP_IntInit_2:
   \   00000018   ........           DC32     BSP_IntHandlerDummy
    288          
    289          
    290          /*
    291          *********************************************************************************************************
    292          *                                        BSP_IntHandler####()
    293          *
    294          * Description : Handle an interrupt.
    295          *
    296          * Argument(s) : none.
    297          *
    298          * Return(s)   : none.
    299          *
    300          * Caller(s)   : This is an ISR.
    301          *
    302          * Note(s)     : none.
    303          *********************************************************************************************************
    304          */
    305          

   \                                 In segment CODE, align 4, keep-with-next
    306          void  BSP_IntHandlerWWDG          (void)  { BSP_IntHandler(BSP_INT_ID_WWDG);            }
   \                     BSP_IntHandlerWWDG:
   \   00000000   00B5               PUSH     {LR}
   \   00000002   0020               MOVS     R0,#+0
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   00BD               POP      {PC}             ;; return

   \                                 In segment CODE, align 4, keep-with-next
    307          void  BSP_IntHandlerPVD           (void)  { BSP_IntHandler(BSP_INT_ID_PVD);             }
   \                     BSP_IntHandlerPVD:
   \   00000000   00B5               PUSH     {LR}
   \   00000002   0120               MOVS     R0,#+1
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   00BD               POP      {PC}             ;; return

   \                                 In segment CODE, align 4, keep-with-next
    308          void  BSP_IntHandlerTAMPER        (void)  { BSP_IntHandler(BSP_INT_ID_TAMPER);          }
   \                     BSP_IntHandlerTAMPER:
   \   00000000   00B5               PUSH     {LR}
   \   00000002   0220               MOVS     R0,#+2
   \   00000004   ........           BL       BSP_IntHandler
   \   00000008   00BD               POP      {PC}             ;; return

   \                                 In segment CODE, align 4, keep-with-next
    309          void  BSP_IntHandlerRTC           (void)  { BSP_IntHandler(BSP_INT_ID_RTC);             }
   \                     BSP_IntHandlerRTC:
   \   00000000   00B5               PUSH     {LR}

⌨️ 快捷键说明

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