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

📄 main.txt

📁 基于CORTEX-M3内核的stm32f10x芯片的DMA代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\main.o --depend=..\obj\main.d --device=DARMSTM -I..\..\LAB2 -I..\..\library\src -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_RAM --omf_browse=..\obj\main.crf main.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  Buffercmp PROC
;;;209    TestStatus Buffercmp(uc32* pBuffer, u32* pBuffer1, u16 BufferLength)
;;;210    {
000000  b510              PUSH     {r4,lr}
000002  4603              MOV      r3,r0
;;;211      while(BufferLength--)
000004  e007              B        |L1.22|
                  |L1.6|
;;;212      {
;;;213        if(*pBuffer != *pBuffer1)
000006  6818              LDR      r0,[r3,#0]
000008  680c              LDR      r4,[r1,#0]
00000a  42a0              CMP      r0,r4
00000c  d001              BEQ      |L1.18|
;;;214        {
;;;215          return FAILED;
00000e  2000              MOVS     r0,#0
                  |L1.16|
;;;216        }
;;;217        
;;;218        pBuffer++;
;;;219        pBuffer1++;
;;;220      }
;;;221    
;;;222      return PASSED;  
;;;223    }
000010  bd10              POP      {r4,pc}
                  |L1.18|
000012  1d1b              ADDS     r3,r3,#4
000014  1d09              ADDS     r1,r1,#4
                  |L1.22|
000016  0010              MOVS     r0,r2
000018  f1a2f1a2          SUB      r4,r2,#1
00001c  b2a2              UXTH     r2,r4
00001e  d1f2              BNE      |L1.6|
000020  2001              MOVS     r0,#1
000022  e7f5              B        |L1.16|
                          ENDP

                  NVIC_Configuration PROC
;;;167    void NVIC_Configuration(void)
;;;168    {  
000024  b510              PUSH     {r4,lr}
;;;169    #ifdef  VECT_TAB_RAM  
;;;170      /* Set the Vector Table base location at 0x20000000 */ 
;;;171      NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
000026  2100              MOVS     r1,#0
000028  f04ff04f          MOV      r0,#0x20000000
00002c  f7fff7ff          BL       NVIC_SetVectorTable
;;;172    #else  /* VECT_TAB_FLASH  */
;;;173      /* Set the Vector Table base location at 0x08000000 */ 
;;;174      NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
;;;175    #endif
;;;176    }
000030  bd10              POP      {r4,pc}
                          ENDP

                  RCC_Configuration PROC
;;;126    void RCC_Configuration(void)
;;;127    {
000032  b510              PUSH     {r4,lr}
;;;128      /* RCC system reset(for debug purpose) */
;;;129      RCC_DeInit();
000034  f7fff7ff          BL       RCC_DeInit
;;;130    
;;;131      /* Enable HSE */
;;;132      RCC_HSEConfig(RCC_HSE_ON);
000038  f44ff44f          MOV      r0,#0x10000
00003c  f7fff7ff          BL       RCC_HSEConfig
;;;133    
;;;134      /* Wait till HSE is ready */
;;;135      while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET)
000040  bf00              NOP      
                  |L1.66|
000042  2031              MOVS     r0,#0x31
000044  f7fff7ff          BL       RCC_GetFlagStatus
000048  2800              CMP      r0,#0
00004a  d0fa              BEQ      |L1.66|
;;;136      {
;;;137      }
;;;138    
;;;139      /* HCLK = SYSCLK */
;;;140      RCC_HCLKConfig(RCC_SYSCLK_Div1); 
00004c  2000              MOVS     r0,#0
00004e  f7fff7ff          BL       RCC_HCLKConfig
;;;141      
;;;142      /* PCLK2 = HCLK */
;;;143      RCC_PCLK2Config(RCC_HCLK_Div1); 
000052  2000              MOVS     r0,#0
000054  f7fff7ff          BL       RCC_PCLK2Config
;;;144    
;;;145      /* PCLK1 = HCLK */
;;;146      RCC_PCLK1Config(RCC_HCLK_Div1);
000058  2000              MOVS     r0,#0
00005a  f7fff7ff          BL       RCC_PCLK1Config
;;;147    
;;;148      /* Select HSE as system clock source */
;;;149      RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
00005e  2001              MOVS     r0,#1
000060  f7fff7ff          BL       RCC_SYSCLKConfig
;;;150    
;;;151      /* Wait till HSE is used as system clock source */
;;;152      while(RCC_GetSYSCLKSource() != 0x04)
000064  bf00              NOP      
                  |L1.102|
000066  f7fff7ff          BL       RCC_GetSYSCLKSource
00006a  2804              CMP      r0,#4
00006c  d1fb              BNE      |L1.102|
;;;153      {
;;;154      }
;;;155    
;;;156      /* DMA clock enable */
;;;157      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);
00006e  2101              MOVS     r1,#1
000070  4608              MOV      r0,r1
000072  f7fff7ff          BL       RCC_AHBPeriphClockCmd
;;;158    }
000076  bd10              POP      {r4,pc}
                          ENDP

                  main PROC
