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