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

📄 vs1003.txt

📁 MP3_PLAYER.rar
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 938] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\vs1003.o --depend=.\Obj\vs1003.d --device=DARMSTM --apcs=interwork -O3 -I.\Code\FATSystem\INC -I.\Code\Library\INC -I.\Code\SDCard\INC -I.\Code\Speaker\INC -I.\Code\System\INC -I.\Code\USBMassStorage\INC -I.\Code\User\INC -I.\Code\VS1003\INC -ID:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\Obj\vs1003.crf Code\VS1003\SRC\VS1003.c]
                          THUMB

                          AREA ||i.Delay||, CODE, READONLY, ALIGN=1

                  Delay PROC
000000  2800              CMP      r0,#0
000002  d006              BEQ      |L1.18|
000004  f44f727a          MOV      r2,#0x3e8
                  |L1.8|
000008  4611              MOV      r1,r2
                  |L1.10|
00000a  1e49              SUBS     r1,r1,#1
00000c  d1fd              BNE      |L1.10|
00000e  1e40              SUBS     r0,r0,#1
000010  d1fa              BNE      |L1.8|
                  |L1.18|
000012  4770              BX       lr
                          ENDP


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

                  SPIPutChar PROC
000000  4907              LDR      r1,|L2.32|
000002  bf00              NOP      
                  |L2.4|
