bsp.txt
来自「针对STM32F103的UCOS移植」· 文本 代码 · 共 772 行 · 第 1/3 页
TXT
772 行
00025c d104 BNE |L1.616|
;;;535 GPIO_SetBits( GPIOC, GPIOC_LED3);
00025e 2140 MOVS r1,#0x40
000260 4628 MOV r0,r5
000262 f7fffffe BL GPIO_SetBits
000266 e003 B |L1.624|
|L1.616|
;;;536 } else {
;;;537 GPIO_ResetBits(GPIOC, GPIOC_LED3);
000268 2140 MOVS r1,#0x40
00026a 4628 MOV r0,r5
00026c f7fffffe BL GPIO_ResetBits
|L1.624|
;;;538 }
;;;539 if ((pins & GPIOC_LED4) == 0) {
000270 f0140f80 TST r4,#0x80
000274 d105 BNE |L1.642|
;;;540 GPIO_SetBits( GPIOC, GPIOC_LED4);
000276 4628 MOV r0,r5
000278 e8bd4070 POP {r4-r6,lr}
00027c 2180 MOVS r1,#0x80
00027e f7ffbffe B.W GPIO_SetBits
|L1.642|
;;;541 } else {
;;;542 GPIO_ResetBits(GPIOC, GPIOC_LED4);
000282 4628 MOV r0,r5
000284 e8bd4070 POP {r4-r6,lr}
000288 2180 MOVS r1,#0x80
00028a f7ffbffe B.W GPIO_ResetBits
;;;543 }
;;;544 break;
;;;545
;;;546 case 1:
;;;547 if ((pins & GPIOC_LED1) == 0) {
00028e f0140f10 TST r4,#0x10
000292 d105 BNE |L1.672|
;;;548 GPIO_SetBits( GPIOC, GPIOC_LED1);
000294 4628 MOV r0,r5
000296 e8bd4070 POP {r4-r6,lr}
00029a 2110 MOVS r1,#0x10
00029c f7ffbffe B.W GPIO_SetBits
|L1.672|
;;;549 } else {
;;;550 GPIO_ResetBits(GPIOC, GPIOC_LED1);
0002a0 4628 MOV r0,r5
0002a2 e8bd4070 POP {r4-r6,lr}
0002a6 2110 MOVS r1,#0x10
0002a8 f7ffbffe B.W GPIO_ResetBits
;;;551 }
;;;552 break;
;;;553
;;;554 case 2:
;;;555 if ((pins & GPIOC_LED2) == 0) {
0002ac f0140f20 TST r4,#0x20
0002b0 d105 BNE |L1.702|
;;;556 GPIO_SetBits( GPIOC, GPIOC_LED2);
0002b2 4628 MOV r0,r5
0002b4 e8bd4070 POP {r4-r6,lr}
0002b8 2120 MOVS r1,#0x20
0002ba f7ffbffe B.W GPIO_SetBits
|L1.702|
;;;557 } else {
;;;558 GPIO_ResetBits(GPIOC, GPIOC_LED2);
0002be 4628 MOV r0,r5
0002c0 e8bd4070 POP {r4-r6,lr}
0002c4 2120 MOVS r1,#0x20
0002c6 f7ffbffe B.W GPIO_ResetBits
;;;559 }
;;;560 break;
;;;561
;;;562 case 3:
;;;563 if ((pins & GPIOC_LED3) == 0) {
0002ca f0140f40 TST r4,#0x40
0002ce d105 BNE |L1.732|
;;;564 GPIO_SetBits( GPIOC, GPIOC_LED3);
0002d0 4628 MOV r0,r5
0002d2 e8bd4070 POP {r4-r6,lr}
0002d6 2140 MOVS r1,#0x40
0002d8 f7ffbffe B.W GPIO_SetBits
|L1.732|
;;;565 } else {
;;;566 GPIO_ResetBits(GPIOC, GPIOC_LED3);
0002dc 4628 MOV r0,r5
0002de e8bd4070 POP {r4-r6,lr}
0002e2 2140 MOVS r1,#0x40
0002e4 f7ffbffe B.W GPIO_ResetBits
;;;567 }
;;;568 break;
;;;569
;;;570 case 4:
;;;571 if ((pins & GPIOC_LED4) == 0) {
0002e8 f0140f80 TST r4,#0x80
0002ec d105 BNE |L1.762|
;;;572 GPIO_SetBits( GPIOC, GPIOC_LED4);
0002ee 4628 MOV r0,r5
0002f0 e8bd4070 POP {r4-r6,lr}
0002f4 2180 MOVS r1,#0x80
0002f6 f7ffbffe B.W GPIO_SetBits
|L1.762|
;;;573 } else {
;;;574 GPIO_ResetBits(GPIOC, GPIOC_LED4);
0002fa 4628 MOV r0,r5
0002fc e8bd4070 POP {r4-r6,lr}
000300 2180 MOVS r1,#0x80
000302 f7ffbffe B.W GPIO_ResetBits
|L1.774|
;;;575 }
;;;576 break;
;;;577
;;;578 default:
;;;579 break;
;;;580 }
;;;581 }
000306 bd70 POP {r4-r6,pc}
;;;582
ENDP
OSProbe_TmrInit PROC
;;;608 void OSProbe_TmrInit (void)
;;;609 {
000308 b500 PUSH {lr}
00030a b083 SUB sp,sp,#0xc
;;;610 TIM_TimeBaseInitTypeDef tim_init;
;;;611
;;;612
;;;613 #if (OS_PROBE_TIMER_SEL == 2)
;;;614
;;;615 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
00030c 2101 MOVS r1,#1
00030e 4608 MOV r0,r1
000310 f7fffffe BL RCC_APB1PeriphClockCmd
;;;616
;;;617 tim_init.TIM_Period = 0xFFFF;
000314 f64f70ff MOV r0,#0xffff
000318 f8ad0004 STRH r0,[sp,#4]
;;;618 tim_init.TIM_Prescaler = 0x00;
00031c 2000 MOVS r0,#0
00031e f8ad0006 STRH r0,[sp,#6]
;;;619 tim_init.TIM_ClockDivision = 0x0;
000322 f8ad0008 STRH r0,[sp,#8]
;;;620 tim_init.TIM_CounterMode = TIM_CounterMode_Up;
000326 f8ad000a STRH r0,[sp,#0xa]
;;;621
;;;622 TIM_TimeBaseInit(TIM2, &tim_init);
00032a a901 ADD r1,sp,#4
00032c f04f4080 MOV r0,#0x40000000
000330 f7fffffe BL TIM_TimeBaseInit
;;;623 TIM_SetCounter(TIM2, 0);
000334 2100 MOVS r1,#0
000336 f04f4080 MOV r0,#0x40000000
00033a f7fffffe BL TIM_SetCounter
;;;624 TIM_PrescalerConfig(TIM2, 256, TIM_PSCReloadMode_Immediate);
00033e 2201 MOVS r2,#1
000340 0211 LSLS r1,r2,#8
000342 0588 LSLS r0,r1,#22
000344 f7fffffe BL TIM_PrescalerConfig
;;;625 TIM_Cmd(TIM2, ENABLE);
000348 2101 MOVS r1,#1
00034a 0788 LSLS r0,r1,#30
00034c f7fffffe BL TIM_Cmd
;;;626
;;;627 #elif (OS_PROBE_TIMER_SEL == 3)
;;;628
;;;629 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
;;;630
;;;631 tim_init.TIM_Period = 0xFFFF;
;;;632 tim_init.TIM_Prescaler = 0x00;
;;;633 tim_init.TIM_ClockDivision = 0x0;
;;;634 tim_init.TIM_CounterMode = TIM_CounterMode_Up;
;;;635
;;;636 TIM_TimeBaseInit(TIM3, &tim_init);
;;;637 TIM_SetCounter(TIM3, 0);
;;;638 TIM_PrescalerConfig(TIM3, 256, TIM_PSCReloadMode_Immediate);
;;;639 TIM_Cmd(TIM3, ENABLE);
;;;640
;;;641 #elif (OS_PROBE_TIMER_SEL == 4)
;;;642
;;;643 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
;;;644
;;;645 tim_init.TIM_Period = 0xFFFF;
;;;646 tim_init.TIM_Prescaler = 0x00;
;;;647 tim_init.TIM_ClockDivision = 0x0;
;;;648 tim_init.TIM_CounterMode = TIM_CounterMode_Up;
;;;649
;;;650 TIM_TimeBaseInit(TIM4, &tim_init);
;;;651 TIM_SetCounter(TIM4, 0);
;;;652 TIM_PrescalerConfig(TIM4, 256, TIM_PSCReloadMode_Immediate);
;;;653 TIM_Cmd(TIM4, ENABLE);
;;;654
;;;655 #endif
;;;656 }
000350 b003 ADD sp,sp,#0xc
000352 bd00 POP {pc}
;;;657 #endif
ENDP
OSProbe_TmrRd PROC
;;;676
;;;677 return ((CPU_INT32U)TIM_GetCounter(TIM2));
000354 f04f4080 MOV r0,#0x40000000
000358 f7ffbffe B.W TIM_GetCounter
;;;678
;;;679 #elif (OS_PROBE_TIMER_SEL == 3)
;;;680
;;;681 return ((CPU_INT32U)TIM_GetCounter(TIM3));
;;;682
;;;683 #elif (OS_PROBE_TIMER_SEL == 4)
;;;684
;;;685 return ((CPU_INT32U)TIM_GetCounter(TIM4));
;;;686
;;;687 #endif
;;;688 }
;;;689 #endif
ENDP
Tmr_TickISR_Handler PROC
;;;746 void Tmr_TickISR_Handler (void)
;;;747 {
00035c b510 PUSH {r4,lr}
;;;748 OS_CPU_SR cpu_sr;
;;;749
;;;750
;;;751 OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR */
00035e f7fffffe BL OS_CPU_SR_Save
;;;752 OSIntNesting++;
000362 4909 LDR r1,|L1.904|
000364 780a LDRB r2,[r1,#0] ; OSIntNesting
000366 1c52 ADDS r2,r2,#1
000368 700a STRB r2,[r1,#0] ; OSIntNesting
;;;753 OS_EXIT_CRITICAL();
00036a f7fffffe BL OS_CPU_SR_Restore
;;;754
;;;755 OSTimeTick(); /* Call uC/OS-II's OSTimeTick() */
00036e f7fffffe BL OSTimeTick
;;;756
;;;757 OSIntExit(); /* Tell uC/OS-II that we are leaving the ISR */
000372 e8bd4010 POP {r4,lr}
000376 f7ffbffe B.W OSIntExit
;;;758 }
ENDP
00037a 0000 DCW 0x0000
|L1.892|
00037c 40011400 DCD 0x40011400
|L1.896|
000380 40011000 DCD 0x40011000
|L1.900|
000384 00000000 DCD ||.bss||
|L1.904|
000388 00000000 DCD OSIntNesting
AREA ||.bss||, DATA, NOINIT, ALIGN=2
||rcc_clocks@BSP_CPU_ClkFreq_0||
% 20
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?