📄 probe_rs232c.lst
字号:
190 gpio_init.GPIO_Pin = GPIO_Pin_9;
\ 00000032 ADF80040 STRH R4,[SP, #+0]
191 gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
\ 00000036 0320 MOVS R0,#+3
\ 00000038 8DF80200 STRB R0,[SP, #+2]
192 gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;
\ 0000003C 1820 MOVS R0,#+24
\ 0000003E 8DF80300 STRB R0,[SP, #+3]
193 GPIO_Init(GPIOA, &gpio_init);
\ 00000042 124C LDR.N R4,??ProbeRS232_InitTarget_0 ;; 0x40010800
\ 00000044 6946 MOV R1,SP
\ 00000046 2000 MOVS R0,R4
\ 00000048 ........ _BLF GPIO_Init,??GPIO_Init??rT
194
195 /* Configure GPIOA.10 as input floating */
196 gpio_init.GPIO_Pin = GPIO_Pin_10;
\ 0000004C 200D LSRS R0,R4,#+20
\ 0000004E ADF80000 STRH R0,[SP, #+0]
197 gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
\ 00000052 0420 MOVS R0,#+4
\ 00000054 8DF80300 STRB R0,[SP, #+3]
198 GPIO_Init(GPIOA, &gpio_init);
\ 00000058 6946 MOV R1,SP
\ 0000005A 2000 MOVS R0,R4
\ 0000005C ........ _BLF GPIO_Init,??GPIO_Init??rT
199 #endif
200
201 /* ------------------ SETUP USART1 -------------------- */
202 USART_Init(USART1, &usart_init);
\ 00000060 .... LDR.N R4,??DataTable12 ;; 0x40013800
\ 00000062 03A9 ADD R1,SP,#+12
\ 00000064 2000 MOVS R0,R4
\ 00000066 ........ _BLF USART_Init,??USART_Init??rT
203 USART_ClockInit(USART1, &usart_clk_init);
\ 0000006A 01A9 ADD R1,SP,#+4
\ 0000006C 2000 MOVS R0,R4
\ 0000006E ........ _BLF USART_ClockInit,??USART_ClockInit??rT
204 USART_Cmd(USART1, ENABLE);
\ 00000072 0121 MOVS R1,#+1
\ 00000074 2000 MOVS R0,R4
\ 00000076 ........ _BLF USART_Cmd,??USART_Cmd??rT
205
206 BSP_IntVectSet(BSP_INT_ID_USART1, ProbeRS232_RxTxISRHandler);
\ 0000007A 0549 LDR.N R1,??ProbeRS232_InitTarget_0+0x4 ;; ProbeRS232_RxTxISRHandler
\ 0000007C 2520 MOVS R0,#+37
\ 0000007E ........ _BLF BSP_IntVectSet,??BSP_IntVectSet??rT
207 BSP_IntEn(BSP_INT_ID_USART1);
\ 00000082 2520 MOVS R0,#+37
\ 00000084 ........ _BLF BSP_IntEn,??BSP_IntEn??rT
208 #endif
209
210 #if (PROBE_RS232_COMM_SEL == PROBE_RS232_UART_2)
211 BSP_PeriphEn(BSP_PERIPH_ID_USART2);
212
213 /* ----------------- SETUP USART2 GPIO ---------------- */
214 #if (PROBE_RS232_UART_2_REMAP > 0)
215 BSP_PeriphEn(BSP_PERIPH_ID_IOPD);
216 BSP_PeriphEn(BSP_PERIPH_ID_AFIO);
217 GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
218
219 /* Configure GPIOD.4 as push-pull */
220 gpio_init.GPIO_Pin = GPIO_Pin_4;
221 gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
222 gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;
223 GPIO_Init(GPIOD, &gpio_init);
224
225 /* Configure GPIOD.3 as input floating */
226 gpio_init.GPIO_Pin = GPIO_Pin_3;
227 gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
228 GPIO_Init(GPIOD, &gpio_init);
229 #else
230 BSP_PeriphEn(BSP_PERIPH_ID_IOPA);
231
232 /* Configure GPIOA.2 as push-pull */
233 gpio_init.GPIO_Pin = GPIO_Pin_2;
234 gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
235 gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;
236 GPIO_Init(GPIOA, &gpio_init);
237
238 /* Configure GPIOA.3 as input floating */
239 gpio_init.GPIO_Pin = GPIO_Pin_3;
240 gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
241 GPIO_Init(GPIOA, &gpio_init);
242 #endif
243
244 /* ------------------ SETUP USART2 -------------------- */
245 USART_Init(USART2, &usart_init);
246 USART_ClockInit(USART2, &usart_clk_init);
247 USART_Cmd(USART2, ENABLE);
248
249 BSP_IntVectSet(BSP_INT_ID_USART2, ProbeRS232_RxTxISRHandler);
250 BSP_IntEn(BSP_INT_ID_USART2);
251 #endif
252
253 #if (PROBE_RS232_COMM_SEL == PROBE_RS232_UART_3)
254 BSP_PeriphEn(BSP_PERIPH_ID_USART3);
255
256 /* ----------------- SETUP USART3 GPIO ---------------- */
257 #if (PROBE_RS232_UART_3_REMAP_PARTIAL > 0)
258 BSP_PeriphEn(BSP_PERIPH_ID_IOPC);
259 BSP_PeriphEn(BSP_PERIPH_ID_AFIO);
260 GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);
261
262 /* Configure GPIOC.10 as push-pull */
263 gpio_init.GPIO_Pin = GPIO_Pin_10;
264 gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
265 gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;
266 GPIO_Init(GPIOC, &gpio_init);
267
268 /* Configure GPIOC.11 as input floating */
269 gpio_init.GPIO_Pin = GPIO_Pin_11;
270 gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
271 GPIO_Init(GPIOC, &gpio_init);
272
273 #elif (PROBE_RS232_UART_3_REMAP_FULL > 0)
274 BSP_PeriphEn(BSP_PERIPH_ID_IOPD);
275 BSP_PeriphEn(BSP_PERIPH_ID_AFIO);
276 GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE);
277
278 /* Configure GPIOD.8 as push-pull */
279 gpio_init.GPIO_Pin = GPIO_Pin_8;
280 gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
281 gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;
282 GPIO_Init(GPIOD, &gpio_init);
283
284 /* Configure GPIOD.9 as input floating */
285 gpio_init.GPIO_Pin = GPIO_Pin_9;
286 gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
287 GPIO_Init(GPIOD, &gpio_init);
288
289 #else
290 BSP_PeriphEn(BSP_PERIPH_ID_IOPB);
291
292 /* Configure GPIOB.10 as push-pull */
293 gpio_init.GPIO_Pin = GPIO_Pin_10;
294 gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
295 gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;
296 GPIO_Init(GPIOB, &gpio_init);
297
298 /* Configure GPIOB.11 as input floating */
299 gpio_init.GPIO_Pin = GPIO_Pin_11;
300 gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
301 GPIO_Init(GPIOB, &gpio_init);
302 #endif
303
304 /* ------------------ SETUP USART3 -------------------- */
305 USART_Init(USART3, &usart_init);
306 USART_ClockInit(USART3, &usart_clk_init);
307 USART_Cmd(USART3, ENABLE);
308
309 BSP_IntVectSet(BSP_INT_ID_USART3, ProbeRS232_RxTxISRHandler);
310 BSP_IntEn(BSP_INT_ID_USART3);
311 #endif
312 }
\ 00000088 07B0 ADD SP,SP,#+28
\ 0000008A 10BD POP {R4,PC} ;; return
\ ??ProbeRS232_InitTarget_0:
\ 0000008C 00080140 DC32 0x40010800
\ 00000090 ........ DC32 ProbeRS232_RxTxISRHandler
313
314 /*
315 *********************************************************************************************************
316 * ProbeRS232_RxTxISRHandler()
317 *
318 * Description: Handle Rx and Tx interrupts.
319 *
320 * Argument(s): none.
321 *
322 * Return(s) : none.
323 *
324 * Note(s) : (1) This ISR handler handles the interrupt entrance/exit as expected by
325 * by uC/OS-II v2.85. If you are using a different RTOS (or no RTOS), then this
326 * procedure may need to be modified or eliminated. However, the logic in the handler
327 * need not be changed.
328 *********************************************************************************************************
329 */
330
\ In segment CODE, align 4, keep-with-next
331 void ProbeRS232_RxTxISRHandler (void)
332 {
\ ProbeRS232_RxTxISRHandler:
\ 00000000 30B5 PUSH {R4,R5,LR}
333 USART_TypeDef *usart;
334 CPU_INT08U rx_data;
335 CPU_SR cpu_sr;
336
337
338 CPU_CRITICAL_ENTER(); /* Tell uC/OS-II that we are starting an ISR */
\ 00000002 ........ _BLF CPU_SR_Save,??CPU_SR_Save??rT
339 OSIntNesting++;
\ 00000006 1449 LDR.N R1,??ProbeRS232_RxTxISRHandler_0 ;; OSIntNesting
\ 00000008 0A78 LDRB R2,[R1, #+0]
\ 0000000A 521C ADDS R2,R2,#+1
\ 0000000C 0A70 STRB R2,[R1, #+0]
340 CPU_CRITICAL_EXIT();
\ 0000000E ........ _BLF CPU_SR_Restore,??CPU_SR_Restore??rT
341
342
343 #if (PROBE_RS232_COMM_SEL == PROBE_RS232_UART_1)
344 usart = USART1;
345 #elif (PROBE_RS232_COMM_SEL == PROBE_RS232_UART_2)
346 usart = USART2;
347 #elif (PROBE_RS232_COMM_SEL == PROBE_RS232_UART_3)
348 usart = USART3;
349 #else
350 OSIntExit();
351 return;
352 #endif
353
354 if (USART_GetITStatus(usart, USART_IT_RXNE) != RESET) {
\ 00000012 .... LDR.N R4,??DataTable12 ;; 0x40013800
\ 00000014 .... LDR.N R5,??DataTable6 ;; 0x525
\ 00000016 2900 MOVS R1,R5
\ 00000018 2000 MOVS R0,R4
\ 0000001A ........ _BLF USART_GetITStatus,??USART_GetITStatus??rT
\ 0000001E 0028 CMP R0,#+0
\ 00000020 09D0 BEQ.N ??ProbeRS232_RxTxISRHandler_1
355 rx_data = USART_ReceiveData(usart) & 0xFF; /* Read one byte from the receive data register */
\ 00000022 2000 MOVS R0,R4
\ 00000024 ........ _BLF USART_ReceiveData,??USART_ReceiveData??rT
\ 00000028 C0B2 UXTB R0,R0
356 ProbeRS232_RxHandler(rx_data);
\ 0000002A ........ _BLF ProbeRS232_RxHandler,??ProbeRS232_RxHandler??rT
357
358 USART_ClearITPendingBit(usart, USART_IT_RXNE); /* Clear the USART1 Receive interrupt */
\ 0000002E 2900 MOVS R1,R5
\ 00000030 2000 MOVS R0,R4
\ 00000032 ........ _BLF USART_ClearITPendingBit,??USART_ClearITPendingBit??rT
359 }
360
361 if (USART_GetITStatus(usart, USART_IT_TXE) != RESET) {
\ ??ProbeRS232_RxTxISRHandler_1:
\ 00000036 .... LDR.N R5,??DataTable11 ;; 0x727
\ 00000038 2900 MOVS R1,R5
\ 0000003A 2000 MOVS R0,R4
\ 0000003C ........ _BLF USART_GetITStatus,??USART_GetITStatus??rT
\ 00000040 0028 CMP R0,#+0
\ 00000042 05D0 BEQ.N ??ProbeRS232_RxTxISRHandler_2
362 ProbeRS232_TxHandler();
\ 00000044 ........ _BLF ProbeRS232_TxHandler,??ProbeRS232_TxHandler??rT
363
364 USART_ClearITPendingBit(usart, USART_IT_TXE); /* Clear the USART1 transmit interrupt */
\ 00000048 2900 MOVS R1,R5
\ 0000004A 2000 MOVS R0,R4
\ 0000004C ........ _BLF USART_ClearITPendingBit,??USART_ClearITPendingBit??rT
365 }
366
367 OSIntExit(); /* Tell uC/OS-II that we are leaving the ISR */
\ ??ProbeRS232_RxTxISRHandler_2:
\ 00000050 ........ _BLF OSIntExit,??OSIntExit??rT
368 }
\ 00000054 30BD POP {R4,R5,PC} ;; return
\ 00000056 00BF Nop
\ ??ProbeRS232_RxTxISRHandler_0:
\ 00000058 ........ DC32 OSIntNesting
369
370 /*
371 *********************************************************************************************************
372 * ProbeRS232_RxISRHandler()
373 *
374 * Description: Handle Rx interrupts.
375 *
376 * Argument(s): none.
377 *
378 * Return(s) : none.
379 *
380 * Note(s) : This function is empty because Rx interrupts are handled by ProbeRS232_RxTxISRHandler()
381 *********************************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -