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

📄 i2s_codec.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;1361     I2C_GenerateSTOP(I2C1, ENABLE);
0000b0  2101              MOVS     r1,#1
0000b2  4628              MOV      r0,r5
0000b4  f7fffffe          BL       I2C_GenerateSTOP
;;;1362   
;;;1363   	/* Load the register value */
;;;1364   	tmp = I2C_ReceiveData(I2C1);
0000b8  4628              MOV      r0,r5
0000ba  f7fffffe          BL       I2C_ReceiveData
0000be  4604              MOV      r4,r0
;;;1365   
;;;1366    	/* Disable Acknowledgement */
;;;1367     I2C_AcknowledgeConfig(I2C1, ENABLE);
0000c0  2101              MOVS     r1,#1
0000c2  4628              MOV      r0,r5
0000c4  f7fffffe          BL       I2C_AcknowledgeConfig
;;;1368   
;;;1369     /* Return the read value */
;;;1370   	return tmp;  
0000c8  4620              MOV      r0,r4
;;;1371   }
0000ca  e8bd81f0          POP      {r4-r8,pc}
;;;1372   
                          ENDP

0000ce  0000              DCW      0x0000
                  |L3.208|
                          DCD      0x40005400
                  |L3.212|
                          DCD      0x00030001
                  |L3.216|
                          DCD      0x00070082

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

                  CODEC_WriteRegister PROC
;;;1231   *******************************************************************************/
;;;1232   u32 CODEC_WriteRegister(u32 RegisterAddr, u32 RegisterValue)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;1233   {
;;;1234   	u32 read_verif = 0;
;;;1235     
;;;1236   	/* Reset all I2C2 registers */       
;;;1237     I2C_SoftwareResetCmd(I2C1, ENABLE);
000004  4d23              LDR      r5,|L4.148|
000006  4604              MOV      r4,r0                 ;1233
000008  460e              MOV      r6,r1                 ;1233
00000a  2700              MOVS     r7,#0                 ;1234
00000c  2101              MOVS     r1,#1
00000e  4628              MOV      r0,r5
000010  f7fffffe          BL       I2C_SoftwareResetCmd
;;;1238     I2C_SoftwareResetCmd(I2C1, DISABLE);
000014  2100              MOVS     r1,#0
000016  4628              MOV      r0,r5
000018  f7fffffe          BL       I2C_SoftwareResetCmd
;;;1239   
;;;1240     /* Enable the I2C1 peripheral  */
;;;1241     I2C_Cmd(I2C1, ENABLE);
00001c  2101              MOVS     r1,#1
00001e  4628              MOV      r0,r5
000020  f7fffffe          BL       I2C_Cmd
;;;1242   
;;;1243     /* Configure the I2C peripheral */
;;;1244   	I2C_Config();
000024  f7fffffe          BL       I2C_Config
;;;1245   	  
;;;1246     /* Begin the config sequence */
;;;1247     I2C_GenerateSTART(I2C1, ENABLE);
000028  2101              MOVS     r1,#1
00002a  4628              MOV      r0,r5
00002c  f7fffffe          BL       I2C_GenerateSTART
;;;1248     
;;;1249     /* Test on EV5 and clear it */
;;;1250     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))
000030  f8df8064          LDR      r8,|L4.152|
                  |L4.52|
000034  4628              MOV      r0,r5
000036  4641              MOV      r1,r8
000038  f7fffffe          BL       I2C_CheckEvent
00003c  2800              CMP      r0,#0
00003e  d0f9              BEQ      |L4.52|
;;;1251     {}  
;;;1252     /* Transmit the slave address and enable writing operation */
;;;1253     I2C_Send7bitAddress(I2C1, CODEC_ADDRESS, I2C_Direction_Transmitter);
000040  2200              MOVS     r2,#0
000042  2127              MOVS     r1,#0x27
000044  4628              MOV      r0,r5
000046  f7fffffe          BL       I2C_Send7bitAddress
;;;1254     
;;;1255     /* Test on EV6 and clear it */
;;;1256     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
00004a  f8df8050          LDR      r8,|L4.156|
                  |L4.78|
