📄 bsp.lst
字号:
\ ??LED_Toggle_14:
\ 000000AA E805 LSLS R0,R5,#+23
\ 000000AC 04D4 BMI.N ??LED_Toggle_15
554 GPIO_SetBits( GPIOC, GPIOC_LED3);
\ 000000AE A10D LSRS R1,R4,#+22
\ 000000B0 2000 MOVS R0,R4
\ 000000B2 ........ _BLF GPIO_SetBits,??GPIO_SetBits??rT
\ 000000B6 70BD POP {R4-R6,PC}
555 } else {
556 GPIO_ResetBits(GPIOC, GPIOC_LED3);
\ ??LED_Toggle_15:
\ 000000B8 A10D LSRS R1,R4,#+22
\ 000000BA 2000 MOVS R0,R4
\ 000000BC ........ _BLF GPIO_ResetBits,??GPIO_ResetBits??rT
\ 000000C0 70BD POP {R4-R6,PC}
557 }
558 break;
559
560 case 4:
561 if ((pins & GPIOC_LED4) == 0) {
\ ??LED_Toggle_16:
\ 000000C2 A805 LSLS R0,R5,#+22
\ 000000C4 04D4 BMI.N ??LED_Toggle_17
562 GPIO_SetBits( GPIOC, GPIOC_LED4);
\ 000000C6 610D LSRS R1,R4,#+21
\ 000000C8 2000 MOVS R0,R4
\ 000000CA ........ _BLF GPIO_SetBits,??GPIO_SetBits??rT
\ 000000CE 70BD POP {R4-R6,PC}
563 } else {
564 GPIO_ResetBits(GPIOC, GPIOC_LED4);
\ ??LED_Toggle_17:
\ 000000D0 610D LSRS R1,R4,#+21
\ 000000D2 2000 MOVS R0,R4
\ 000000D4 ........ _BLF GPIO_ResetBits,??GPIO_ResetBits??rT
565 }
566 break;
567
568 default:
569 break;
570 }
571 }
\ ??LED_Toggle_1:
\ 000000D8 70BD POP {R4-R6,PC} ;; return
572
573
574 /*
575 ******************************************************************************************************************************
576 ******************************************************************************************************************************
577 * uC/Probe Plug-In for uC/OS-II Functions
578 ******************************************************************************************************************************
579 ******************************************************************************************************************************
580 */
581
582 /*
583 *********************************************************************************************************
584 * INITIALIZE TIMER FOR uC/Probe Plug-In for uC/OS-II
585 *
586 * Description : This function is called to by uC/Probe Plug-In for uC/OS-II to initialize the
587 * free running timer that is used to make time measurements.
588 *
589 * Arguments : none
590 *
591 * Returns : none
592 *
593 * Note(s) : This function is EMPTY because the timer is initialized elsewhere.
594 *********************************************************************************************************
595 */
596
597 #if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN == 1)
\ In segment CODE, align 4, keep-with-next
598 void OSProbe_TmrInit (void)
599 {
\ OSProbe_TmrInit:
\ 00000000 03B5 PUSH {R0,R1,LR}
600 TIM_TimeBaseInitTypeDef tim_init;
601
602
603 #if (OS_PROBE_TIMER_SEL == 2)
604
605 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
\ 00000002 0121 MOVS R1,#+1
\ 00000004 0846 MOV R0,R1
\ 00000006 ........ _BLF RCC_APB1PeriphClockCmd,??RCC_APB1PeriphClockCmd??rT
606
607 tim_init.TIM_Period = 0xFFFF;
\ 0000000A 0F48 LDR.N R0,??OSProbe_TmrInit_0 ;; 0xffff
\ 0000000C ADF80000 STRH R0,[SP, #+0]
608 tim_init.TIM_Prescaler = 0x00;
\ 00000010 0020 MOVS R0,#+0
\ 00000012 ADF80200 STRH R0,[SP, #+2]
609 tim_init.TIM_ClockDivision = 0x0;
\ 00000016 ADF80400 STRH R0,[SP, #+4]
610 tim_init.TIM_CounterMode = TIM_CounterMode_Up;
\ 0000001A ADF80600 STRH R0,[SP, #+6]
611
612 TIM_TimeBaseInit(TIM2, &tim_init);
\ 0000001E 6946 MOV R1,SP
\ 00000020 5FF08040 MOVS R0,#+1073741824
\ 00000024 ........ _BLF TIM_TimeBaseInit,??TIM_TimeBaseInit??rT
613 TIM_SetCounter(TIM2, 0);
\ 00000028 0021 MOVS R1,#+0
\ 0000002A 5FF08040 MOVS R0,#+1073741824
\ 0000002E ........ _BLF TIM_SetCounter,??TIM_SetCounter??rT
614 TIM_PrescalerConfig(TIM2, 256, TIM_PSCReloadMode_Immediate);
\ 00000032 0122 MOVS R2,#+1
\ 00000034 1102 LSLS R1,R2,#+8
\ 00000036 8805 LSLS R0,R1,#+22
\ 00000038 ........ _BLF TIM_PrescalerConfig,??TIM_PrescalerConfig??rT
615 TIM_Cmd(TIM2, ENABLE);
\ 0000003C 0121 MOVS R1,#+1
\ 0000003E 8807 LSLS R0,R1,#+30
\ 00000040 ........ _BLF TIM_Cmd,??TIM_Cmd??rT
616
617 #elif (OS_PROBE_TIMER_SEL == 3)
618
619 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
620
621 tim_init.TIM_Period = 0xFFFF;
622 tim_init.TIM_Prescaler = 0x00;
623 tim_init.TIM_ClockDivision = 0x0;
624 tim_init.TIM_CounterMode = TIM_CounterMode_Up;
625
626 TIM_TimeBaseInit(TIM3, &tim_init);
627 TIM_SetCounter(TIM3, 0);
628 TIM_PrescalerConfig(TIM3, 256, TIM_PSCReloadMode_Immediate);
629 TIM_Cmd(TIM3, ENABLE);
630
631 #elif (OS_PROBE_TIMER_SEL == 4)
632
633 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
634
635 tim_init.TIM_Period = 0xFFFF;
636 tim_init.TIM_Prescaler = 0x00;
637 tim_init.TIM_ClockDivision = 0x0;
638 tim_init.TIM_CounterMode = TIM_CounterMode_Up;
639
640 TIM_TimeBaseInit(TIM4, &tim_init);
641 TIM_SetCounter(TIM4, 0);
642 TIM_PrescalerConfig(TIM4, 256, TIM_PSCReloadMode_Immediate);
643 TIM_Cmd(TIM4, ENABLE);
644
645 #endif
646 }
\ 00000044 03BD POP {R0,R1,PC} ;; return
\ 00000046 00BF Nop
\ ??OSProbe_TmrInit_0:
\ 00000048 FFFF0000 DC32 0xffff
647 #endif
648
649
650 /*
651 *********************************************************************************************************
652 * READ TIMER FOR uC/Probe Plug-In for uC/OS-II
653 *
654 * Description : This function is called to read the current counts of a 16 bit free running timer.
655 *
656 * Arguments : none
657 *
658 * Returns : The 16 or 32 bit count of the timer assuming the timer is an UP counter.
659 *********************************************************************************************************
660 */
661
662 #if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN == 1)
\ In segment CODE, align 4, keep-with-next
663 CPU_INT32U OSProbe_TmrRd (void)
664 {
\ OSProbe_TmrRd:
\ 00000000 00B5 PUSH {LR}
665 #if (OS_PROBE_TIMER_SEL == 2)
666
667 return ((CPU_INT32U)TIM_GetCounter(TIM2));
\ 00000002 5FF08040 MOVS R0,#+1073741824
\ 00000006 ........ _BLF TIM_GetCounter,??TIM_GetCounter??rT
\ 0000000A 00BD POP {PC} ;; return
668
669 #elif (OS_PROBE_TIMER_SEL == 3)
670
671 return ((CPU_INT32U)TIM_GetCounter(TIM3));
672
673 #elif (OS_PROBE_TIMER_SEL == 4)
674
675 return ((CPU_INT32U)TIM_GetCounter(TIM4));
676
677 #endif
678 }
679 #endif
680
681
682
683 /*
684 ******************************************************************************************************************************
685 ******************************************************************************************************************************
686 ** uC/OS-II Timer Functions
687 ******************************************************************************************************************************
688 ******************************************************************************************************************************
689 */
690
691 /*
692 *********************************************************************************************************
693 * TICKER INITIALIZATION
694 *
695 * Description : This function is called to initialize uC/OS-II's tick source (typically a timer generating
696 * interrupts every 1 to 100 mS).
697 *
698 * Arguments : none
699 *
700 * Note(s) : 1) The timer is setup for output compare mode BUT 'MUST' also 'freerun' so that the timer
701 * count goes from 0x00000000 to 0xFFFFFFFF to ALSO be able to read the free running count.
702 * The reason this is needed is because we use the free-running count in uC/OS-View.
703 *********************************************************************************************************
704 */
705
\ In segment CODE, align 4, keep-with-next
706 static void Tmr_TickInit (void)
707 {
\ Tmr_TickInit:
\ 00000000 00B5 PUSH {LR}
\ 00000002 85B0 SUB SP,SP,#+20
708 RCC_ClocksTypeDef rcc_clocks;
709 CPU_INT32U cnts;
710
711
712 RCC_GetClocksFreq(&rcc_clocks);
\ 00000004 6846 MOV R0,SP
\ 00000006 ........ _BLF RCC_GetClocksFreq,??RCC_GetClocksFreq??rT
713
714 cnts = (CPU_INT32U)rcc_clocks.HCLK_Frequency / OS_TICKS_PER_SEC;
715
716 SysTick_SetReload(cnts);
\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -