📄 stm32f10x_dac.lst
字号:
\ DAC_DualSoftwareTriggerCmd:
\ 00000000 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000002 0028 CMP R0,#+0
\ 00000004 06D0 BEQ.N ??DAC_DualSoftwareTriggerCmd_0
288 {
289 /* Enable software trigger for both DAC channels */
290 DAC->SWTRIGR |= DUAL_SWTRIG_SET ;
\ 00000006 .... LDR.N R1,??DataTable9_1 ;; 0x40007404
\ 00000008 0968 LDR R1,[R1, #+0]
\ 0000000A 51F00301 ORRS R1,R1,#0x3
\ 0000000E .... LDR.N R2,??DataTable9_1 ;; 0x40007404
\ 00000010 1160 STR R1,[R2, #+0]
\ 00000012 05E0 B.N ??DAC_DualSoftwareTriggerCmd_1
291 }
292 else
293 {
294 /* Disable software trigger for both DAC channels */
295 DAC->SWTRIGR &= DUAL_SWTRIG_RESET;
\ ??DAC_DualSoftwareTriggerCmd_0:
\ 00000014 .... LDR.N R1,??DataTable9_1 ;; 0x40007404
\ 00000016 0968 LDR R1,[R1, #+0]
\ 00000018 8908 LSRS R1,R1,#+2
\ 0000001A 8900 LSLS R1,R1,#+2
\ 0000001C .... LDR.N R2,??DataTable9_1 ;; 0x40007404
\ 0000001E 1160 STR R1,[R2, #+0]
296 }
297 }
\ ??DAC_DualSoftwareTriggerCmd_1:
\ 00000020 7047 BX LR ;; return
298
299 /**
300 * @brief Enables or disables the selected DAC channel wave generation.
301 * @param DAC_Channel: the selected DAC channel.
302 * This parameter can be one of the following values:
303 * @arg DAC_Channel_1: DAC Channel1 selected
304 * @arg DAC_Channel_2: DAC Channel2 selected
305 * @param DAC_Wave: Specifies the wave type to enable or disable.
306 * This parameter can be one of the following values:
307 * @arg DAC_Wave_Noise: noise wave generation
308 * @arg DAC_Wave_Triangle: triangle wave generation
309 * @param NewState: new state of the selected DAC channel wave generation.
310 * This parameter can be: ENABLE or DISABLE.
311 * @retval None
312 */
\ In section .text, align 2, keep-with-next
313 void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState)
314 {
\ DAC_WaveGenerationCmd:
\ 00000000 10B4 PUSH {R4}
315 /* Check the parameters */
316 assert_param(IS_DAC_CHANNEL(DAC_Channel));
317 assert_param(IS_DAC_WAVE(DAC_Wave));
318 assert_param(IS_FUNCTIONAL_STATE(NewState));
319 if (NewState != DISABLE)
\ 00000002 D2B2 UXTB R2,R2 ;; ZeroExt R2,R2,#+24,#+24
\ 00000004 002A CMP R2,#+0
\ 00000006 07D0 BEQ.N ??DAC_WaveGenerationCmd_0
320 {
321 /* Enable the selected wave generation for the selected DAC channel */
322 DAC->CR |= DAC_Wave << DAC_Channel;
\ 00000008 .... LDR.N R3,??DataTable9 ;; 0x40007400
\ 0000000A 1B68 LDR R3,[R3, #+0]
\ 0000000C 11FA00F4 LSLS R4,R1,R0
\ 00000010 2343 ORRS R3,R4,R3
\ 00000012 .... LDR.N R4,??DataTable9 ;; 0x40007400
\ 00000014 2360 STR R3,[R4, #+0]
\ 00000016 06E0 B.N ??DAC_WaveGenerationCmd_1
323 }
324 else
325 {
326 /* Disable the selected wave generation for the selected DAC channel */
327 DAC->CR &= ~(DAC_Wave << DAC_Channel);
\ ??DAC_WaveGenerationCmd_0:
\ 00000018 .... LDR.N R3,??DataTable9 ;; 0x40007400
\ 0000001A 1B68 LDR R3,[R3, #+0]
\ 0000001C 11FA00F4 LSLS R4,R1,R0
\ 00000020 A343 BICS R3,R3,R4
\ 00000022 .... LDR.N R4,??DataTable9 ;; 0x40007400
\ 00000024 2360 STR R3,[R4, #+0]
328 }
329 }
\ ??DAC_WaveGenerationCmd_1:
\ 00000026 10BC POP {R4}
\ 00000028 7047 BX LR ;; return
330
331 /**
332 * @brief Set the specified data holding register value for DAC channel1.
333 * @param DAC_Align: Specifies the data alignement for DAC channel1.
334 * This parameter can be one of the following values:
335 * @arg DAC_Align_8b_R: 8bit right data alignement selected
336 * @arg DAC_Align_12b_L: 12bit left data alignement selected
337 * @arg DAC_Align_12b_R: 12bit right data alignement selected
338 * @param Data : Data to be loaded in the selected data holding register.
339 * @retval None
340 */
\ In section .text, align 2, keep-with-next
341 void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
342 {
\ DAC_SetChannel1Data:
\ 00000000 81B0 SUB SP,SP,#+4
343 __IO uint32_t tmp = 0;
\ 00000002 0022 MOVS R2,#+0
\ 00000004 0092 STR R2,[SP, #+0]
344
345 /* Check the parameters */
346 assert_param(IS_DAC_ALIGN(DAC_Align));
347 assert_param(IS_DAC_DATA(Data));
348
349 tmp = (uint32_t)DAC_BASE;
\ 00000006 .... LDR.N R2,??DataTable9 ;; 0x40007400
\ 00000008 0092 STR R2,[SP, #+0]
350 tmp += DHR12R1_OFFSET + DAC_Align;
\ 0000000A 009A LDR R2,[SP, #+0]
\ 0000000C 10F10803 ADDS R3,R0,#+8
\ 00000010 9A18 ADDS R2,R3,R2
\ 00000012 0092 STR R2,[SP, #+0]
351
352 /* Set the DAC channel1 selected data holding register */
353 *(__IO uint32_t *) tmp = Data;
\ 00000014 009A LDR R2,[SP, #+0]
\ 00000016 89B2 UXTH R1,R1 ;; ZeroExt R1,R1,#+16,#+16
\ 00000018 1160 STR R1,[R2, #+0]
354 }
\ 0000001A 01B0 ADD SP,SP,#+4
\ 0000001C 7047 BX LR ;; return
355
356 /**
357 * @brief Set the specified data holding register value for DAC channel2.
358 * @param DAC_Align: Specifies the data alignement for DAC channel2.
359 * This parameter can be one of the following values:
360 * @arg DAC_Align_8b_R: 8bit right data alignement selected
361 * @arg DAC_Align_12b_L: 12bit left data alignement selected
362 * @arg DAC_Align_12b_R: 12bit right data alignement selected
363 * @param Data : Data to be loaded in the selected data holding register.
364 * @retval None
365 */
\ In section .text, align 2, keep-with-next
366 void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data)
367 {
\ DAC_SetChannel2Data:
\ 00000000 81B0 SUB SP,SP,#+4
368 __IO uint32_t tmp = 0;
\ 00000002 0022 MOVS R2,#+0
\ 00000004 0092 STR R2,[SP, #+0]
369
370 /* Check the parameters */
371 assert_param(IS_DAC_ALIGN(DAC_Align));
372 assert_param(IS_DAC_DATA(Data));
373
374 tmp = (uint32_t)DAC_BASE;
\ 00000006 .... LDR.N R2,??DataTable9 ;; 0x40007400
\ 00000008 0092 STR R2,[SP, #+0]
375 tmp += DHR12R2_OFFSET + DAC_Align;
\ 0000000A 009A LDR R2,[SP, #+0]
\ 0000000C 10F11403 ADDS R3,R0,#+20
\ 00000010 9A18 ADDS R2,R3,R2
\ 00000012 0092 STR R2,[SP, #+0]
376
377 /* Set the DAC channel2 selected data holding register */
378 *(__IO uint32_t *)tmp = Data;
\ 00000014 009A LDR R2,[SP, #+0]
\ 00000016 89B2 UXTH R1,R1 ;; ZeroExt R1,R1,#+16,#+16
\ 00000018 1160 STR R1,[R2, #+0]
379 }
\ 0000001A 01B0 ADD SP,SP,#+4
\ 0000001C 7047 BX LR ;; return
380
381 /**
382 * @brief Set the specified data holding register value for dual channel
383 * DAC.
384 * @param DAC_Align: Specifies the data alignement for dual channel DAC.
385 * This parameter can be one of the following values:
386 * @arg DAC_Align_8b_R: 8bit right data alignement selected
387 * @arg DAC_Align_12b_L: 12bit left data alignement selected
388 * @arg DAC_Align_12b_R: 12bit right data alignement selected
389 * @param Data2: Data for DAC Channel2 to be loaded in the selected data
390 * holding register.
391 * @param Data1: Data for DAC Channel1 to be loaded in the selected data
392 * holding register.
393 * @retval None
394 */
\ In section .text, align 2, keep-with-next
395 void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1)
396 {
\ DAC_SetDualChannelData:
\ 00000000 30B4 PUSH {R4,R5}
397 uint32_t data = 0, tmp = 0;
\ 00000002 0023 MOVS R3,#+0
\ 00000004 0024 MOVS R4,#+0
398
399 /* Check the parameters */
400 assert_param(IS_DAC_ALIGN(DAC_Align));
401 assert_param(IS_DAC_DATA(Data1));
402 assert_param(IS_DAC_DATA(Data2));
403
404 /* Calculate and set dual DAC data holding register value */
405 if (DAC_Align == DAC_Align_8b_R)
\ 00000006 0828 CMP R0,#+8
\ 00000008 05D1 BNE.N ??DAC_SetDualChannelData_0
406 {
407 data = ((uint32_t)Data2 << 8) | Data1;
\ 0000000A 89B2 UXTH R1,R1 ;; ZeroExt R1,R1,#+16,#+16
\ 0000000C 92B2 UXTH R2,R2 ;; ZeroExt R2,R2,#+16,#+16
\ 0000000E 52EA0125 ORRS R5,R2,R1, LSL #+8
\ 00000012 2B00 MOVS R3,R5
\ 00000014 04E0 B.N ??DAC_SetDualChannelData_1
408 }
409 else
410 {
411 data = ((uint32_t)Data2 << 16) | Data1;
\ ??DAC_SetDualChannelData_0:
\ 00000016 89B2 UXTH R1,R1 ;; ZeroExt R1,R1,#+16,#+16
\ 00000018 92B2 UXTH R2,R2 ;; ZeroExt R2,R2,#+16,#+16
\ 0000001A 52EA0145 ORRS R5,R2,R1, LSL #+16
\ 0000001E 2B00 MOVS R3,R5
412 }
413
414 tmp = (uint32_t)DAC_BASE;
\ ??DAC_SetDualChannelData_1:
\ 00000020 .... LDR.N R5,??DataTable9 ;; 0x40007400
\ 00000022 2C00 MOVS R4,R5
415 tmp += DHR12RD_OFFSET + DAC_Align;
\ 00000024 10F12005 ADDS R5,R0,#+32
\ 00000028 2C19 ADDS R4,R5,R4
416
417 /* Set the dual DAC selected data holding register */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -