⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dac_codec.txt

📁 stm32.rar
💻 TXT
📖 第 1 页 / 共 4 页
字号:
                          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 + -