📄 dac_codec.txt
字号:
ENDP
000036 0000 DCW 0x0000
|L11.56|
000038 00000000 DCD ||.data||
|L11.60|
00003c 00000064 DCD ||.bss||+0x64
AREA ||i.DAC_CODEC_Stop||, CODE, READONLY, ALIGN=2
DAC_CODEC_Stop PROC
;;;224 u32 DAC_CODEC_Stop()
;;;225 {
000000 b510 PUSH {r4,lr}
;;;226 /* Disable TIM2 update interrupt */
;;;227 TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE);
000002 2101 MOVS r1,#1
000004 078c LSLS r4,r1,#30
000006 2200 MOVS r2,#0
000008 4620 MOV r0,r4
00000a f7fffffe BL TIM_ITConfig
;;;228 /* Disable TIM2 */
;;;229 TIM_Cmd(TIM2, DISABLE);
00000e 2100 MOVS r1,#0
000010 4620 MOV r0,r4
000012 f7fffffe BL TIM_Cmd
;;;230
;;;231 /* Reinitialize the audio data pointer */
;;;232 AudioDataIndex = 0;
000016 4903 LDR r1,|L12.36|
000018 2000 MOVS r0,#0
00001a 6148 STR r0,[r1,#0x14] ; AudioDataIndex
00001c 6248 STR r0,[r1,#0x24] ; AudioPlayStatus
;;;233
;;;234 /* Set Paused status to inform other modules about the codec status */
;;;235 SetVar_AudioPlayStatus(AudioPlayStatus_STOPPED);
;;;236
;;;237 /* Reset local variables */
;;;238 monovar = 0;
00001e 62c8 STR r0,[r1,#0x2c] ; monovar
;;;239 tmpvar = 0;
000020 6308 STR r0,[r1,#0x30] ; tmpvar
;;;240
;;;241 return 0;
;;;242 }
000022 bd10 POP {r4,pc}
;;;243
ENDP
|L12.36|
000024 00000000 DCD ||.data||
AREA ||i.DAC_CODEC_ControlVolume||, CODE, READONLY, ALIGN=2
DAC_CODEC_ControlVolume PROC
;;;255 u32 DAC_CODEC_ControlVolume(u32 direction, u8 Volume)
;;;256 {
000000 4b0c LDR r3,|L13.52|
;;;257 if (direction == VolumeDirection_HIGH)
000002 280f CMP r0,#0xf
000004 785a LDRB r2,[r3,#1] ;256
000006 d105 BNE |L13.20|
;;;258 {
;;;259 /* Check if the volume high limit is reached */
;;;260 if (CurrentVolume < VOLStep)
000008 2a04 CMP r2,#4
00000a d201 BCS |L13.16|
;;;261 {
;;;262 CurrentVolume = 0;
00000c 2000 MOVS r0,#0
00000e e008 B |L13.34|
|L13.16|
;;;263 }
;;;264 else
;;;265 {
;;;266 /* Save the current volume level */
;;;267 CurrentVolume -= Volume;
000010 1a50 SUBS r0,r2,r1
000012 e006 B |L13.34|
|L13.20|
;;;268 }
;;;269 }
;;;270 else if (direction == VolumeDirection_LOW)
000014 280a CMP r0,#0xa
000016 d106 BNE |L13.38|
;;;271 {
;;;272 /* Check if the volume low limit is reached */
;;;273 if (CurrentVolume > (0xFF - VOLStep))
000018 2afb CMP r2,#0xfb
00001a d901 BLS |L13.32|
;;;274 {
;;;275 CurrentVolume = 0xFF;
00001c 20ff MOVS r0,#0xff
00001e e000 B |L13.34|
|L13.32|
;;;276 }
;;;277 else
;;;278 {
;;;279 /* Save the current volume level */
;;;280 CurrentVolume += Volume;
000020 1850 ADDS r0,r2,r1
|L13.34|
000022 7058 STRB r0,[r3,#1] ; CurrentVolume
000024 e001 B |L13.42|
|L13.38|
;;;281 }
;;;282 }
;;;283 else if (direction == VolumeDirection_LEVEL)
000026 b910 CBNZ r0,|L13.46|
;;;284 {
;;;285 CurrentVolume = Volume;
000028 7059 STRB r1,[r3,#1] ; CurrentVolume
|L13.42|
;;;286 }
;;;287 else
;;;288 {
;;;289 return 0xFF; //Error verifying the Codec registers
;;;290 }
;;;291
;;;292 return 0;
00002a 2000 MOVS r0,#0
;;;293 }
00002c 4770 BX lr
|L13.46|
00002e 20ff MOVS r0,#0xff ;289
000030 4770 BX lr
;;;294
ENDP
000032 0000 DCW 0x0000
|L13.52|
000034 00000000 DCD ||.data||
AREA ||i.GetVar_AudioDataIndex||, CODE, READONLY, ALIGN=2
GetVar_AudioDataIndex PROC
000000 4801 LDR r0,|L14.8|
000002 6940 LDR r0,[r0,#0x14] ; AudioDataIndex
000004 4770 BX lr
ENDP
000006 0000 DCW 0x0000
|L14.8|
000008 00000000 DCD ||.data||
AREA ||i.Decrement_AudioReplay||, CODE, READONLY, ALIGN=2
Decrement_AudioReplay PROC
;;;676 {
;;;677 if (AudioReplay != 0)
000000 4905 LDR r1,|L15.24|
000002 6988 LDR r0,[r1,#0x18] ; AudioReplay
000004 2800 CMP r0,#0
000006 d006 BEQ |L15.22|
;;;678 {
;;;679 AudioReplayCount--;
000008 69c8 LDR r0,[r1,#0x1c] ; AudioReplayCount
00000a 1e40 SUBS r0,r0,#1
;;;680
;;;681 if (AudioReplayCount == 0)
00000c 61c8 STR r0,[r1,#0x1c] ; AudioReplayCount
00000e d102 BNE |L15.22|
000010 6248 STR r0,[r1,#0x24] ; AudioPlayStatus
;;;682 {
;;;683 /* Command the Stop of the audio playing */
;;;684 SetVar_AudioPlayStatus(AudioPlayStatus_STOPPED);
;;;685
;;;686 /* Reset the counter */
;;;687 AudioReplayCount = AudioReplay;
000012 6988 LDR r0,[r1,#0x18] ; AudioReplay
000014 61c8 STR r0,[r1,#0x1c] ; AudioReplayCount
|L15.22|
;;;688 }
;;;689 }
;;;690 }
000016 4770 BX lr
;;;691
ENDP
|L15.24|
000018 00000000 DCD ||.data||
AREA ||i.ResetVar_AudioDataIndex||, CODE, READONLY, ALIGN=2
ResetVar_AudioDataIndex PROC
000000 4802 LDR r0,|L16.12|
000002 6901 LDR r1,[r0,#0x10] ; DataStartAddr
000004 6141 STR r1,[r0,#0x14] ; AudioDataIndex
000006 6880 LDR r0,[r0,#8] ; AudioFileAddress
000008 4770 BX lr
ENDP
00000a 0000 DCW 0x0000
|L16.12|
00000c 00000000 DCD ||.data||
AREA ||i.IncrementVar_AudioDataIndex||, CODE, READONLY, ALIGN=2
IncrementVar_AudioDataIndex PROC
000000 b500 PUSH {lr}
000002 4907 LDR r1,|L17.32|
000004 694a LDR r2,[r1,#0x14] ; AudioDataIndex
000006 4410 ADD r0,r0,r2
000008 6148 STR r0,[r1,#0x14] ; AudioDataIndex
00000a 6948 LDR r0,[r1,#0x14] ; AudioDataIndex
00000c 68c9 LDR r1,[r1,#0xc] ; AudioDataLength
00000e 4288 CMP r0,r1
000010 d305 BCC |L17.30|
000012 f7fffffe BL ResetVar_AudioDataIndex
000016 f85deb04 POP {lr}
00001a f7ffbffe B.W Decrement_AudioReplay
|L17.30|
00001e bd00 POP {pc}
ENDP
|L17.32|
000020 00000000 DCD ||.data||
AREA ||i.DAC_CODEC_ForwardPlay||, CODE, READONLY, ALIGN=2
DAC_CODEC_ForwardPlay PROC
;;;302 void DAC_CODEC_ForwardPlay(u32 Step)
;;;303 {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;304 /* Pause Playing the audio file */
;;;305 DAC_CODEC_Pause();
000004 f7fffffe BL DAC_CODEC_Pause
;;;306
;;;307 /* Increment the Audio pointer */
;;;308 IncrementVar_AudioDataIndex((AudioDataLength / 100) * Step);
000008 4b08 LDR r3,|L18.44|
00000a 2164 MOVS r1,#0x64
00000c 68d8 LDR r0,[r3,#0xc] ; AudioDataLength
00000e fbb0f0f1 UDIV r0,r0,r1
000012 4360 MULS r0,r4,r0
000014 f7fffffe BL IncrementVar_AudioDataIndex
;;;309
;;;310 /* Insure the index parity */
;;;311 AudioDataIndex &= 0xFFFFFFFE;
000018 6958 LDR r0,[r3,#0x14] ; AudioDataIndex
00001a f0200001 BIC r0,r0,#1
00001e 6158 STR r0,[r3,#0x14] ; AudioDataIndex
000020 6958 LDR r0,[r3,#0x14] ; AudioDataIndex
;;;312
;;;313 /* Resume playing from the new position */
;;;314 DAC_CODEC_Play((GetVar_AudioDataIndex()));
000022 e8bd4010 POP {r4,lr}
000026 f7ffbffe B.W DAC_CODEC_Play
;;;315 }
;;;316
ENDP
00002a 0000 DCW 0x0000
|L18.44|
00002c 00000000 DCD ||.data||
AREA ||i.DecrementVar_AudioDataIndex||, CODE, READONLY, ALIGN=2
DecrementVar_AudioDataIndex PROC
000000 4904 LDR r1,|L19.20|
000002 694a LDR r2,[r1,#0x14] ; AudioDataIndex
000004 4290 CMP r0,r2
000006 d301 BCC |L19.12|
000008 f7ffbffe B.W ResetVar_AudioDataIndex
|L19.12|
00000c 694a LDR r2,[r1,#0x14] ; AudioDataIndex
00000e 1a10 SUBS r0,r2,r0
000010 6148 STR r0,[r1,#0x14] ; AudioDataIndex
000012 4770 BX lr
ENDP
|L19.20|
000014 00000000 DCD ||.data||
AREA ||i.DAC_CODEC_RewindPlay||, CODE, READONLY, ALIGN=2
DAC_CODEC_RewindPlay PROC
;;;324 void DAC_CODEC_RewindPlay(u32 Step)
;;;325 {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;326 /* Pause Playing the audio file */
;;;327 DAC_CODEC_Pause();
000004 f7fffffe BL DAC_CODEC_Pause
;;;328
;;;329 /* Increment the Audio pointer */
;;;330 DecrementVar_AudioDataIndex((AudioDataLength / 100) * Step);
000008 4b08 LDR r3,|L20.44|
00000a 2164 MOVS r1,#0x64
00000c 68d8 LDR r0,[r3,#0xc] ; AudioDataLength
00000e fbb0f0f1 UDIV r0,r0,r1
000012 4360 MULS r0,r4,r0
000014 f7fffffe BL DecrementVar_AudioDataIndex
;;;331
;;;332 /* Insure the index parity */
;;;333 AudioDataIndex &= 0xFFFFFFFE;
000018 6958 LDR r0,[r3,#0x14] ; AudioDataIndex
00001a f0200001 BIC r0,r0,#1
00001e 6158 STR r0,[r3,#0x14] ; AudioDataIndex
000020 6958 LDR r0,[r3,#0x14] ; AudioDataIndex
;;;334
;;;335 /* Resume playing from the new position */
;;;336 DAC_CODEC_Play((GetVar_AudioDataIndex()));
000022 e8bd4010 POP {r4,lr}
000026 f7ffbffe B.W DAC_CODEC_Play
;;;337 }
;;;338
ENDP
00002a 0000 DCW 0x0000
|L20.44|
00002c 00000000 DCD ||.data||
AREA ||i.GetVar_AudioPlayStatus||, CODE, READONLY, ALIGN=2
GetVar_AudioPlayStatus PROC
000000 4801 LDR r0,|L21.8|
000002 6a40 LDR r0,[r0,#0x24] ; AudioPlayStatus
000004 4770 BX lr
ENDP
000006 0000 DCW 0x0000
|L21.8|
000008 00000000 DCD ||.data||
AREA ||i.DAC_CODEC_UpdateStatus||, CODE, READONLY, ALIGN=2
DAC_CODEC_UpdateStatus PROC
000000 b510 PUSH {r4,lr}
000002 4c06 LDR r4,|L22.28|
000004 6a60 LDR r0,[r4,#0x24] ; AudioPlayStatus
000006 b908 CBNZ r0,|L22.12|
000008 f7fffffe BL DAC_CODEC_Stop
|L22.12|
00000c 6a60 LDR r0,[r4,#0x24] ; AudioPlayStatus
00000e 2802 CMP r0,#2
000010 d103 BNE |L22.26|
000012 e8bd4010 POP {r4,lr}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -