📄 flash.lst
字号:
\ 00000010 311C MOV R1,R6
\ 00000012 281C MOV R0,R5
\ 00000014 ........ _BLF xTaskCreate,xTaskCreate??rT
\ 00000018 0021 MOV R1,#+0
\ 0000001A 201C MOV R0,R4
\ 0000001C 03B4 PUSH {R0,R1}
\ 0000001E 0B1C MOV R3,R1
\ 00000020 6422 MOV R2,#+0x64
\ 00000022 311C MOV R1,R6
\ 00000024 281C MOV R0,R5
\ 00000026 ........ _BLF xTaskCreate,xTaskCreate??rT
\ 0000002A 0020 MOV R0,#+0
\ 0000002C 01B4 PUSH {R0}
\ 0000002E 10B4 PUSH {R4}
\ 00000030 031C MOV R3,R0
\ 00000032 6422 MOV R2,#+0x64
\ 00000034 311C MOV R1,R6
\ 00000036 281C MOV R0,R5
\ 00000038 ........ _BLF xTaskCreate,xTaskCreate??rT
93 }
94 }
\ 0000003C 06B0 ADD SP,#+0x18
\ 0000003E 70BC POP {R4-R6}
\ 00000040 01BC POP {R0}
\ 00000042 0047 BX R0 ;; return
\ ??vStartLEDFlashTasks_0:
\ 00000044 ........ DC32 ??vLEDFlashTask
\ 00000048 ........ DC32 `?<Constant "LEDx">`
95 /*-----------------------------------------------------------*/
96
\ In segment CODE, align 4, keep-with-next
97 static portTASK_FUNCTION( vLEDFlashTask, pvParameters )
98 {
\ ??vLEDFlashTask:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 81B0 SUB SP,#+0x4
99 portTickType xFlashRate, xLastFlashTime;
100 unsigned portBASE_TYPE uxLED;
101
102 /* The parameters are not used. */
103 ( void ) pvParameters;
104
105 /* Calculate the LED and flash rate. */
106 portENTER_CRITICAL();
\ 00000004 ........ _BLF vPortEnterCritical,vPortEnterCritical??rT
107 {
108 /* See which of the eight LED's we should use. */
109 uxLED = uxFlashTaskNumber;
\ 00000008 0F48 LDR R0,??vLEDFlashTask_1 ;; ??uxFlashTaskNumber
\ 0000000A 0468 LDR R4,[R0, #+0]
110
111 /* Update so the next task uses the next LED. */
112 uxFlashTaskNumber++;
\ 0000000C 0168 LDR R1,[R0, #+0]
\ 0000000E 491C ADD R1,R1,#+0x1
\ 00000010 0160 STR R1,[R0, #+0]
113 }
114 portEXIT_CRITICAL();
\ 00000012 ........ _BLF vPortExitCritical,vPortExitCritical??rT
115
116 xFlashRate = ledFLASH_RATE_BASE + ( ledFLASH_RATE_BASE * ( portTickType ) uxLED );
117 xFlashRate /= portTICK_RATE_MS;
118
119 /* We will turn the LED on and off again in the delay period, so each
120 delay is only half the total period. */
121 xFlashRate /= ( portTickType ) 2;
\ 00000016 FF20 MOV R0,#+0xFF
\ 00000018 4E30 ADD R0,#+0x4E ;; #+0x14D
\ 0000001A 211C MOV R1,R4
\ 0000001C 4143 MUL R1,R0
\ 0000001E 0818 ADD R0,R1,R0
\ 00000020 4508 LSR R5,R0,#+0x1
122
123 /* We need to initialise xLastFlashTime prior to the first call to
124 vTaskDelayUntil(). */
125 xLastFlashTime = xTaskGetTickCount();
\ 00000022 ........ _BLF xTaskGetTickCount,xTaskGetTickCount??rT
\ 00000026 0090 STR R0,[SP, #+0]
126
127 for(;;)
128 {
129 /* Delay for half the flash period then turn the LED on. */
130 vTaskDelayUntil( &xLastFlashTime, xFlashRate );
\ ??vLEDFlashTask_2:
\ 00000028 291C MOV R1,R5
\ 0000002A 6846 MOV R0,SP
\ 0000002C ........ _BLF vTaskDelayUntil,vTaskDelayUntil??rT
131 vParTestToggleLED( uxLED );
\ 00000030 201C MOV R0,R4
\ 00000032 ........ _BLF vParTestToggleLED,vParTestToggleLED??rT
132
133 /* Delay for half the flash period then turn the LED off. */
134 vTaskDelayUntil( &xLastFlashTime, xFlashRate );
\ 00000036 291C MOV R1,R5
\ 00000038 6846 MOV R0,SP
\ 0000003A ........ _BLF vTaskDelayUntil,vTaskDelayUntil??rT
135 vParTestToggleLED( uxLED );
\ 0000003E 201C MOV R0,R4
\ 00000040 ........ _BLF vParTestToggleLED,vParTestToggleLED??rT
\ 00000044 F0E7 B ??vLEDFlashTask_2
\ 00000046 C046 NOP
\ ??vLEDFlashTask_1:
\ 00000048 ........ DC32 ??uxFlashTaskNumber
136 }
137 } /*lint !e715 !e818 !e830 Function definition must be standard for task creation. */
\ In segment DATA_C, align 4, align-sorted
\ `?<Constant "LEDx">`:
\ 00000000 4C45447800 DC8 "LEDx"
\ 00000005 000000 DC8 0, 0, 0
138
Maximum stack usage in bytes:
Function CSTACK
-------- ------
vLEDFlashTask 16
vStartLEDFlashTasks 40
Segment part sizes:
Function/Label Bytes
-------------- -----
uxFlashTaskNumber 4
vStartLEDFlashTasks 76
vLEDFlashTask 76
?<Constant "LEDx"> 8
Others 84
224 bytes in segment CODE
8 bytes in segment DATA_C
4 bytes in segment DATA_Z
12 bytes in segment INITTAB
152 bytes of CODE memory (+ 84 bytes shared)
8 bytes of CONST memory
4 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -