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 + -
显示快捷键?