📄 stm32f10x_dma.txt
字号:
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 + -