00004e  4628              MOV      r0,r5
000050  4641              MOV      r1,r8
000052  f7fffffe          BL       I2C_CheckEvent
000056  2800              CMP      r0,#0
000058  d0f9              BEQ      |L4.78|
;;;1257     {}  
;;;1258     /* Transmit the first address for r/w operations */
;;;1259     I2C_SendData(I2C1, RegisterAddr);
00005a  b2e1              UXTB     r1,r4
00005c  4628              MOV      r0,r5
00005e  f7fffffe          BL       I2C_SendData
;;;1260     
;;;1261     /* Test on EV8 and clear it */
;;;1262     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED))
000062  4c0e              LDR      r4,|L4.156|
000064  1ca4              ADDS     r4,r4,#2
                  |L4.102|
000066  4621              MOV      r1,r4
000068  4628              MOV      r0,r5
00006a  f7fffffe          BL       I2C_CheckEvent
00006e  2800              CMP      r0,#0
000070  d0f9              BEQ      |L4.102|
;;;1263     {} 
;;;1264      
;;;1265     /* Prepare the register value to be sent */
;;;1266     I2C_SendData(I2C1, RegisterValue);
000072  b2f1              UXTB     r1,r6
000074  4628              MOV      r0,r5
000076  f7fffffe          BL       I2C_SendData
                  |L4.122|
;;;1267   
;;;1268     /* Test on EV8 and clear it */
;;;1269     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED))
00007a  4621              MOV      r1,r4
00007c  4628              MOV      r0,r5
00007e  f7fffffe          BL       I2C_CheckEvent
000082  2800              CMP      r0,#0
000084  d0f9              BEQ      |L4.122|
;;;1270     {}
;;;1271      
;;;1272     /* End the configuration sequence */
;;;1273     I2C_GenerateSTOP(I2C1, ENABLE);
000086  2101              MOVS     r1,#1
000088  4628              MOV      r0,r5
00008a  f7fffffe          BL       I2C_GenerateSTOP
;;;1274     
;;;1275     /* Verify (if needed) that the loaded data is correct  */
;;;1276   #ifdef VERIFY_WRITTENDATA
;;;1277     /* Read the just written register*/
;;;1278     read_verif = CODEC_ReadRegister(RegisterAddr);
;;;1279   
;;;1280     /* Load the register and verify its value  */
;;;1281     if(read_verif != RegisterValue)
;;;1282     {
;;;1283       /* Control data wrongly tranfered */
;;;1284   		read_verif = 1;
;;;1285     }
;;;1286   	else
;;;1287   	{
;;;1288       /* Control data correctly transfered */
;;;1289   		read_verif = 0;
;;;1290   	}
;;;1291   #endif
;;;1292   
;;;1293     /* Return the verifying value: 0 (Passed) or 1 (Failed) */
;;;1294     return read_verif;
00008e  4638              MOV      r0,r7
;;;1295   }
000090  e8bd81f0          POP      {r4-r8,pc}
;;;1296   
                          ENDP

                  |L4.148|
                          DCD      0x40005400
                  |L4.152|
                          DCD      0x00030001
                  |L4.156|
                          DCD      0x00070082

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

                  DecrementVar_AudioDataIndex PROC