;;;60     int main(void)
;;;61     { 
000078  b510              PUSH     {r4,lr}
;;;62     int i=0;
00007a  2400              MOVS     r4,#0
;;;63     #ifdef DEBUG
;;;64      debug();
;;;65     #endif
;;;66     
;;;67       /* System Clocks Configuration ---------------------------------------------*/
;;;68       RCC_Configuration();
00007c  f7fff7ff          BL       RCC_Configuration
;;;69     
;;;70       /* NVIC Configuration ------------------------------------------------------*/
;;;71       NVIC_Configuration();
000080  f7fff7ff          BL       NVIC_Configuration
;;;72     
;;;73       /* DMA Channel6 Configuration ----------------------------------------------*/
;;;74       DMA_DeInit(DMA_Channel6);
000084  482f              LDR      r0,|L1.324|
000086  f7fff7ff          BL       DMA_DeInit
;;;75       DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_Const_Buffer;
00008a  482f              LDR      r0,|L1.328|
00008c  492f              LDR      r1,|L1.332|
00008e  6008              STR      r0,[r1,#0]  ; DMA_InitStructure
;;;76       DMA_InitStructure.DMA_MemoryBaseAddr = (u32)DST_Buffer;
000090  482f              LDR      r0,|L1.336|
000092  6048              STR      r0,[r1,#4]  ; DMA_InitStructure
;;;77       DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
000094  2000              MOVS     r0,#0
000096  6088              STR      r0,[r1,#8]  ; DMA_InitStructure
;;;78      
;;;79       DMA_InitStructure.DMA_BufferSize = BufferSize;
000098  2020              MOVS     r0,#0x20
00009a  60c8              STR      r0,[r1,#0xc]  ; DMA_InitStructure
;;;80       DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;
00009c  2040              MOVS     r0,#0x40
00009e  6108              STR      r0,[r1,#0x10]  ; DMA_InitStructure
;;;81       DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
0000a0  2080              MOVS     r0,#0x80
0000a2  6148              STR      r0,[r1,#0x14]  ; DMA_InitStructure
;;;82       DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
0000a4  0080              LSLS     r0,r0,#2
0000a6  6188              STR      r0,[r1,#0x18]  ; DMA_InitStructure
;;;83       DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
0000a8  0080              LSLS     r0,r0,#2
0000aa  61c8              STR      r0,[r1,#0x1c]  ; DMA_InitStructure
;;;84       DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
0000ac  2000              MOVS     r0,#0
0000ae  6208              STR      r0,[r1,#0x20]  ; DMA_InitStructure
;;;85       DMA_InitStructure.DMA_Priority = DMA_Priority_High;
0000b0  f44ff44f          MOV      r0,#0x2000
0000b4  6248              STR      r0,[r1,#0x24]  ; DMA_InitStructure
;;;86       DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;
0000b6  0040              LSLS     r0,r0,#1
0000b8  6288              STR      r0,[r1,#0x28]  ; DMA_InitStructure
;;;87       DMA_Init(DMA_Channel6, &DMA_InitStructure);
0000ba  4822              LDR      r0,|L1.324|
0000bc  f7fff7ff          BL       DMA_Init
;;;88     
;;;89       /* Enable DMA Channel6 transfer */
;;;90       DMA_Cmd(DMA_Channel6, ENABLE);
0000c0  2101              MOVS     r1,#1
0000c2  4820              LDR      r0,|L1.324|
0000c4  f7fff7ff          BL       DMA_Cmd
;;;91     
;;;92       /* Check if the transmitted and received data are equal */

⌨️ 快捷键说明

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