STM32 ADC注入通道的使用
2016-05-13 22:50
344 查看
通过ADC注入通道的使用,可以实时获取4个GPIO输入的AD采样值,下面看具体的代码。
芯片:STM32F205VCT6
STEP1:初始化GPIO
STEP2:初始化ADC
STEP3:使用
芯片:STM32F205VCT6
STEP1:初始化GPIO
void GPIO_Configuration ( void ) { //GPIO -PC0 PC1 PC2 PC3 -ADC3 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init ( GPIOC, &GPIO_InitStructure ); }
STEP2:初始化ADC
void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE); //ADC Common Init ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles; ADC_CommonInit(&ADC_CommonInitStructure); // ADC3 Init ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC3, &ADC_InitStructure); ADC_TempSensorVrefintCmd(ENABLE); ADC_RegularChannelConfig(ADC3, ADC_Channel_Vrefint, 1, ADC_SampleTime_144Cycles); ADC_AutoInjectedConvCmd(ADC3, ENABLE); ADC_ExternalTrigInjectedConvEdgeConfig(ADC3, ADC_ExternalTrigInjecConvEdge_None); ADC_InjectedSequencerLengthConfig(ADC3, 4); ADC_InjectedChannelConfig(ADC3, ADC_Channel_10, 3,ADC_SampleTime_144Cycles); ADC_InjectedChannelConfig(ADC3, ADC_Channel_11, 4,ADC_SampleTime_144Cycles); ADC_InjectedChannelConfig(ADC3, ADC_Channel_12, 2,ADC_SampleTime_144Cycles); ADC_InjectedChannelConfig(ADC3, ADC_Channel_13, 1,ADC_SampleTime_144Cycles); ADC_SetInjectedOffset(ADC3, ADC_InjectedChannel_1, 2000);//采样后的值减去阈值,可以省去后续的处理 ADC_SetInjectedOffset(ADC3, ADC_InjectedChannel_2, 2000); // Enable ADC3 ADC_Cmd(ADC3, ENABLE); ADC_SoftwareStartConv(ADC3); }
STEP3:使用
value1 = ADC_GetInjectedConversionValue(ADC3, ADC_InjectedChannel_1); value2 = ADC_GetInjectedConversionValue(ADC3, ADC_InjectedChannel_2); value3 = ADC_GetInjectedConversionValue(ADC3, ADC_InjectedChannel_3); value4 = ADC_GetInjectedConversionValue(ADC3, ADC_InjectedChannel_4);
相关文章推荐
- 阿里巴巴发布第一颗自研芯片,全球最强 AI 芯片含光 800
- dell笔记本维修-芯片级-技巧
- STM32 IO口双向问题
- 使用CMake来构建STM32工程
- 基因芯片的相关概念
- AMD更新SeaMicro云服务器 搭载新芯片
- SLC和MLC闪存芯片的区别
- IBM研发新型芯片技术:无需持续供电
- 摩尔定理
- BCM芯片数据包转发基本流程--ingress处理之vlan处理
- 双核手机好还是四核手机好!
- Keil STM32工程环境搭建
- stm32之RTC
- STM32串口操作相关事项
- 【eBox生态圈】连载一:简化STM32的编程之eBox生态圈
- 全志A10 平板主控芯片
- BOXCHIP E200 芯片,全志E200,高清MP5芯片,E200主芯片,1080P视频方...
- STM32 SPI工作在主模式时用DMA方式接收数据
- STM32 配置定时器让引脚输出PWM波形
- stm32笔记:Systick系统滴答定时器