;;;699    *******************************************************************************/
;;;700    void DecrementVar_AudioDataIndex(u32 DecrementNumber)
000000  4904              LDR      r1,|L5.20|
;;;701    { 
;;;702      if (DecrementNumber >= AudioDataIndex)
000002  694a              LDR      r2,[r1,#0x14]  ; AudioDataIndex
000004  4290              CMP      r0,r2
000006  d301              BCC      |L5.12|
;;;703      {
;;;704        ResetVar_AudioDataIndex();
000008  f7ffbffe          B.W      ResetVar_AudioDataIndex
                  |L5.12|
;;;705      }
;;;706      else
;;;707      { 
;;;708        AudioDataIndex -= (u32)DecrementNumber;
00000c  694a              LDR      r2,[r1,#0x14]  ; AudioDataIndex
00000e  1a10              SUBS     r0,r2,r0
000010  6148              STR      r0,[r1,#0x14]  ; AudioDataIndex
;;;709      }
;;;710    }
000012  4770              BX       lr
;;;711    
                          ENDP

                  |L5.20|
                          DCD      ||.data||

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

                  Decrement_AudioReplay PROC
;;;813    *******************************************************************************/
;;;814    void Decrement_AudioReplay(void)
000000  4906              LDR      r1,|L6.28|
;;;815    { 
;;;816      if (AudioReplay != 0)
000002  6988              LDR      r0,[r1,#0x18]  ; AudioReplay
000004  2800              CMP      r0,#0
000006  d007              BEQ      |L6.24|
;;;817      {
;;;818        AudioReplayCount--;
000008  69c8              LDR      r0,[r1,#0x1c]  ; AudioReplayCount
00000a  1e40              SUBS     r0,r0,#1
;;;819    
;;;820    		if (AudioReplayCount == 0)
00000c  61c8              STR      r0,[r1,#0x1c]  ; AudioReplayCount
00000e  d103              BNE      |L6.24|
000010  6248              STR      r0,[r1,#0x24]  ; AudioPlayStatus
000012  6a48              LDR      r0,[r1,#0x24]  ; AudioPlayStatus
;;;821    	  {
;;;822    	    /* Command the Stop of the audio playing */ 
;;;823    	    SetVar_AudioPlayStatus(AudioPlayStatus_STOPPED);
;;;824    	    
;;;825    	    /* Reset the counter */
;;;826    	    AudioReplayCount = AudioReplay;
000014  6988              LDR      r0,[r1,#0x18]  ; AudioReplay
000016  61c8              STR      r0,[r1,#0x1c]  ; AudioReplayCount
                  |L6.24|
;;;827    	  }
;;;828      }
;;;829    }
000018  4770              BX       lr
;;;830    
                          ENDP

00001a  0000              DCW      0x0000
                  |L6.28|
                          DCD      ||.data||

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

                  GetVar_AudioDataIndex PROC
;;;657    *******************************************************************************/
;;;658    u32 GetVar_AudioDataIndex(void)
000000  4801              LDR      r0,|L7.8|
;;;659    { 
;;;660      return AudioDataIndex;
000002  6940              LDR      r0,[r0,#0x14]  ; AudioDataIndex
;;;661    }
000004  4770              BX       lr
;;;662    
                          ENDP

000006  0000              DCW      0x0000
                  |L7.8|
                          DCD      ||.data||

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

                  GetVar_AudioDataLength PROC
;;;849    *******************************************************************************/
;;;850    u32 GetVar_AudioDataLength(void)
000000  4801              LDR      r0,|L8.8|
;;;851    { 
;;;852      return AudioDataLength;
000002  68c0              LDR      r0,[r0,#0xc]  ; AudioDataLength
;;;853    }
000004  4770              BX       lr
;;;854    
                          ENDP

000006  0000              DCW      0x0000
                  |L8.8|
                          DCD      ||.data||

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

                  GetVar_AudioPlayStatus PROC
;;;773    *******************************************************************************/
;;;774    u32 GetVar_AudioPlayStatus(void)
000000  4801              LDR      r0,|L9.8|
;;;775    { 
;;;776      return AudioPlayStatus;
000002  6a40              LDR      r0,[r0,#0x24]  ; AudioPlayStatus
;;;777    }
000004  4770              BX       lr
;;;778    
                          ENDP

000006  0000              DCW      0x0000
                  |L9.8|
                          DCD      ||.data||

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

                  GetVar_AudioReplay PROC
;;;800    *******************************************************************************/
;;;801    u32 GetVar_AudioReplay(void)
000000  4801              LDR      r0,|L10.8|
;;;802    { 
;;;803      return AudioReplay;

⌨️ 快捷键说明

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