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

📄 stm32f10x_dma.txt

📁 STM32 ARM 处理器的ADC采样源代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
0000e6  688b              LDR      r3,[r1,#8]
0000e8  4323              ORRS     r3,r3,r4
0000ea  690c              LDR      r4,[r1,#0x10]
0000ec  4323              ORRS     r3,r3,r4
0000ee  694c              LDR      r4,[r1,#0x14]
0000f0  4323              ORRS     r3,r3,r4
0000f2  698c              LDR      r4,[r1,#0x18]
0000f4  4323              ORRS     r3,r3,r4
0000f6  69cc              LDR      r4,[r1,#0x1c]
0000f8  4323              ORRS     r3,r3,r4
0000fa  6a4c              LDR      r4,[r1,#0x24]
0000fc  4323              ORRS     r3,r3,r4
0000fe  6a8c              LDR      r4,[r1,#0x28]
000100  4323              ORRS     r3,r3,r4
000102  431a              ORRS     r2,r2,r3
;;;158                DMA_InitStruct->DMA_PeripheralInc | DMA_InitStruct->DMA_MemoryInc |
;;;159                DMA_InitStruct->DMA_PeripheralDataSize | DMA_InitStruct->DMA_MemoryDataSize |
;;;160                DMA_InitStruct->DMA_Priority | DMA_InitStruct->DMA_M2M;
;;;161      /* Write to DMA Channelx CCR */
;;;162      DMA_Channelx->CCR = tmpreg;
000104  6002              STR      r2,[r0,#0]
;;;163    
;;;164    /*--------------------------- DMA Channelx CNBTR Configuration ---------------*/
;;;165      /* Write to DMA Channelx CNBTR */
;;;166      DMA_Channelx->CNDTR = DMA_InitStruct->DMA_BufferSize;
000106  68cb              LDR      r3,[r1,#0xc]
000108  6043              STR      r3,[r0,#4]
;;;167    
;;;168    /*--------------------------- DMA Channelx CPAR Configuration ----------------*/
;;;169      /* Write to DMA Channelx CPAR */
;;;170      DMA_Channelx->CPAR = DMA_InitStruct->DMA_PeripheralBaseAddr;
00010a  680b              LDR      r3,[r1,#0]
00010c  6083              STR      r3,[r0,#8]
;;;171    
;;;172    /*--------------------------- DMA Channelx CMAR Configuration ----------------*/
;;;173      /* Write to DMA Channelx CMAR */
;;;174      DMA_Channelx->CMAR = DMA_InitStruct->DMA_MemoryBaseAddr;
00010e  684b              LDR      r3,[r1,#4]
000110  60c3              STR      r3,[r0,#0xc]
;;;175    }
000112  bd10              POP      {r4,pc}
                          ENDP

                  DMA_StructInit PROC
;;;188      /* Initialize the DMA_PeripheralBaseAddr member */
;;;189      DMA_InitStruct->DMA_PeripheralBaseAddr = 0;
000114  2100              MOVS     r1,#0
000116  6001              STR      r1,[r0,#0]
;;;190    
;;;191      /* Initialize the DMA_MemoryBaseAddr member */
;;;192      DMA_InitStruct->DMA_MemoryBaseAddr = 0;
000118  6041              STR      r1,[r0,#4]
;;;193    
;;;194      /* Initialize the DMA_DIR member */
;;;195      DMA_InitStruct->DMA_DIR = DMA_DIR_PeripheralSRC;
00011a  6081              STR      r1,[r0,#8]
;;;196    
;;;197      /* Initialize the DMA_BufferSize member */
;;;198      DMA_InitStruct->DMA_BufferSize = 0;
00011c  60c1              STR      r1,[r0,#0xc]
;;;199    
;;;200      /* Initialize the DMA_PeripheralInc member */
;;;201      DMA_InitStruct->DMA_PeripheralInc = DMA_PeripheralInc_Disable;
00011e  6101              STR      r1,[r0,#0x10]
;;;202    
;;;203      /* Initialize the DMA_MemoryInc member */
;;;204      DMA_InitStruct->DMA_MemoryInc = DMA_MemoryInc_Disable;
000120  6141              STR      r1,[r0,#0x14]
;;;205    
;;;206      /* Initialize the DMA_PeripheralDataSize member */
;;;207      DMA_InitStruct->DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
000122  6181              STR      r1,[r0,#0x18]
;;;208    
;;;209      /* Initialize the DMA_MemoryDataSize member */
;;;210      DMA_InitStruct->DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
000124  61c1              STR      r1,[r0,#0x1c]
;;;211    
;;;212      /* Initialize the DMA_Mode member */
;;;213      DMA_InitStruct->DMA_Mode = DMA_Mode_Normal;
000126  6201              STR      r1,[r0,#0x20]
;;;214    
;;;215      /* Initialize the DMA_Priority member */
;;;216      DMA_InitStruct->DMA_Priority = DMA_Priority_Low;
000128  6241              STR      r1,[r0,#0x24]
;;;217    
;;;218      /* Initialize the DMA_M2M member */
;;;219      DMA_InitStruct->DMA_M2M = DMA_M2M_Disable;
00012a  6281              STR      r1,[r0,#0x28]
;;;220    }
00012c  4770              BX       lr
                          ENDP

                  DMA_ITConfig PROC
;;;268    
;;;269      if (NewState != DISABLE)
00012e  b11a              CBZ      r2,|L1.312|
;;;270      {
;;;271        /* Enable the selected DMA interrupts */
;;;272        DMA_Channelx->CCR |= DMA_IT;
000130  6803              LDR      r3,[r0,#0]
000132  430b              ORRS     r3,r3,r1
000134  6003              STR      r3,[r0,#0]
000136  e002              B        |L1.318|
                  |L1.312|
;;;273      }
;;;274      else
;;;275      {
;;;276        /* Disable the selected DMA interrupts */
;;;277        DMA_Channelx->CCR &= ~DMA_IT;
000138  6803              LDR      r3,[r0,#0]
00013a  438b              BICS     r3,r3,r1
00013c  6003              STR      r3,[r0,#0]
                  |L1.318|
;;;278      }
;;;279    }
00013e  4770              BX       lr
                          ENDP

                  DMA_GetCurrDataCounter PROC
;;;291    u16 DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMA_Channelx)
;;;292    {
000140  4601              MOV      r1,r0
;;;293      /* Return the current memory address value for Channelx */
;;;294      return ((u16)(DMA_Channelx->CNDTR));
000142  6848              LDR      r0,[r1,#4]
000144  b280              UXTH     r0,r0
;;;295    }
000146  4770              BX       lr
                          ENDP

                  DMA_GetFlagStatus PROC
;;;333    FlagStatus DMA_GetFlagStatus(u32 DMA_FLAG)
;;;334    {
000148  4601              MOV      r1,r0
;;;335      FlagStatus bitstatus = RESET;
00014a  2000              MOVS     r0,#0
;;;336    
;;;337      /* Check the parameters */
;;;338      assert(IS_DMA_GET_FLAG(DMA_FLAG));
;;;339    
;;;340      /* Check the status of the specified DMA flag */
;;;341      if ((DMA->ISR & DMA_FLAG) != (u32)RESET)
00014c  4a0d              LDR      r2,|L1.388|
00014e  3a44              SUBS     r2,r2,#0x44
000150  6812              LDR      r2,[r2,#0]
000152  420a              TST      r2,r1
000154  d001              BEQ      |L1.346|
;;;342      {
;;;343        /* DMA_FLAG is set */
;;;344        bitstatus = SET;
000156  2001              MOVS     r0,#1
000158  e000              B        |L1.348|
                  |L1.346|
;;;345      }
;;;346      else
;;;347      {
;;;348        /* DMA_FLAG is reset */
;;;349        bitstatus = RESET;
00015a  2000              MOVS     r0,#0
                  |L1.348|
;;;350      }
;;;351      /* Return the DMA_FLAG status */
;;;352      return  bitstatus;
;;;353    }
00015c  4770              BX       lr
                          ENDP

                  DMA_ClearFlag PROC
;;;396      /* Clear the selected DMA flags */
;;;397      DMA->IFCR = DMA_FLAG;
00015e  4909              LDR      r1,|L1.388|
000160  3944              SUBS     r1,r1,#0x44
000162  6048              STR      r0,[r1,#4]
;;;398    }
000164  4770              BX       lr
                          ENDP

                  DMA_GetITStatus PROC
;;;437    ITStatus DMA_GetITStatus(u32 DMA_IT)
;;;438    {
000166  4601              MOV      r1,r0
;;;439      ITStatus bitstatus = RESET;
000168  2000              MOVS     r0,#0
;;;440    
;;;441      /* Check the parameters */
;;;442      assert(IS_DMA_GET_IT(DMA_IT));
;;;443    
;;;444      /* Check the status of the specified DMA interrupt */
;;;445      if ((DMA->ISR & DMA_IT) != (u32)RESET)
00016a  4a06              LDR      r2,|L1.388|
00016c  3a44              SUBS     r2,r2,#0x44
00016e  6812              LDR      r2,[r2,#0]
000170  420a              TST      r2,r1
000172  d001              BEQ      |L1.376|
;;;446      {
;;;447        /* DMA_IT is set */
;;;448        bitstatus = SET;
000174  2001              MOVS     r0,#1
000176  e000              B        |L1.378|
                  |L1.376|
;;;449      }
;;;450      else
;;;451      {
;;;452        /* DMA_IT is reset */
;;;453        bitstatus = RESET;
000178  2000              MOVS     r0,#0
                  |L1.378|
;;;454      }
;;;455      /* Return the DMA_IT status */
;;;456      return  bitstatus;
;;;457    }
00017a  4770              BX       lr
                          ENDP

                  DMA_ClearITPendingBit PROC
;;;500      /* Clear the selected DMA interrupt pending bits */
;;;501      DMA->IFCR = DMA_IT;
00017c  4901              LDR      r1,|L1.388|
00017e  3944              SUBS     r1,r1,#0x44
000180  6048              STR      r0,[r1,#4]
;;;502    }
000182  4770              BX       lr
                          ENDP

                  |L1.388|
000184  40020044          DCD      0x40020044
                  |L1.392|
000188  bffdfff8          DCD      0xbffdfff8

⌨️ 快捷键说明

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