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

📄 stm32f10x_adc.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;690      }
;;;691    }
000046  bd70              POP      {r4-r6,pc}
                  |L15.72|
000048  2a0d              CMP      r2,#0xd               ;660
00004a  d209              BCS      |L15.96|
00004c  6b04              LDR      r4,[r0,#0x30]         ;663
00004e  1fd2              SUBS     r2,r2,#7              ;665
000050  eb02eb02          ADD      r2,r2,r2,LSL #2       ;665
000054  4093              LSLS     r3,r3,r2              ;665
000056  439c              BICS     r4,r4,r3              ;667
000058  4091              LSLS     r1,r1,r2              ;669
00005a  430c              ORRS     r4,r4,r1              ;671
00005c  6304              STR      r4,[r0,#0x30]         ;673
00005e  bd70              POP      {r4-r6,pc}
                  |L15.96|
000060  6ac4              LDR      r4,[r0,#0x2c]         ;679
000062  3a0d              SUBS     r2,r2,#0xd            ;681
000064  eb02eb02          ADD      r2,r2,r2,LSL #2       ;681
000068  4093              LSLS     r3,r3,r2              ;681
00006a  439c              BICS     r4,r4,r3              ;683
00006c  4091              LSLS     r1,r1,r2              ;685
00006e  430c              ORRS     r4,r4,r1              ;687
000070  62c4              STR      r4,[r0,#0x2c]         ;689
000072  bd70              POP      {r4-r6,pc}
;;;692    
                          ENDP


                          AREA ||i.ADC_ExternalTrigConvCmd||, CODE, READONLY, ALIGN=1

                  ADC_ExternalTrigConvCmd PROC
;;;708    
;;;709      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;710      {
;;;711        /* Enable the selected ADC conversion on external event */
;;;712        ADCx->CR2 |= CR2_EXTTRIG_Set;
000002  6881              LDR      r1,[r0,#8]
000004  d002              BEQ      |L16.12|
000006  f441f441          ORR      r1,r1,#0x100000
00000a  e001              B        |L16.16|
                  |L16.12|
;;;713      }
;;;714      else
;;;715      {
;;;716        /* Disable the selected ADC conversion on external event */
;;;717        ADCx->CR2 &= CR2_EXTTRIG_Reset;
00000c  f421f421          BIC      r1,r1,#0x100000
                  |L16.16|
000010  6081              STR      r1,[r0,#8]            ;712
;;;718      }
;;;719    }
000012  4770              BX       lr
;;;720    
                          ENDP


                          AREA ||i.ADC_GetConversionValue||, CODE, READONLY, ALIGN=1

                  ADC_GetConversionValue PROC
;;;733      /* Return the selected ADC conversion value */
;;;734      return (u16) ADCx->DR;
000000  6cc0              LDR      r0,[r0,#0x4c]
000002  b280              UXTH     r0,r0
;;;735    }
000004  4770              BX       lr
;;;736    
                          ENDP


                          AREA ||i.ADC_GetDualModeConversionValue||, CODE, READONLY, ALIGN=2

                  ADC_GetDualModeConversionValue PROC
;;;743    u32 ADC_GetDualModeConversionValue(void)
;;;744    {
000000  4801              LDR      r0,|L18.8|
;;;745      /* Return the dual mode conversion value */
;;;746      return (*(vu32 *) DR_ADDRESS);
000002  6800              LDR      r0,[r0,#0]
;;;747    }
000004  4770              BX       lr
;;;748    
                          ENDP

000006  0000              DCW      0x0000
                  |L18.8|
000008  4001244c          DCD      0x4001244c

                          AREA ||i.ADC_AutoInjectedConvCmd||, CODE, READONLY, ALIGN=1

                  ADC_AutoInjectedConvCmd PROC
;;;765    
;;;766      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;767      {
;;;768        /* Enable the selected ADC automatic injected group conversion */
;;;769        ADCx->CR1 |= CR1_JAUTO_Set;
000002  6841              LDR      r1,[r0,#4]
000004  d002              BEQ      |L19.12|
000006  f441f441          ORR      r1,r1,#0x400
00000a  e001              B        |L19.16|
                  |L19.12|
;;;770      }
;;;771      else
;;;772      {
;;;773        /* Disable the selected ADC automatic injected group conversion */
;;;774        ADCx->CR1 &= CR1_JAUTO_Reset;
00000c  f421f421          BIC      r1,r1,#0x400
                  |L19.16|
000010  6041              STR      r1,[r0,#4]            ;769
;;;775      }
;;;776    }
000012  4770              BX       lr
;;;777    
                          ENDP


                          AREA ||i.ADC_InjectedDiscModeCmd||, CODE, READONLY, ALIGN=1

                  ADC_InjectedDiscModeCmd PROC
;;;794    
;;;795      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;796      {
;;;797        /* Enable the selected ADC injected discontinuous mode */
;;;798        ADCx->CR1 |= CR1_JDISCEN_Set;
000002  6841              LDR      r1,[r0,#4]
000004  d002              BEQ      |L20.12|
000006  f441f441          ORR      r1,r1,#0x1000
00000a  e001              B        |L20.16|
                  |L20.12|
;;;799      }
;;;800      else
;;;801      {
;;;802        /* Disable the selected ADC injected discontinuous mode */
;;;803        ADCx->CR1 &= CR1_JDISCEN_Reset;
00000c  f421f421          BIC      r1,r1,#0x1000
                  |L20.16|
000010  6041              STR      r1,[r0,#4]            ;798
;;;804      }
;;;805    }
000012  4770              BX       lr
;;;806    
                          ENDP


                          AREA ||i.ADC_ExternalTrigInjectedConvConfig||, CODE, READONLY, ALIGN=1

                  ADC_ExternalTrigInjectedConvConfig PROC
;;;853      /* Get the old register value */
;;;854      tmpreg = ADCx->CR2;
000000  6882              LDR      r2,[r0,#8]
;;;855      /* Clear the old external event selection for injected group */
;;;856      tmpreg &= CR2_JEXTSEL_Reset;
000002  f422f422          BIC      r2,r2,#0x7000
;;;857      /* Set the external event selection for injected group */
;;;858      tmpreg |= ADC_ExternalTrigInjecConv;
000006  430a              ORRS     r2,r2,r1
;;;859      /* Store the new register value */
;;;860      ADCx->CR2 = tmpreg;
000008  6082              STR      r2,[r0,#8]
;;;861    }
00000a  4770              BX       lr
;;;862    
                          ENDP


                          AREA ||i.ADC_ExternalTrigInjectedConvCmd||, CODE, READONLY, ALIGN=1

                  ADC_ExternalTrigInjectedConvCmd PROC
;;;879    
;;;880      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;881      {
;;;882        /* Enable the selected ADC external event selection for injected group */
;;;883        ADCx->CR2 |= CR2_JEXTTRIG_Set;
000002  6881              LDR      r1,[r0,#8]
000004  d002              BEQ      |L22.12|
000006  f441f441          ORR      r1,r1,#0x8000
00000a  e001              B        |L22.16|
                  |L22.12|
;;;884      }
;;;885      else
;;;886      {
;;;887        /* Disable the selected ADC external event selection for injected group */
;;;888        ADCx->CR2 &= CR2_JEXTTRIG_Reset;
00000c  f421f421          BIC      r1,r1,#0x8000
                  |L22.16|
000010  6081              STR      r1,[r0,#8]            ;883
;;;889      }
;;;890    }
000012  4770              BX       lr
;;;891    
                          ENDP


                          AREA ||i.ADC_SoftwareStartInjectedConvCmd||, CODE, READONLY, ALIGN=1

                  ADC_SoftwareStartInjectedConvCmd PROC
;;;908    
;;;909      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;910      {
;;;911        /* Enable the selected ADC conversion for injected group on external event and start the selected
;;;912           ADC injected conversion */
;;;913        ADCx->CR2 |= CR2_JEXTTRIG_JSWSTART_Set;
000002  6881              LDR      r1,[r0,#8]
000004  d002              BEQ      |L23.12|
000006  f441f441          ORR      r1,r1,#0x208000
00000a  e001              B        |L23.16|
                  |L23.12|
;;;914      }
;;;915      else
;;;916      {
;;;917        /* Disable the selected ADC conversion on external event for injected group and stop the selected
;;;918           ADC injected conversion */
;;;919        ADCx->CR2 &= CR2_JEXTTRIG_JSWSTART_Reset;
00000c  f421f421          BIC      r1,r1,#0x208000
                  |L23.16|
000010  6081              STR      r1,[r0,#8]            ;913
;;;920      }
;;;921    }
000012  4770              BX       lr
;;;922    
                          ENDP


                          AREA ||i.ADC_GetSoftwareStartInjectedConvCmdStatus||, CODE, READONLY, ALIGN=1

                  ADC_GetSoftwareStartInjectedConvCmdStatus PROC
;;;930    FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx)
;;;931    {
000000  4601              MOV      r1,r0
;;;932      FlagStatus bitstatus = RESET;
;;;933    
;;;934      /* Check the parameters */
;;;935      assert_param(IS_ADC_ALL_PERIPH(ADCx));
;;;936    
;;;937      /* Check the status of JSWSTART bit */
;;;938      if ((ADCx->CR2 & CR2_JSWSTART_Set) != (u32)RESET)
000002  6889              LDR      r1,[r1,#8]
000004  2000              MOVS     r0,#0                 ;932
000006  0289              LSLS     r1,r1,#10
000008  d500              BPL      |L24.12|
;;;939      {
;;;940        /* JSWSTART bit is set */
;;;941        bitstatus = SET;
00000a  2001              MOVS     r0,#1
                  |L24.12|
;;;942      }
;;;943      else
;;;944      {
;;;945        /* JSWSTART bit is reset */
;;;946        bitstatus = RESET;
;;;947      }
;;;948    
;;;949      /* Return the JSWSTART bit status */
;;;950      return  bitstatus;
;;;951    }
00000c  4770              BX       lr
;;;952    
                          ENDP


                          AREA ||i.ADC_InjectedChannelConfig||, CODE, READONLY, ALIGN=1

                  ADC_InjectedChannelConfig PROC
;;;994    void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel, u8 Rank, u8 ADC_SampleTime)
;;;995    {
000000  b570              PUSH     {r4-r6,lr}
000002  2607              MOVS     r6,#7
;;;996      u32 tmpreg1 = 0, tmpreg2 = 0, tmpreg3 = 0;
;;;997    
;;;998      /* Check the parameters */
;;;999      assert_param(IS_ADC_ALL_PERIPH(ADCx));
;;;1000     assert_param(IS_ADC_CHANNEL(ADC_Channel));
;;;1001     assert_param(IS_ADC_INJECTED_RANK(Rank));
;;;1002     assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime));
;;;1003   
;;;1004     /* if ADC_Channel_10 ... ADC_Channel_17 is selected */
;;;1005     if (ADC_Channel > ADC_Channel_9)
000004  2909              CMP      r1,#9
000006  d90a              BLS      |L25.30|
;;;1006     {
;;;1007       /* Get the old register value */
;;;1008       tmpreg1 = ADCx->SMPR1;
000008  68c5              LDR      r5,[r0,#0xc]
;;;1009       /* Calculate the mask to clear */
;;;1010       tmpreg2 = SMPR1_SMP_Set << (3*(ADC_Channel - 10));
00000a  f1a1f1a1          SUB      r4,r1,#0xa
00000e  eb04eb04          ADD      r4,r4,r4,LSL #1
000012  40a6              LSLS     r6,r6,r4
;;;1011       /* Clear the old discontinuous mode channel count */
;;;1012       tmpreg1 &= ~tmpreg2;
000014  43b5              BICS     r5,r5,r6
;;;1013       /* Calculate the mask to set */
;;;1014       tmpreg2 = (u32)ADC_SampleTime << (3*(ADC_Channel - 10));
000016  40a3              LSLS     r3,r3,r4
;;;1015       /* Set the discontinuous mode channel count */
;;;1016       tmpreg1 |= tmpreg2;
000018  431d              ORRS     r5,r5,r3
;;;1017       /* Store the new register value */
;;;1018       ADCx->SMPR1 = tmpreg1;
00001a  60c5              STR      r5,[r0,#0xc]
00001c  e007              B        |L25.46|
                  |L25.30|
;;;1019     }
;;;1020     else /* ADC_Channel include in ADC_Channel_[0..9] */
;;;1021     {
;;;1022       /* Get the old register value */
;;;1023       tmpreg1 = ADCx->SMPR2;
00001e  6905              LDR      r5,[r0,#0x10]

⌨️ 快捷键说明

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