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

📄 stm32f10x_dac.lst

📁 stm32+ucos-ii
💻 LST
📖 第 1 页 / 共 4 页
字号:
   \                     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 + -