000004  f8b12808          LDRH     r2,[r1,#0x808]
000008  0792              LSLS     r2,r2,#30
00000a  d5fb              BPL      |L2.4|
00000c  f8a1080c          STRH     r0,[r1,#0x80c]
                  |L2.16|
000010  f8b10808          LDRH     r0,[r1,#0x808]
000014  07c0              LSLS     r0,r0,#31
000016  d0fb              BEQ      |L2.16|
000018  f8b1080c          LDRH     r0,[r1,#0x80c]
00001c  b2c0              UXTB     r0,r0
00001e  4770              BX       lr
                          ENDP

                  |L2.32|
000020  40003000          DCD      0x40003000

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

                  SPIGetChar PROC
;;;54     u8 SPIGetChar(void)
;;;55     {
000000  b510              PUSH     {r4,lr}
000002  4c0b              LDR      r4,|L3.48|
                  |L3.4|
;;;56       u8 Data = 0;
;;;57     
;;;58       /* Wait until the transmit buffer is empty */
;;;59       while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
000004  2102              MOVS     r1,#2
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       SPI_I2S_GetFlagStatus
00000c  2800              CMP      r0,#0
00000e  d0f9              BEQ      |L3.4|
;;;60       /* Send the byte */
;;;61       SPI_I2S_SendData(SPI2, 0xFF);
000010  21ff              MOVS     r1,#0xff
000012  4620              MOV      r0,r4
000014  f7fffffe          BL       SPI_I2S_SendData
                  |L3.24|
;;;62     
;;;63       /* Wait until a data is received */
;;;64       while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
000018  2101              MOVS     r1,#1
00001a  4620              MOV      r0,r4
00001c  f7fffffe          BL       SPI_I2S_GetFlagStatus
000020  2800              CMP      r0,#0
000022  d0f9              BEQ      |L3.24|
;;;65       /* Get the received data */
;;;66       Data = SPI_I2S_ReceiveData(SPI2);
000024  4620              MOV      r0,r4
000026  f7fffffe          BL       SPI_I2S_ReceiveData
00002a  b2c0              UXTB     r0,r0
;;;67     
;;;68       /* Return the shifted data */
;;;69       return Data;
;;;70     }
00002c  bd10              POP      {r4,pc}
;;;71     
                          ENDP

00002e  0000              DCW      0x0000
                  |L3.48|
000030  40003800          DCD      0x40003800

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

                  Mp3WriteRegister PROC
;;;254    void Mp3WriteRegister(unsigned char addressbyte, unsigned char highbyte, unsigned char lowbyte)
;;;255    {
000000  b570              PUSH     {r4-r6,lr}
000002  4b0e              LDR      r3,|L4.60|
000004  4604              MOV      r4,r0
;;;256    	Mp3DeselectData();
000006  6818              LDR      r0,[r3,#0]
000008  460d              MOV      r5,r1                 ;255
00000a  4616              MOV      r6,r2                 ;255
00000c  f0400004          ORR      r0,r0,#4
000010  6018              STR      r0,[r3,#0]
;;;257    	Mp3SelectControl();				//XCS = 0
000012  6818              LDR      r0,[r3,#0]
000014  f0200002          BIC      r0,r0,#2
000018  6018              STR      r0,[r3,#0]
;;;258    	SPIPutChar(VS_WRITE_COMMAND); 	//发送写寄存器命令
00001a  2002              MOVS     r0,#2
00001c  f7fffffe          BL       SPIPutChar
;;;259    	SPIPutChar(addressbyte);      	//发送寄存器的地址
000020  4620              MOV      r0,r4
000022  f7fffffe          BL       SPIPutChar
;;;260    	SPIPutChar(highbyte);         	//发送待写数据的高8位
000026  4628              MOV      r0,r5
000028  f7fffffe          BL       SPIPutChar
;;;261    	SPIPutChar(lowbyte);          	//发送待写数据的低8位
00002c  4630              MOV      r0,r6
00002e  f7fffffe          BL       SPIPutChar
;;;262    	Mp3DeselectControl();
000032  6818              LDR      r0,[r3,#0]
000034  f0400002          ORR      r0,r0,#2
000038  6018              STR      r0,[r3,#0]
;;;263    }
00003a  bd70              POP      {r4-r6,pc}
;;;264    
                          ENDP

                  |L4.60|
00003c  4001080c          DCD      0x4001080c

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

                  Mp3SoftReset PROC
;;;79     void Mp3SoftReset(void)
;;;80     {
000000  b510              PUSH     {r4,lr}
;;;81     
;;;82     	Mp3WriteRegister (SPI_MODE, 0x08, 0x04); 			// 软件复位
000002  2204              MOVS     r2,#4
000004  2108              MOVS     r1,#8
000006  2000              MOVS     r0,#0
000008  f7fffffe          BL       Mp3WriteRegister
;;;83     
;;;84     	Delay(1); 	
00000c  2001              MOVS     r0,#1
00000e  f7fffffe          BL       Delay
;;;85     	while (GPIO_ReadInputData(GPIOA) & MP3_DREQ == 0); 	// 等待软件复位结束
000012  4818              LDR      r0,|L5.116|
000014  f7fffffe          BL       GPIO_ReadInputData
;;;86     	Mp3WriteRegister(SPI_CLOCKF, 0x98, 0x00);			// 设置vs1003的时钟,3倍频
000018  2200              MOVS     r2,#0
00001a  2198              MOVS     r1,#0x98
00001c  2003              MOVS     r0,#3
00001e  f7fffffe          BL       Mp3WriteRegister
;;;87     	Mp3WriteRegister (SPI_AUDATA, 0xBB, 0x81); 			// 采样率48k,立体声
000022  2281              MOVS     r2,#0x81
000024  21bb              MOVS     r1,#0xbb
000026  2005              MOVS     r0,#5
000028  f7fffffe          BL       Mp3WriteRegister
;;;88     	Mp3WriteRegister(SPI_BASS, 0x00, 0x55);				// 设置重音
00002c  2255              MOVS     r2,#0x55
00002e  2100              MOVS     r1,#0
000030  2002              MOVS     r0,#2
000032  f7fffffe          BL       Mp3WriteRegister
;;;89     	Mp3SetVolume(0,0);									// 设置音量
000036  2200              MOVS     r2,#0
000038  4611              MOV      r1,r2
00003a  200b              MOVS     r0,#0xb
00003c  f7fffffe          BL       Mp3WriteRegister
;;;90         Delay(1);	
000040  2001              MOVS     r0,#1
000042  f7fffffe          BL       Delay
000046  4b0b              LDR      r3,|L5.116|
000048  330c              ADDS     r3,r3,#0xc
;;;91         	
;;;92         //向vs1003发送4个字节无效数据,用以启动SPI发送
;;;93         Mp3SelectData();
00004a  6818              LDR      r0,[r3,#0]
00004c  f0200004          BIC      r0,r0,#4
000050  6018              STR      r0,[r3,#0]
;;;94     	SPIPutChar(0);
000052  2000              MOVS     r0,#0
000054  f7fffffe          BL       SPIPutChar
;;;95     	SPIPutChar(0);
000058  2000              MOVS     r0,#0
00005a  f7fffffe          BL       SPIPutChar
;;;96     	SPIPutChar(0);
00005e  2000              MOVS     r0,#0
000060  f7fffffe          BL       SPIPutChar
;;;97     	SPIPutChar(0);
000064  2000              MOVS     r0,#0
000066  f7fffffe          BL       SPIPutChar
;;;98     	Mp3DeselectData();
00006a  6818              LDR      r0,[r3,#0]
00006c  f0400004          ORR      r0,r0,#4
000070  6018              STR      r0,[r3,#0]
;;;99     
;;;100    }
000072  bd10              POP      {r4,pc}
;;;101    
                          ENDP

                  |L5.116|
000074  40010800          DCD      0x40010800

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

                  Mp3Reset PROC
;;;109    void Mp3Reset(void)
;;;110    {
000000  b510              PUSH     {r4,lr}
000002  4b12              LDR      r3,|L6.76|
;;;111    	Mp3PutInReset();									//xReset = 0   复位vs1003      
000004  6818              LDR      r0,[r3,#0]
000006  f0200001          BIC      r0,r0,#1
00000a  6018              STR      r0,[r3,#0]
;;;112    	Delay(100);		
00000c  2064              MOVS     r0,#0x64
00000e  f7fffffe          BL       Delay
;;;113    	SPIPutChar(0xff);									//发送一个字节的无效数据,启动SPI传输
000012  20ff              MOVS     r0,#0xff
000014  f7fffffe          BL       SPIPutChar
;;;114    	Mp3DeselectControl();   							//xCS = 1
000018  6818              LDR      r0,[r3,#0]
00001a  f0400002          ORR      r0,r0,#2
00001e  6018              STR      r0,[r3,#0]
;;;115    	Mp3DeselectData();     								//xDCS = 1
000020  6818              LDR      r0,[r3,#0]
000022  f0400004          ORR      r0,r0,#4
000026  6018              STR      r0,[r3,#0]
;;;116    	Mp3ReleaseFromReset(); 								//xRESET = 1
000028  6818              LDR      r0,[r3,#0]
00002a  f0400001          ORR      r0,r0,#1
00002e  6018              STR      r0,[r3,#0]
;;;117    	Delay(100);	           								//延时100ms
000030  2064              MOVS     r0,#0x64
000032  f7fffffe          BL       Delay
;;;118    	while (GPIO_ReadInputData(GPIOA) & MP3_DREQ == 0);	//等待DREQ为高
000036  4805              LDR      r0,|L6.76|
000038  380c              SUBS     r0,r0,#0xc
00003a  f7fffffe          BL       GPIO_ReadInputData
;;;119        Delay(100);	
00003e  2064              MOVS     r0,#0x64

⌨️ 快捷键说明

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