你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
philing-1270758 发表于 2016-10-23 17:44 3 l- d# N8 M( ]1 H, K2 z( ~) _HAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,2)这个2不是指通道吧?网上有的人说是指次数,我见到有人这 ...
philing-1270758 发表于 2016-10-23 17:44 9 z/ q- z% a- T( K' ^( v, `5 v$ KHAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,2)这个2不是指通道吧?网上有的人说是指次数,我见到有人这 ...
对啊,我也看网上有人说是次数,你看的是微雪课堂这么写的吧?我是在这里看的
微雪课堂的那个我大部分我照着做了,能得出结果,但结果不对,而且微雪把次数设成100次之后,我后来给改成200次、500次,结果就不对了,不知道为什么,是不是这个100理解的有问题?
/* ADC1 DMA Init */
/* ADC1 Init */7 }: ]. G' Q) B0 [2 b6 X
hdma_adc1.Instance = DMA1_Channel1;: J% X3 t; G6 F1 p7 g9 S8 O- q
hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;+ P7 l" r l5 d4 R
hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;3 g) p5 v i* H- @( Z I
hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;3 K0 G. f, p2 ?7 x' u2 X3 b6 I
hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;0 J& j; @! W0 f+ V3 A
hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; n( x o; U1 Y9 Z. a( i
hdma_adc1.Init.Mode = DMA_NORMAL;
hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH;1 r9 J5 ^& H6 e. x) a, x
if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);3 B6 M' Q7 K! V; d" [- f$ B
}
__HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);4 s, b$ ?$ Z! p' t/ P+ ^
2.存储的空间可以定义成uint32_t,word的数量可以要采集次数的一半:/ M/ o. X% x$ ~0 w* G( G) A0 {
uint32_t uhADCxConvertedValue[131];) _, H# d7 h) A( ~/ p. R/ I! c
3.启动DMA的时候,传入缓冲区的地址按(uint32_t *)传入。* c& L u2 ?; D4 {
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&uhADCxConvertedValue, 262);
4.这样进行了262次采样后,存放在uhADCxConvertedValue区域内的数据就是按16bit连续放过去的。! {/ q- F# i4 i8 c1 I+ g
测亲的结果分享的。
https://www.stmcu.org.cn/module/forum/thread-619778-1-1.html' C' b5 _; ?9 T! v% D
看到还望指点一二,谢谢!