你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
数码小叶 发表于 2018-11-1 21:12 是不是开启DMA中断了,HAL_ADC_Start_DMA的Length参数才是1,而你配置的循环模式,不阻塞才不正常 ...
songshiqun2010 发表于 2018-11-1 22:31 将ADC DMA中断的NVIC使能代码屏蔽即可解决。。。 /** * Enable DMA controller clock
电子星辰 发表于 2018-11-2 10:42 Circular模式就是开启一次,DMA会自动循环接收数据,再把函数放在主循环中就不行了,得把函数放在主循环之 ...
Dandjinh 发表于 2018-11-2 11:48 把ADC的总中断调到比ADC-DMA的中断优先级高试试。 我也是循环加中断,也没问题啊。 况且为啥长度是1啊。长 ...
/**
* Enable DMA controller clock
*/
static void MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMA2_CLK_ENABLE();
/* DMA interrupt init */
/* DMA2_Stream0_IRQn interrupt configuration */
//HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);
//HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
}
评分
查看全部评分
点评
评分
查看全部评分
我的DMA存储变量adcvalue不是数组,所以我设置的1,DMA中断好像使用了DMA就开启了,没法关闭,我的cubemx设置里面是灰色的,无法更改
非常感谢,我按你的方法试了,是可以的,但是我不明白我又没有写中断处理函数,它执行到哪里去了然后停住了。如果我要用Circular模式的话,应该怎么处理?
评分
查看全部评分
把ADC的总中断调到比ADC-DMA的中断优先级高试试。
我也是循环加中断,也没问题啊。
况且为啥长度是1啊。长度代表的是数据个数,也就是缓冲区大小。
你设置为1,我猜就是不断进入中断,导致看起来像堵塞一样。
评分
查看全部评分
我的直接用circular模式就不行,必须把ADC DMA中断的NVIC使能代码屏蔽掉才行
调了优先级也不行;我的缓冲区大小就是1,就是一个uint32_t 的变量,所以设的1;我的要把ADC DMA中断的NVIC使能代码屏蔽掉才行