📄 stm32f10x_nvic.lst
字号:
100 * Return : None
101 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
102 void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)
103 {
104 /* Check the parameters */
105 assert(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));
106
107 /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
108 SCB->AIRC = AIRC_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]
109 }
\ 00000008 7047 BX LR ;; return
110
111 /*******************************************************************************
112 * Function Name : NVIC_Init
113 * Description : Initializes the NVIC peripheral according to the specified
114 * parameters in the NVIC_InitStruct.
115 * Input : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure
116 * that contains the configuration information for the
117 * specified NVIC peripheral.
118 * Output : None
119 * Return : None
120 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
121 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
122 {
\ NVIC_Init:
\ 00000000 F0B5 PUSH {R4-R7,LR}
\ 00000002 0100 MOVS R1,R0
123 u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00;
124 u32 tmppre = 0, tmpsub = 0x0F;
125
126 /* Check the parameters */
127 assert(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
128 assert(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct->NVIC_IRQChannel));
129 assert(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));
130 assert(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
131
132 if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
\ 00000004 C878 LDRB R0,[R1, #+3]
\ 00000006 0028 CMP R0,#+0
\ 00000008 38D0 BEQ.N ??NVIC_Init_0
133 {
134 /* Compute the Corresponding IRQ Priority --------------------------------*/
135 tmppriority = (0x700 - (SCB->AIRC & (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
136 tmppre = (0x4 - tmppriority);
137 tmpsub = tmpsub >> tmppriority;
138
139 tmppriority = (u32)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
140 tmppriority |= NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
141
142 tmppriority = tmppriority << 0x04;
143 tmppriority = ((u32)tmppriority) << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
144
145 tmpreg = NVIC->Priority[(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]
146 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
147 tmpreg &= ~tmpmask;
148 tmppriority &= tmpmask;
149 tmpreg |= tmppriority;
150
151 NVIC->Priority[(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]
152
153 /* Enable the Selected IRQ Channels --------------------------------------*/
154 NVIC->Enable[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
155 (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}
156 }
157 else
158 {
159 /* Disable the Selected IRQ Channels -------------------------------------*/
160 NVIC->Disable[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
161 (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]
162 }
163 }
\ 00000090 F0BD POP {R4-R7,PC} ;; return
\ 00000092 00BF Nop
\ ??NVIC_Init_1:
\ 00000094 00E100E0 DC32 0xffffffffe000e100
164
165 /*******************************************************************************
166 * Function Name : NVIC_StructInit
167 * Description : Fills each NVIC_InitStruct member with its default value.
168 * Input : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure which
169 * will be initialized.
170 * Output : None
171 * Return : None
172 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
173 void NVIC_StructInit(NVIC_InitTypeDef* NVIC_InitStruct)
174 {
175 /* NVIC_InitStruct members default value */
176 NVIC_InitStruct->NVIC_IRQChannel = 0x00;
\ NVIC_StructInit:
\ 00000000 0021 MOVS R1,#+0
\ 00000002 0170 STRB R1,[R0, #+0]
177 NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority = 0x00;
\ 00000004 4170 STRB R1,[R0, #+1]
178 NVIC_InitStruct->NVIC_IRQChannelSubPriority = 0x00;
\ 00000006 8170 STRB R1,[R0, #+2]
179 NVIC_InitStruct->NVIC_IRQChannelCmd = DISABLE;
\ 00000008 C170 STRB R1,[R0, #+3]
180 }
\ 0000000A 7047 BX LR ;; return
181
182 /*******************************************************************************
183 * Function Name : NVIC_SETPRIMASK
184 * Description : Enables the PRIMASK priority: Raises the execution priority to 0.
185 * Input : None
186 * Output : None
187 * Return : None
188 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
189 void NVIC_SETPRIMASK(void)
190 {
\ NVIC_SETPRIMASK:
\ 00000000 00B5 PUSH {LR}
191 __SETPRIMASK();
\ 00000002 ........ _BLF __SETPRIMASK,??__SETPRIMASK??rT
192 }
\ 00000006 00BD POP {PC} ;; return
193
194 /*******************************************************************************
195 * Function Name : NVIC_RESETPRIMASK
196 * Description : Disables the PRIMASK priority.
197 * Input : None
198 * Output : None
199 * Return : None
200 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
201 void NVIC_RESETPRIMASK(void)
202 {
\ NVIC_RESETPRIMASK:
\ 00000000 00B5 PUSH {LR}
203 __RESETPRIMASK();
\ 00000002 ........ _BLF __RESETPRIMASK,??__RESETPRIMASK??rT
204 }
\ 00000006 00BD POP {PC} ;; return
205
206 /*******************************************************************************
207 * Function Name : NVIC_SETFAULTMASK
208 * Description : Enables the FAULTMASK priority: Raises the execution priority to -1.
209 * Input : None
210 * Output : None
211 * Return : None
212 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
213 void NVIC_SETFAULTMASK(void)
214 {
\ NVIC_SETFAULTMASK:
\ 00000000 00B5 PUSH {LR}
215 __SETFAULTMASK();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -