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

📄 stm32f10x_nvic.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 5 页
字号:

   \                                 In segment CODE, align 4, keep-with-next
     99          void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)
    100          {
    101            /* Check the parameters */
    102            assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));
    103            
    104            /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
    105            SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup;
   \                     NVIC_PriorityGroupConfig:
   \   00000000   ....               LDR.N    R1,??DataTable27  ;; 0xffffffffe000ed0c
   \   00000002   ....               LDR.N    R2,??DataTable14  ;; 0x5fa0000
   \   00000004   0243               ORRS     R2,R2,R0
   \   00000006   0A60               STR      R2,[R1, #+0]
    106          }
   \   00000008   7047               BX       LR               ;; return
    107          
    108          /*******************************************************************************
    109          * Function Name  : NVIC_Init
    110          * Description    : Initializes the NVIC peripheral according to the specified
    111          *                  parameters in the NVIC_InitStruct.
    112          * Input          : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure
    113          *                    that contains the configuration information for the
    114          *                    specified NVIC peripheral.
    115          * Output         : None
    116          * Return         : None
    117          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    118          void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
    119          {
   \                     NVIC_Init:
   \   00000000   F0B5               PUSH     {R4-R7,LR}
   \   00000002   0100               MOVS     R1,R0
    120            u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00;
    121            u32 tmppre = 0, tmpsub = 0x0F;
    122          
    123            /* Check the parameters */
    124            assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
    125            assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct->NVIC_IRQChannel));
    126            assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));  
    127            assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
    128              
    129            if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
   \   00000004   C878               LDRB     R0,[R1, #+3]
   \   00000006   0028               CMP      R0,#+0
   \   00000008   38D0               BEQ.N    ??NVIC_Init_0
    130            {
    131              /* Compute the Corresponding IRQ Priority --------------------------------*/    
    132              tmppriority = (0x700 - (SCB->AIRCR & (u32)0x700))>> 0x08;
   \   0000000A   ....               LDR.N    R0,??DataTable27  ;; 0xffffffffe000ed0c
   \   0000000C   0068               LDR      R0,[R0, #+0]
   \   0000000E   10F4E060           ANDS     R0,R0,#0x700
   \   00000012   D0F5E060           RSBS     R0,R0,#+1792
   \   00000016   000A               LSRS     R0,R0,#+8
    133              tmppre = (0x4 - tmppriority);
    134              tmpsub = tmpsub >> tmppriority;
    135              
    136              tmppriority = (u32)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
    137              tmppriority |=  NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
    138          
    139              tmppriority = tmppriority << 0x04;
    140              tmppriority = ((u32)tmppriority) << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
    141              
    142              tmpreg = NVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)];
   \   00000018   0A78               LDRB     R2,[R1, #+0]
   \   0000001A   9210               ASRS     R2,R2,#+2
   \   0000001C   ....               LDR.N    R3,??DataTable17  ;; 0xffffffffe000e400
   \   0000001E   53F82240           LDR      R4,[R3, R2, LSL #+2]
    143              tmpmask = (u32)0xFF << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
   \   00000022   FF22               MOVS     R2,#+255
   \   00000024   0B78               LDRB     R3,[R1, #+0]
   \   00000026   9B07               LSLS     R3,R3,#+30
   \   00000028   9B0F               LSRS     R3,R3,#+30
   \   0000002A   DB00               LSLS     R3,R3,#+3
   \   0000002C   9A40               LSLS     R2,R2,R3
    144              tmpreg &= ~tmpmask;
    145              tmppriority &= tmpmask;  
    146              tmpreg |= tmppriority;
    147          
    148              NVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg;
   \   0000002E   0B78               LDRB     R3,[R1, #+0]
   \   00000030   1D00               MOVS     R5,R3
   \   00000032   AD10               ASRS     R5,R5,#+2
   \   00000034   ....               LDR.N    R3,??DataTable17  ;; 0xffffffffe000e400
   \   00000036   AC46               MOV      R12,R5
   \   00000038   9443               BICS     R4,R4,R2
   \   0000003A   4F78               LDRB     R7,[R1, #+1]
   \   0000003C   0426               MOVS     R6,#+4
   \   0000003E   0500               MOVS     R5,R0
   \   00000040   751B               SUBS     R5,R6,R5
   \   00000042   AF40               LSLS     R7,R7,R5
   \   00000044   3D00               MOVS     R5,R7
   \   00000046   8E78               LDRB     R6,[R1, #+2]
   \   00000048   0F27               MOVS     R7,#+15
   \   0000004A   C740               LSRS     R7,R7,R0
   \   0000004C   3740               ANDS     R7,R7,R6
   \   0000004E   2F43               ORRS     R7,R7,R5
   \   00000050   3801               LSLS     R0,R7,#+4
   \   00000052   0D78               LDRB     R5,[R1, #+0]
   \   00000054   AD07               LSLS     R5,R5,#+30
   \   00000056   AD0F               LSRS     R5,R5,#+30
   \   00000058   ED00               LSLS     R5,R5,#+3
   \   0000005A   A840               LSLS     R0,R0,R5
   \   0000005C   0240               ANDS     R2,R2,R0
   \   0000005E   2243               ORRS     R2,R2,R4
   \   00000060   6546               MOV      R5,R12
   \   00000062   43F82520           STR      R2,[R3, R5, LSL #+2]
    149              
    150              /* Enable the Selected IRQ Channels --------------------------------------*/
    151              NVIC->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
    152                (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
   \   00000066   0878               LDRB     R0,[R1, #+0]
   \   00000068   4011               ASRS     R0,R0,#+5
   \   0000006A   0A4A               LDR.N    R2,??NVIC_Init_1  ;; 0xffffffffe000e100
   \   0000006C   0123               MOVS     R3,#+1
   \   0000006E   0978               LDRB     R1,[R1, #+0]
   \   00000070   C906               LSLS     R1,R1,#+27
   \   00000072   C90E               LSRS     R1,R1,#+27
   \   00000074   8B40               LSLS     R3,R3,R1
   \   00000076   42F82030           STR      R3,[R2, R0, LSL #+2]
   \   0000007A   F0BD               POP      {R4-R7,PC}
    153            }
    154            else
    155            {
    156              /* Disable the Selected IRQ Channels -------------------------------------*/
    157              NVIC->ICER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
    158                (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
   \                     ??NVIC_Init_0:
   \   0000007C   0878               LDRB     R0,[R1, #+0]
   \   0000007E   4011               ASRS     R0,R0,#+5
   \   00000080   ....               LDR.N    R2,??DataTable18  ;; 0xffffffffe000e180
   \   00000082   0123               MOVS     R3,#+1
   \   00000084   0978               LDRB     R1,[R1, #+0]
   \   00000086   C906               LSLS     R1,R1,#+27
   \   00000088   C90E               LSRS     R1,R1,#+27
   \   0000008A   8B40               LSLS     R3,R3,R1
   \   0000008C   42F82030           STR      R3,[R2, R0, LSL #+2]
    159            }
    160          }
   \   00000090   F0BD               POP      {R4-R7,PC}       ;; return
   \   00000092   00BF               Nop      
   \                     ??NVIC_Init_1:
   \   00000094   00E100E0           DC32     0xffffffffe000e100
    161          
    162          /*******************************************************************************
    163          * Function Name  : NVIC_StructInit
    164          * Description    : Fills each NVIC_InitStruct member with its default value.
    165          * Input          : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure which
    166          *                    will be initialized.
    167          * Output         : None
    168          * Return         : None
    169          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    170          void NVIC_StructInit(NVIC_InitTypeDef* NVIC_InitStruct)
    171          {
    172            /* NVIC_InitStruct members default value */
    173            NVIC_InitStruct->NVIC_IRQChannel = 0x00;
   \                     NVIC_StructInit:
   \   00000000   0021               MOVS     R1,#+0
   \   00000002   0170               STRB     R1,[R0, #+0]
    174            NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority = 0x00;
   \   00000004   4170               STRB     R1,[R0, #+1]
    175            NVIC_InitStruct->NVIC_IRQChannelSubPriority = 0x00;
   \   00000006   8170               STRB     R1,[R0, #+2]
    176            NVIC_InitStruct->NVIC_IRQChannelCmd = DISABLE;
   \   00000008   C170               STRB     R1,[R0, #+3]
    177          }
   \   0000000A   7047               BX       LR               ;; return
    178          
    179          /*******************************************************************************
    180          * Function Name  : NVIC_SETPRIMASK
    181          * Description    : Enables the PRIMASK priority: Raises the execution priority to 0.
    182          * Input          : None
    183          * Output         : None
    184          * Return         : None
    185          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    186          void NVIC_SETPRIMASK(void)
    187          {
   \                     NVIC_SETPRIMASK:
   \   00000000   00B5               PUSH     {LR}
    188            __SETPRIMASK();
   \   00000002   ........           _BLF     __SETPRIMASK,??__SETPRIMASK??rT
    189          }
   \   00000006   00BD               POP      {PC}             ;; return
    190          
    191          /*******************************************************************************
    192          * Function Name  : NVIC_RESETPRIMASK
    193          * Description    : Disables the PRIMASK priority.
    194          * Input          : None
    195          * Output         : None
    196          * Return         : None
    197          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    198          void NVIC_RESETPRIMASK(void)
    199          {
   \                     NVIC_RESETPRIMASK:
   \   00000000   00B5               PUSH     {LR}
    200            __RESETPRIMASK();
   \   00000002   ........           _BLF     __RESETPRIMASK,??__RESETPRIMASK??rT
    201          }
   \   00000006   00BD               POP      {PC}             ;; return
    202          
    203          /*******************************************************************************
    204          * Function Name  : NVIC_SETFAULTMASK
    205          * Description    : Enables the FAULTMASK priority: Raises the execution priority to -1.
    206          * Input          : None
    207          * Output         : None
    208          * Return         : None
    209          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    210          void NVIC_SETFAULTMASK(void)
    211          {
   \                     NVIC_SETFAULTMASK:
   \   00000000   00B5               PUSH     {LR}
    212            __SETFAULTMASK();
   \   00000002   ........           _BLF     __SETFAULTMASK,??__SETFAULTMASK??rT
    213          }

⌨️ 快捷键说明

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