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

📄 waveplayer.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 4 页
字号:
000016  bf00              NOP      
                  |L4.24|
000018  f7fff7ff          BL       ReadKey
00001c  2800              CMP      r0,#0
00001e  d1fb              BNE      |L4.24|
;;;74       {
;;;75       }  
;;;76     
;;;77       /* Display the welcome screen and the commands */
;;;78       LCD_Update(ALL);
000020  4861              LDR      r0,|L4.424|
000022  f7fff7ff          BL       LCD_Update
;;;79     
;;;80       /* Choose number of repetitions: 0 => infinite repetitions */
;;;81       I2S_CODEC_ReplayConfig(0);
000026  2000              MOVS     r0,#0
000028  f7fff7ff          BL       I2S_CODEC_ReplayConfig
;;;82       I2S_CODEC_Init(OutputDevice_SPEAKER, AUDIO_FILE_ADDRESS);
00002c  4f5f              LDR      r7,|L4.428|
00002e  2001              MOVS     r0,#1
000030  4639              MOV      r1,r7
000032  f7fff7ff          BL       I2S_CODEC_Init
000036  f44ff44f          MOV      r8,#0x10000
00003a  f44ff44f          MOV      r9,#0x100
00003e  f04ff04f          MOV      r10,#0x1000000
;;;83     
;;;84       /* Endless loop */
;;;85       while(1)
;;;86       {
;;;87         /* Check which key is pressed */
;;;88         MyKey = ReadKey();
000042  bf00              NOP      
                  |L4.68|
000044  f7fff7ff          BL       ReadKey
000048  4604              MOV      r4,r0
;;;89         
;;;90         if(Counter == 0)
00004a  b945              CBNZ     r5,|L4.94|
;;;91         { /* Mask All Interrupts */
;;;92           NVIC_SETPRIMASK();
00004c  f7fff7ff          BL       NVIC_SETPRIMASK
;;;93           /* Update the displayed progression information */
;;;94           LCD_Update(PROGRESS);
000050  f44ff44f          MOV      r0,#0x1000
000054  f7fff7ff          BL       LCD_Update
;;;95           Counter = 0x5FFFF;
000058  4d55              LDR      r5,|L4.432|
;;;96           /* Disable mask of all interrupts */
;;;97           NVIC_RESETPRIMASK();
00005a  f7fff7ff          BL       NVIC_RESETPRIMASK
                  |L4.94|
;;;98         }
;;;99         Counter--;
00005e  1e6d              SUBS     r5,r5,#1
;;;100        /* If "UP" pushbutton is pressed */
;;;101        if(MyKey == UP)
000060  2c04              CMP      r4,#4
000062  d11d              BNE      |L4.160|
;;;102        {
;;;103          /* Mask All Interrupts */
;;;104          NVIC_SETPRIMASK();
000064  f7fff7ff          BL       NVIC_SETPRIMASK
;;;105          /* Check if the Codec is PLAYING audio file */
;;;106          if (GetVar_AudioPlayStatus() == AudioPlayStatus_PLAYING)
000068  f7fff7ff          BL       GetVar_AudioPlayStatus
00006c  2801              CMP      r0,#1
00006e  d102              BNE      |L4.118|
;;;107          {
;;;108            I2S_CODEC_ControlVolume(VolumeDirection_HIGH, VOLStep);
000070  2104              MOVS     r1,#4
000072  200f              MOVS     r0,#0xf
;;;109    
;;;110            /* Update the display information */
;;;111            LCD_Update(VOL);
000074  e01e              B        |L4.180|
                  |L4.118|
;;;112          }
;;;113          /* UP bottomn pushed in PAUSE mode => Enable the Speaker device output ---*/
;;;114          else
;;;115          {
;;;116            /* Update the display information */
;;;117            LCD_Update(PLAY);
000076  4650              MOV      r0,r10
000078  f7fff7ff          BL       LCD_Update
;;;118    
;;;119            /* Configure the Speaker as output and reinitialize all devices */
;;;120            err = I2S_CODEC_SpeakerHeadphoneSwap(OutputDevice_SPEAKER, AUDIO_FILE_ADDRESS);
00007c  4639              MOV      r1,r7
00007e  2001              MOVS     r0,#1
;;;121      
;;;122            /* Error message display if failure */
;;;123            if (err != 0)
000080  e021              B        |L4.198|
;;;124            {
;;;125              LCD_DisplayError(err);
000082  bf00              NOP      
                  |L4.132|
000084  f7fff7ff          BL       LCD_DisplayError
;;;126    
;;;127              /* Enable the FSMC that share a pin w/ I2C1 (LBAR) */
;;;128              RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000088  2101              MOVS     r1,#1
00008a  4648              MOV      r0,r9
00008c  f7fff7ff          BL       RCC_AHBPeriphClockCmd
;;;129    
;;;130              /* Clear the LCD */
;;;131              LCD_Clear(White);
000090  4630              MOV      r0,r6
000092  f7fff7ff          BL       LCD_Clear
;;;132    
;;;133              /* Display the previous menu */
;;;134              DisplayMenu();
000096  f7fff7ff          BL       DisplayMenu
;;;135    
;;;136              /* Disable mask of all interrupts */
;;;137              NVIC_RESETPRIMASK();
00009a  f7fff7ff          BL       NVIC_RESETPRIMASK
;;;138    
;;;139              /* Enable the JoyStick interrupts */
;;;140              IntExtOnOffConfig(ENABLE); 
;;;141              return; 
00009e  e052              B        |L4.326|
                  |L4.160|
;;;142            }      
;;;143          } 
;;;144          /* Disable mask of all interrupts */
;;;145          NVIC_RESETPRIMASK();
;;;146        }
;;;147    
;;;148        /* If "DOWN" pushbutton is pressed */
;;;149        if(MyKey == DOWN)
0000a0  2c05              CMP      r4,#5
0000a2  d115              BNE      |L4.208|
;;;150        {
;;;151          /* Mask All Interrupts */
;;;152          NVIC_SETPRIMASK();
0000a4  f7fff7ff          BL       NVIC_SETPRIMASK
;;;153    
;;;154          /* If the Codec is PLAYING => Decrease Volume*/
;;;155          if (GetVar_AudioPlayStatus() == AudioPlayStatus_PLAYING)
0000a8  f7fff7ff          BL       GetVar_AudioPlayStatus
0000ac  2801              CMP      r0,#1
0000ae  d105              BNE      |L4.188|
;;;156          {
;;;157            /* Increase the audio codec digital volume */
;;;158            I2S_CODEC_ControlVolume(VolumeDirection_LOW, VOLStep);
0000b0  2104              MOVS     r1,#4
0000b2  200a              MOVS     r0,#0xa
                  |L4.180|
0000b4  f7fff7ff          BL       I2S_CODEC_ControlVolume
;;;159    
;;;160            /* Update the LCD display */ 
;;;161            LCD_Update(VOL); 
0000b8  4640              MOV      r0,r8
0000ba  e015              B        |L4.232|
                  |L4.188|
;;;162          }
;;;163          else /* If the Codec is PAUSED => Headphone Enable */
;;;164          {
;;;165            /* Update the LCD display */ 
;;;166            LCD_Update(PLAY);
0000bc  4650              MOV      r0,r10
0000be  f7fff7ff          BL       LCD_Update
;;;167          
;;;168            /* Enable the Headphone output and reinitialize all devices */ 
;;;169            err = I2S_CODEC_SpeakerHeadphoneSwap(OutputDevice_HEADPHONE, AUDIO_FILE_ADDRESS);
0000c2  4639              MOV      r1,r7
0000c4  2002              MOVS     r0,#2
                  |L4.198|
0000c6  f7fff7ff          BL       I2S_CODEC_SpeakerHeadphoneSwap
0000ca  2800              CMP      r0,#0
                  |L4.204|
0000cc  d1da              BNE      |L4.132|
0000ce  e01b              B        |L4.264|
                  |L4.208|
;;;170    
;;;171            /* Error message display if failure */
;;;172            if (err != 0)
;;;173            {
;;;174              LCD_DisplayError(err);
;;;175    
;;;176              /* Enable the FSMC that share a pin w/ I2C1 (LBAR) */
;;;177              RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
;;;178    
;;;179              /* Clear the LCD */
;;;180              LCD_Clear(White);
;;;181    
;;;182              /* Display the previous menu */
;;;183              DisplayMenu();
;;;184    
;;;185              /* Disable mask of all interrupts */
;;;186              NVIC_RESETPRIMASK();
;;;187    
;;;188              /* Enable the JoyStick interrupts */
;;;189              IntExtOnOffConfig(ENABLE); 
;;;190              return; 
;;;191            }  
;;;192          }
;;;193          /* Disable mask of all interrupts */
;;;194          NVIC_RESETPRIMASK();
;;;195        }
;;;196    
;;;197        /* If "RIGHT" pushbutton is pressed */
;;;198        if(MyKey == RIGHT)
0000d0  2c02              CMP      r4,#2
0000d2  d10c              BNE      |L4.238|
;;;199        {
;;;200          /* Mask All Interrupts */
;;;201          NVIC_SETPRIMASK();
0000d4  f7fff7ff          BL       NVIC_SETPRIMASK
;;;202    
;;;203          /* Check if the Codec is PLAYING audio file */
;;;204          if (GetVar_AudioPlayStatus() == AudioPlayStatus_PLAYING)
0000d8  f7fff7ff          BL       GetVar_AudioPlayStatus
0000dc  2801              CMP      r0,#1
0000de  d113              BNE      |L4.264|
;;;205          {
;;;206            I2S_CODEC_ForwardPlay(STEP_FORWARD); 
0000e0  2002              MOVS     r0,#2
0000e2  f7fff7ff          BL       I2S_CODEC_ForwardPlay
;;;207            /* Update the display information */
;;;208            LCD_Update(FRWD); 
0000e6  e00d              B        |L4.260|
                  |L4.232|
0000e8  f7fff7ff          BL       LCD_Update
0000ec  e00c              B        |L4.264|
                  |L4.238|
;;;209          }
;;;210          /* Disable mask of all interrupts */
;;;211          NVIC_RESETPRIMASK(); 
;;;212        }
;;;213        /* If "LEFT" pushbutton is pressed */
;;;214        if(MyKey == LEFT)
0000ee  2c03              CMP      r4,#3
0000f0  d10d              BNE      |L4.270|
;;;215        {
;;;216          /* Mask All Interrupts */
;;;217          NVIC_SETPRIMASK();
0000f2  f7fff7ff          BL       NVIC_SETPRIMASK
;;;218    
;;;219          /* Check if the Codec is PLAYING audio file */
;;;220          if (GetVar_AudioPlayStatus() == AudioPlayStatus_PLAYING)
0000f6  f7fff7ff          BL       GetVar_AudioPlayStatus
0000fa  2801              CMP      r0,#1
0000fc  d104              BNE      |L4.264|
;;;221          {
;;;222            I2S_CODEC_RewindPlay(STEP_BACK);
0000fe  2006              MOVS     r0,#6
000100  f7fff7ff          BL       I2S_CODEC_RewindPlay
                  |L4.260|
;;;223            /* Update the display information */
;;;224            LCD_Update(FRWD);  
000104  4648              MOV      r0,r9
000106  e7ef              B        |L4.232|
                  |L4.264|
;;;225          } 
;;;226          /* Disable mask of all interrupts */
;;;227          NVIC_RESETPRIMASK();
000108  f7fff7ff          BL       NVIC_RESETPRIMASK

⌨️ 快捷键说明

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