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

📄 dac_codec.txt

📁 stm32.rar
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 942] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Int_Flash\dac_codec.o --depend=.\Int_Flash\dac_codec.d --device=DARMSTM --apcs=interwork -O3 -I..\include -I..\..\..\..\..\INC\ST\STM32F10x\USB -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB --omf_browse=.\Int_Flash\dac_codec.crf ..\source\dac_codec.c]
                          THUMB

                          AREA ||i.ReadUnit||, CODE, READONLY, ALIGN=2

                  ReadUnit PROC
;;;874    static u32 ReadUnit(u8 NbrOfBytes, Endianness BytesFormat)
;;;875    {
000000  b5f0              PUSH     {r4-r7,lr}
000002  4602              MOV      r2,r0
;;;876      u32 index = 0;
000004  2300              MOVS     r3,#0
;;;877      u32 Temp = 0;
000006  4c0e              LDR      r4,|L1.64|
000008  4d0e              LDR      r5,|L1.68|
00000a  4618              MOV      r0,r3
;;;878    
;;;879      if(BytesFormat == LittleEndian)
00000c  b961              CBNZ     r1,|L1.40|
00000e  e008              B        |L1.34|
                  |L1.16|
;;;880      {
;;;881        for(index = 0; index < NbrOfBytes; index++)
;;;882        {
;;;883          Temp |= AudioFileHeader[HeaderTabIndex++] << (index * 8);
000010  7829              LDRB     r1,[r5,#0]  ; HeaderTabIndex
000012  4606              MOV      r6,r0
000014  5c60              LDRB     r0,[r4,r1]
000016  00df              LSLS     r7,r3,#3
000018  40b8              LSLS     r0,r0,r7
00001a  1c49              ADDS     r1,r1,#1
00001c  4330              ORRS     r0,r0,r6
00001e  7029              STRB     r1,[r5,#0]  ; HeaderTabIndex
000020  1c5b              ADDS     r3,r3,#1              ;881
                  |L1.34|
000022  4293              CMP      r3,r2                 ;881
000024  d3f4              BCC      |L1.16|
                  |L1.38|
;;;884        }
;;;885      }
;;;886      else
;;;887      {
;;;888        for(index = NbrOfBytes; index != 0; index--)
;;;889        {
;;;890          Temp |= AudioFileHeader[HeaderTabIndex++] << ((index-1) * 8);
;;;891        }
;;;892      }
;;;893    
;;;894      return Temp;
;;;895    }
000026  bdf0              POP      {r4-r7,pc}
                  |L1.40|
000028  2a00              CMP      r2,#0                 ;888
00002a  d0fc              BEQ      |L1.38|
00002c  7829              LDRB     r1,[r5,#0]            ;890  ; HeaderTabIndex
00002e  1e53              SUBS     r3,r2,#1              ;890
000030  00de              LSLS     r6,r3,#3              ;890
000032  5c63              LDRB     r3,[r4,r1]            ;890
000034  40b3              LSLS     r3,r3,r6              ;890
000036  1c49              ADDS     r1,r1,#1              ;890
000038  4318              ORRS     r0,r0,r3              ;890
00003a  7029              STRB     r1,[r5,#0]            ;890  ; HeaderTabIndex
00003c  1e52              SUBS     r2,r2,#1              ;888
00003e  e7f3              B        |L1.40|
;;;896    
                          ENDP

                  |L1.64|
000040  00000000          DCD      ||.bss||
                  |L1.68|
000044  00000000          DCD      ||.data||

                          AREA ||i.DAC_CODEC_WaveParsing||, CODE, READONLY, ALIGN=2

                  DAC_CODEC_WaveParsing PROC
;;;407    ErrorCode DAC_CODEC_WaveParsing(u8* HeaderTab)
;;;408    {
000000  b570              PUSH     {r4-r6,lr}
;;;409      u32 Temp = 0x00;
;;;410      u32 ExtraFormatBytes = 0; 
;;;411      
;;;412      /* Initialize the HeaderTabIndex variable */
;;;413      HeaderTabIndex = 0;
000002  4c4e              LDR      r4,|L2.316|
000004  2500              MOVS     r5,#0                 ;410
000006  7025              STRB     r5,[r4,#0]  ; HeaderTabIndex
;;;414    
;;;415      /* Read chunkID, must be 'RIFF'	----------------------------------------------*/
;;;416      Temp = ReadUnit(4, BigEndian);
000008  2101              MOVS     r1,#1
00000a  2004              MOVS     r0,#4
00000c  f7fffffe          BL       ReadUnit
;;;417      if(Temp != ChunkID)
000010  494b              LDR      r1,|L2.320|
000012  4288              CMP      r0,r1
000014  d001              BEQ      |L2.26|
;;;418      {
;;;419        return(Unvalid_RIFF_ID);
000016  2001              MOVS     r0,#1
;;;420      }
;;;421      /* Read the file length ----------------------------------------------------*/
;;;422      WAVE_Format.RIFFchunksize = ReadUnit(4, LittleEndian);
;;;423    	
;;;424      /* Read the file format, must be 'WAVE' ------------------------------------*/
;;;425      Temp = ReadUnit(4, BigEndian);
;;;426      if(Temp != FileFormat)
;;;427      {
;;;428        return(Unvalid_WAVE_Format);
;;;429      }
;;;430      /* Read the format chunk, must be 'fmt ' -----------------------------------*/
;;;431      Temp = ReadUnit(4, BigEndian);
;;;432      if(Temp != FormatID)
;;;433      {
;;;434        return(Unvalid_FormatChunk_ID);
;;;435      }
;;;436      /* Read the length of the 'fmt' data, must be 0x10 -------------------------*/
;;;437      Temp = ReadUnit(4, LittleEndian);
;;;438      if(Temp != 0x10)
;;;439      {
;;;440        ExtraFormatBytes = 1;
;;;441      }
;;;442      /* Read the audio format, must be 0x01 (PCM) -------------------------------*/
;;;443      WAVE_Format.FormatTag = ReadUnit(2, LittleEndian);
;;;444      if(WAVE_Format.FormatTag != WAVE_FORMAT_PCM)
;;;445      {
;;;446        return(Unsupporetd_FormatTag);	
;;;447      }	
;;;448      /* Read the number of channels: 0x02->Stereo 0x01->Mono --------------------*/
;;;449      WAVE_Format.NumChannels = ReadUnit(2, LittleEndian);
;;;450    
;;;451      /* Read the Sample Rate ----------------------------------------------------*/
;;;452      WAVE_Format.SampleRate = ReadUnit(4, LittleEndian);
;;;453    
;;;454      /* Update the OCA value according to the .WAV file Sample Rate */
;;;455      switch(WAVE_Format.SampleRate)
;;;456      {
;;;457        case SampleRate_8000 : TIM2ARRValue = 9000; break; /* 8KHz = 72MHz / 9000 */
;;;458        case SampleRate_11025: TIM2ARRValue = 6531; break; /* 11.025KHz = 72MHz / 6531 */
;;;459        case SampleRate_22050: TIM2ARRValue = 3265; break; /* 22.05KHz = 72MHz / 3265 */  
;;;460        case SampleRate_44100: TIM2ARRValue = 1633; break; /* 44.1KHz = 72MHz / 1633 */    
;;;461        default: return(Unsupporetd_Sample_Rate);
;;;462      }
;;;463    
;;;464      /* Read the Byte Rate ------------------------------------------------------*/
;;;465      WAVE_Format.ByteRate = ReadUnit(4, LittleEndian);
;;;466    	
;;;467      /* Read the block alignment ------------------------------------------------*/
;;;468      WAVE_Format.BlockAlign = ReadUnit(2, LittleEndian);
;;;469    	
;;;470      /* Read the number of bits per sample --------------------------------------*/
;;;471      WAVE_Format.BitsPerSample = ReadUnit(2, LittleEndian);
;;;472      if(WAVE_Format.BitsPerSample != Bits_Per_Sample_16)
;;;473      {
;;;474        return(Unsupporetd_Bits_Per_Sample);
;;;475      }
;;;476      /* If there are Extra format bytes, these bytes will be defined in "Fact Chunk" */
;;;477      if(ExtraFormatBytes == 1)
;;;478      {
;;;479        /* Read th Extra format bytes, must be 0x00 ------------------------------*/
;;;480        Temp = ReadUnit(2, LittleEndian);
;;;481        if(Temp != 0x00)
;;;482        {
;;;483          return(Unsupporetd_ExtraFormatBytes);
;;;484        }
;;;485        /* Read the Fact chunk, must be 'fact' -----------------------------------*/
;;;486        Temp = ReadUnit(4, BigEndian);
;;;487        if(Temp != FactID)
;;;488        {
;;;489          return(Unvalid_FactChunk_ID);
;;;490        }
;;;491        /* Read Fact chunk data Size ---------------------------------------------*/
;;;492        Temp = ReadUnit(4, LittleEndian);
;;;493    
;;;494        /* Set the index to start reading just after the header end */
;;;495        HeaderTabIndex += Temp;
;;;496      }
;;;497      /* Read the Data chunk, must be 'data' -------------------------------------*/
;;;498      Temp = ReadUnit(4, BigEndian);
;;;499      if(Temp != DataID)
;;;500      {
;;;501        return(Unvalid_DataChunk_ID);
;;;502      }
;;;503      /* Read the number of sample data ------------------------------------------*/
;;;504      WAVE_Format.DataSize = ReadUnit(4, LittleEndian);
;;;505    
;;;506      /* Set the data pointer at the beginning of the effective audio data */
;;;507    	DataStartAddr += HeaderTabIndex;
;;;508      
;;;509      return(Valid_WAVE_File);	
;;;510    }
000018  bd70              POP      {r4-r6,pc}
                  |L2.26|
00001a  2100              MOVS     r1,#0                 ;422
00001c  2004              MOVS     r0,#4                 ;422
00001e  f7fffffe          BL       ReadUnit
000022  4e48              LDR      r6,|L2.324|
000024  2101              MOVS     r1,#1                 ;425
000026  6030              STR      r0,[r6,#0]            ;425  ; WAVE_Format
000028  2004              MOVS     r0,#4                 ;425
00002a  f7fffffe          BL       ReadUnit
00002e  4946              LDR      r1,|L2.328|
000030  4288              CMP      r0,r1                 ;426
000032  d001              BEQ      |L2.56|
000034  2002              MOVS     r0,#2                 ;428
000036  bd70              POP      {r4-r6,pc}
                  |L2.56|
000038  2101              MOVS     r1,#1                 ;431
00003a  2004              MOVS     r0,#4                 ;431
00003c  f7fffffe          BL       ReadUnit
000040  4942              LDR      r1,|L2.332|
000042  4288              CMP      r0,r1                 ;432
000044  d001              BEQ      |L2.74|
000046  2003              MOVS     r0,#3                 ;434
000048  bd70              POP      {r4-r6,pc}
                  |L2.74|
00004a  2100              MOVS     r1,#0                 ;437
00004c  2004              MOVS     r0,#4                 ;437
00004e  f7fffffe          BL       ReadUnit
000052  2810              CMP      r0,#0x10              ;438
000054  d000              BEQ      |L2.88|
000056  2501              MOVS     r5,#1                 ;440
                  |L2.88|
000058  2100              MOVS     r1,#0                 ;443
00005a  2002              MOVS     r0,#2                 ;443
00005c  f7fffffe          BL       ReadUnit
000060  b280              UXTH     r0,r0                 ;443
000062  80b0              STRH     r0,[r6,#4]            ;443  ; WAVE_Format
000064  2801              CMP      r0,#1                 ;444
000066  d001              BEQ      |L2.108|
000068  2004              MOVS     r0,#4                 ;446
00006a  bd70              POP      {r4-r6,pc}
                  |L2.108|
00006c  2100              MOVS     r1,#0                 ;449
00006e  2002              MOVS     r0,#2                 ;449
000070  f7fffffe          BL       ReadUnit
000074  80f0              STRH     r0,[r6,#6]            ;449  ; WAVE_Format
000076  2100              MOVS     r1,#0                 ;452
000078  2004              MOVS     r0,#4                 ;452
00007a  f7fffffe          BL       ReadUnit
00007e  60b0              STR      r0,[r6,#8]            ;455  ; WAVE_Format
000080  f5b05ffa          CMP      r0,#0x1f40            ;455
000084  d00d              BEQ      |L2.162|
000086  f5b05f7a          CMP      r0,#0x3e80            ;455
00008a  d00d              BEQ      |L2.168|
00008c  f5a040ac          SUB      r0,r0,#0x5600         ;455
000090  3822              SUBS     r0,r0,#0x22           ;455
000092  d020              BEQ      |L2.214|
000094  f5a040ac          SUB      r0,r0,#0x5600         ;455
000098  3822              SUBS     r0,r0,#0x22           ;455
00009a  d11f              BNE      |L2.220|
00009c  f2406061          MOV      r0,#0x661             ;460
0000a0  e004              B        |L2.172|
                  |L2.162|
0000a2  f2423028          MOV      r0,#0x2328            ;457
0000a6  e001              B        |L2.172|
                  |L2.168|
0000a8  f6411083          MOV      r0,#0x1983            ;458
                  |L2.172|
0000ac  80e0              STRH     r0,[r4,#6]            ;457  ; TIM2ARRValue
0000ae  2100              MOVS     r1,#0                 ;465
0000b0  2004              MOVS     r0,#4                 ;465
0000b2  f7fffffe          BL       ReadUnit
0000b6  60f0              STR      r0,[r6,#0xc]          ;468  ; WAVE_Format
0000b8  2100              MOVS     r1,#0                 ;468
0000ba  2002              MOVS     r0,#2                 ;468
0000bc  f7fffffe          BL       ReadUnit
0000c0  8230              STRH     r0,[r6,#0x10]         ;468  ; WAVE_Format
0000c2  2100              MOVS     r1,#0                 ;471
0000c4  2002              MOVS     r0,#2                 ;471
0000c6  f7fffffe          BL       ReadUnit
0000ca  b280              UXTH     r0,r0                 ;471
0000cc  8270              STRH     r0,[r6,#0x12]         ;471  ; WAVE_Format
0000ce  2810              CMP      r0,#0x10              ;472
0000d0  d006              BEQ      |L2.224|
0000d2  2007              MOVS     r0,#7                 ;474
0000d4  bd70              POP      {r4-r6,pc}
                  |L2.214|
0000d6  f64040c1          MOV      r0,#0xcc1             ;459
0000da  e7e7              B        |L2.172|
                  |L2.220|
0000dc  2006              MOVS     r0,#6                 ;461
0000de  bd70              POP      {r4-r6,pc}
                  |L2.224|
0000e0  2d01              CMP      r5,#1                 ;477
0000e2  d116              BNE      |L2.274|
0000e4  2100              MOVS     r1,#0                 ;480
0000e6  2002              MOVS     r0,#2                 ;480
0000e8  f7fffffe          BL       ReadUnit
0000ec  b108              CBZ      r0,|L2.242|
0000ee  2009              MOVS     r0,#9                 ;483
0000f0  bd70              POP      {r4-r6,pc}
                  |L2.242|
0000f2  2101              MOVS     r1,#1                 ;486
0000f4  2004              MOVS     r0,#4                 ;486
0000f6  f7fffffe          BL       ReadUnit
0000fa  4915              LDR      r1,|L2.336|
0000fc  4288              CMP      r0,r1                 ;487
0000fe  d001              BEQ      |L2.260|
000100  200a              MOVS     r0,#0xa               ;489
000102  bd70              POP      {r4-r6,pc}
                  |L2.260|
000104  2100              MOVS     r1,#0                 ;492
000106  2004              MOVS     r0,#4                 ;492
000108  f7fffffe          BL       ReadUnit
00010c  7821              LDRB     r1,[r4,#0]            ;495  ; HeaderTabIndex
00010e  4408              ADD      r0,r0,r1              ;495
000110  7020              STRB     r0,[r4,#0]            ;495  ; HeaderTabIndex
                  |L2.274|
000112  2101              MOVS     r1,#1                 ;498
000114  2004              MOVS     r0,#4                 ;498
000116  f7fffffe          BL       ReadUnit
00011a  490e              LDR      r1,|L2.340|
00011c  4288              CMP      r0,r1                 ;499
00011e  d001              BEQ      |L2.292|
000120  2008              MOVS     r0,#8                 ;501
000122  bd70              POP      {r4-r6,pc}
                  |L2.292|
000124  2100              MOVS     r1,#0                 ;504
000126  2004              MOVS     r0,#4                 ;504
000128  f7fffffe          BL       ReadUnit
00012c  6170              STR      r0,[r6,#0x14]         ;507  ; WAVE_Format
00012e  7821              LDRB     r1,[r4,#0]            ;507  ; HeaderTabIndex
000130  6920              LDR      r0,[r4,#0x10]         ;507  ; DataStartAddr
000132  4408              ADD      r0,r0,r1              ;507
000134  6120              STR      r0,[r4,#0x10]         ;509  ; DataStartAddr
000136  2000              MOVS     r0,#0                 ;509
000138  bd70              POP      {r4-r6,pc}
;;;511    
                          ENDP

00013a  0000              DCW      0x0000
                  |L2.316|
00013c  00000000          DCD      ||.data||
                  |L2.320|
000140  52494646          DCD      0x52494646
                  |L2.324|
000144  00000064          DCD      ||.bss||+0x64
                  |L2.328|

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -