完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1.ADC设置
hadc.Instance = ADC1; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; hadc.Init.Resolution = ADC_RESOLUTION_12B; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc.Init.LowPowerAutoWait = 禁用; hadc.Init.LowPowerAutoPowerOff = 禁用; hadc.Init.ContinuousConvMode = ENABLE; hadc.Init.DiscontinuousConvMode = 禁用; hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc.Init.DMAContinuousRequests = ENABLE; hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN; 如果(HAL_ADC_Init(&hadc)!= HAL_OK) { 错误处理程序(); } 的 /** 配置要转换的选定 ADC 常规通道。 */ sConfig.Channel = ADC_CHANNEL_4; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; 如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { 错误处理程序(); } 的 /** 配置要转换的选定 ADC 常规通道。 */ sConfig.Channel = ADC_CHANNEL_5; 如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { 错误处理程序(); } 的 /** 配置要转换的选定 ADC 常规通道。 */ sConfig.Channel = ADC_CHANNEL_6; 如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { 错误处理程序(); } 的 /** 配置要转换的选定 ADC 常规通道。 */ sConfig.Channel = ADC_CHANNEL_7; 如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { 错误处理程序(); } 的 /** 配置要转换的选定 ADC 常规通道。 */ sConfig.Channel = ADC_CHANNEL_8; 如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { 错误处理程序(); } 的 /** 配置要转换的选定 ADC 常规通道。 */ sConfig.Channel = ADC_CHANNEL_9; 如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { 错误处理程序(); } //////////////////////////////////////////////// ///////////////////////////////////// 2.DMA设置 hdma_adc.Instance = DMA1_Channel1; hdma_adc.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_adc.Init.PeriphInc = DMA_PINC_DISABLE; hdma_adc.Init.MemInc = DMA_MINC_ENABLE; hdma_adc.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_adc.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_adc.Init.Mode = DMA_CIRCULAR; hdma_adc.Init.Priority = DMA_PRIORITY_VERY_HIGH; 如果(HAL_DMA_Init(&hdma_adc)!= HAL_OK) { 错误处理程序(); } 的 3. DMA 启动 无符号短 Test_adc[6]; HAL_ADC_Start_DMA(&hadc,(uint32_t *)Test_adc,6); 在 Cube IDE 中配置的 ADC DMA 的测试结果 只有第一个值被采样和输入。 请告诉我应该更正哪些内容才能正确转换。 |
|
相关推荐
1个回答
|
|
“您的 ADC 和 DMA 配置良好。请确保 MX_DMA_Init(); 在 MX_ADC_Init(); 之前被调用;
它应该像那样工作。” 在我的代码中,dma 在 adc 之前定义,但仍然从 dma adc 采样一次,我设置 dma 循环模式,我没有设置 dma 正常模式 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2674 浏览 1 评论
3224 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1797 浏览 1 评论
3627 浏览 6 评论
6010 浏览 21 评论
953浏览 4评论
1324浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
599浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1318浏览 3评论
1377浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 05:57 , Processed in 1.380482 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号