-
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 + 关注
-
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
楼主
|
回复于 2020-03-31
沙发
要实现的功能:
对6个通道采集600个数据(每个通道采集100次),之后用HAL_ADC_STOP_DMA停止采样;延时1ms再用HAL_ADC_Start_DMA(&hadc, (uint32_t*)&sampleTable, 600) 开启ADC采样,(注:adc dma配置为DMA_NORMAL)。
-
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
楼主
|
回复于 2020-03-31
2#
HAL_ADC_Start_DMA(&hadc, (uint32_t*)&sampleTable, 600);
for(i=0; i<(ADC_Channle*DMA_Count); i+=6)
{
d0 += sampleTable[i];
d1 += sampleTable[i+1];
d2 += sampleTable[i+2];
d3 += sampleTable[i+3];
d4 += sampleTable[i+4];
d5 += sampleTable[i+5];
}
HAL_ADC_Stop_DMA(&hadc);
HAL_Delay(10);
for(i=0; i<(ADC_Channle*DMA_Count); i+=6)
{
d6 += sampleTable[i];
d7 += sampleTable[i+1];
d8 += sampleTable[i+2];
d9 += sampleTable[i+3];
d10 += sampleTable[i+4];
d11 += sampleTable[i+5];
}
d1 = d1/600;
HAL_ADC_Stop_DMA(&hadc);
结果d0~d5正确,和外面的对应的电压相等
d6~d11不对,和外面给的电压不等,
帮我指导下哪儿有问题
-
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
楼主
|
回复于 2020-03-31
3#
void MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMA1_CLK_ENABLE();
/* DMA interrupt init */
/* DMA1_Channel1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
/* DMA1_Channel2_3_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel2_3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel2_3_IRQn);
}
-
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