打印
[STM32F1]

STM32F103使用cubemx配置ADC和DMA导致delay函数无法使用

[复制链接]
楼主: gshhkkk
手机看帖
扫描二维码
随时随地手机跟帖
21
yorkbarney| | 2024-4-8 12:37 | 只看该作者 回帖奖励 |倒序浏览
在调用delay函数时没有其他任务或中断正在运行,这可能会干扰delay函数的正常工作。

使用特权

评论回复
22
EmmaTT| | 2024-4-8 14:32 | 只看该作者
关掉DMA试试

使用特权

评论回复
23
wilhelmina2| | 2024-4-9 17:13 | 只看该作者
因为在配置ADC和DMA时,通常会用到DMA的中断功能,而在中断服务函数中直接调用delay函数可能会导致系统挂起,因为中断服务函数是在主循环之外的,它会打断主循环的执行,如果在中断服务函数中调用delay函数,那么主循环就会被长时间挂起,从而导致系统无法正常响应其他事件。

使用特权

评论回复
24
tifmill| | 2024-4-9 19:25 | 只看该作者
在STM32中,delay函数通常依赖于时间管理器(SysTick)来实现。

使用特权

评论回复
25
chenqianqian| | 2024-4-9 20:10 | 只看该作者
应该是配置冲突了吧

使用特权

评论回复
26
mickit| | 2024-4-10 13:39 | 只看该作者
不正确的DMA配置可能会导致内存访问错误,这可能会影响delay函数或其他代码的执行。

使用特权

评论回复
27
macpherson| | 2024-4-12 00:05 | 只看该作者
如果中断优先级设置不当,可能会导致delay函数(通常基于定时器)无法正常工作

使用特权

评论回复
28
mattlincoln| | 2024-4-12 04:12 | 只看该作者
考虑使用非阻塞式的延时设计,或者在软件架构中引入操作系统级别的任务调度。

使用特权

评论回复
29
claretttt| | 2024-4-12 13:42 | 只看该作者
DMA中断优先级低于SysTick中断优先级。在STM32中,SysTick中断优先级通常是最高的,以保证系统时钟的稳定性。

使用特权

评论回复
30
eefas| | 2024-4-14 19:49 | 只看该作者
delay函数的调用没有被错误地放在了DMA传输或ADC转换的中断服务例程中。

使用特权

评论回复
31
cashrwood| | 2024-4-15 14:15 | 只看该作者
可以使用基于定时器的延时实现,而不是基于循环的实现。这样可以避免占用CPU资源

使用特权

评论回复
32
primojones| | 2024-4-15 17:59 | 只看该作者
如果在HAL库中使用DMA连续转换模式,由于DMA中断处理时间过长,可能会导致程序频繁进入DMA中断,从而影响到其他任务的执行,包括延时函数

使用特权

评论回复
33
modesty3jonah| | 2024-4-15 21:54 | 只看该作者
HAL库提供了一个延时函数HAL_Delay(),可以替代原来的delay()函数。

使用特权

评论回复
34
理想阳| | 2024-4-16 06:11 | 只看该作者
可能会继续占用资源并干扰其他功能,包括延迟功能。

使用特权

评论回复
35
sesefadou| | 2024-4-16 11:40 | 只看该作者
在初始化SysTick定时器时,可以先禁用SysTick中断,直到DMA初始化和操作完成后再重新启用。

使用特权

评论回复
36
yorkbarney| | 2024-4-16 16:50 | 只看该作者
如果DMA或ADC的中断优先级设置得过高,可能会导致delay函数中的等待循环(通常基于定时器中断)被打断,从而使得delay函数无法正常工作。

使用特权

评论回复
37
alvpeg| | 2024-4-16 21:41 | 只看该作者
在DMA传输完成中断中处理数据时,如果数据处理占用了过多的时间,也会影响到延时函数的执行。

使用特权

评论回复
38
olivem55arlowe| | 2024-4-17 12:34 | 只看该作者
如果在HAL库中使用DMA连续转换模式,由于DMA中断处理时间过长,可能会导致程序频繁进入DMA中断,从而影响到其他任务的执行,包括延时函数

使用特权

评论回复
39
V853| | 2024-4-18 07:06 | 只看该作者
如果中断优先级设置不正确,延迟函数(通常基于定时器)可能无法正常工作

使用特权

评论回复
40
yeates333| | 2024-4-19 17:03 | 只看该作者
使用HAL_Delay()函数              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则