完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
不管怎么读 都是通道10的值 ,麻烦大牛们帮忙看看函数
ADC_HandleTypeDef hadc1; void MX_ADC1_Init(void) { ADC_ChannelConfTypeDef sConfig = {0}; hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.ScanConvMode = ADC_SCAN_SEQ_FIXED; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.LowPowerAutoWait = DISABLE; hadc1.Init.LowPowerAutoPowerOff = DISABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.NbrOfConversion = 2; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc1.Init.DMAContinuousRequests = DISABLE; hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED; hadc1.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_12CYCLES_5; hadc1.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_12CYCLES_5; hadc1.Init.OversamplingMode = ENABLE; hadc1.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256; // 16bit hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4; hadc1.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER; hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH; if (HAL_ADC_Init( hadc1) != HAL_OK) { Error_Handler(); } sConfig.Channel = ADC_CHANNEL_10; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; if (HAL_ADC_ConfigChannel( hadc1, sConfig) != HAL_OK) { Error_Handler(); } sConfig.Channel = ADC_CHANNEL_15; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; if (HAL_ADC_ConfigChannel( hadc1, sConfig) != HAL_OK) { Error_Handler(); } } uint16_t ADC_Read(uint32_t Channel) { uint32_t value; ADC_ChannelConfTypeDef sConfig; sConfig.Channel = Channel; sConfig.SamplingTime = ADC_SAMPLINGTIME_COMMON_1; /* 通道 */ if (HAL_ADC_ConfigChannel( hadc1, sConfig) != HAL_OK) { Error_Handler(); } HAL_ADC_Start( hadc1); HAL_ADC_PollForConversion( hadc1, HAL_MAX_DELAY); value = HAL_ADC_GetValue( hadc1); HAL_ADC_Stop( hadc1); return value; } |
|
相关推荐
1个回答
|
|
你现在2个通道,基于扫描模式查询接收,很容易只读到1个数据。你要么使用DMA或中断方式,DMA方式最佳。
你如果现在的确需要逐个通道地查询获取ADC值。 你先在CubeMx仅选择1个通道比方通道15完成配置,生成初始化工程。 然后,基于cubeMx创建的工程额外加点代码,加个基于单个通道的初始化代码。 void User_Channel_Config(uint32_t ChannelNum ) { ADC_ChannelConfTypeDef sConfig = {0}; sConfig.Channel = ChannelNum; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; if (HAL_ADC_ConfigChannel( hadc1, sConfig) != HAL_OK) { Error_Handler(); } } 具体操作时,需要用哪个通道就启用哪个通道。比方这样: while (1) { HAL_Delay(500); Channel_Config(ADC_CHANNEL_15 ); HAL_ADC_Start( hadc1); HAL_ADC_PollForConversion( hadc1,0xffff); Adc_ch15 = HAL_ADC_GetValue( hadc1); HAL_ADC_Stop( hadc1); Channel_Config( ADC_CHANNEL_10 ); HAL_ADC_Start( hadc1); HAL_ADC_PollForConversion( hadc1,0xffff); Adc_ch10 = HAL_ADC_GetValue( hadc1); HAL_ADC_Stop( hadc1); } 这样操作是可以的,我刚才验证测试过。你可以参考下。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1688 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1590 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
706 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1632 浏览 2 评论
1893浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
680浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
539浏览 3评论
560浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
527浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 12:39 , Processed in 0.769629 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号