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

[复制链接]
3856|46
yorkbarney 发表于 2024-4-8 12:37 | 显示全部楼层
在调用delay函数时没有其他任务或中断正在运行,这可能会干扰delay函数的正常工作。
EmmaTT 发表于 2024-4-8 14:32 来自手机 | 显示全部楼层
关掉DMA试试
wilhelmina2 发表于 2024-4-9 17:13 | 显示全部楼层
因为在配置ADC和DMA时,通常会用到DMA的中断功能,而在中断服务函数中直接调用delay函数可能会导致系统挂起,因为中断服务函数是在主循环之外的,它会打断主循环的执行,如果在中断服务函数中调用delay函数,那么主循环就会被长时间挂起,从而导致系统无法正常响应其他事件。
tifmill 发表于 2024-4-9 19:25 | 显示全部楼层
在STM32中,delay函数通常依赖于时间管理器(SysTick)来实现。
chenqianqian 发表于 2024-4-9 20:10 来自手机 | 显示全部楼层
应该是配置冲突了吧
mickit 发表于 2024-4-10 13:39 | 显示全部楼层
不正确的DMA配置可能会导致内存访问错误,这可能会影响delay函数或其他代码的执行。
macpherson 发表于 2024-4-12 00:05 | 显示全部楼层
如果中断优先级设置不当,可能会导致delay函数(通常基于定时器)无法正常工作
mattlincoln 发表于 2024-4-12 04:12 | 显示全部楼层
考虑使用非阻塞式的延时设计,或者在软件架构中引入操作系统级别的任务调度。
claretttt 发表于 2024-4-12 13:42 | 显示全部楼层
DMA中断优先级低于SysTick中断优先级。在STM32中,SysTick中断优先级通常是最高的,以保证系统时钟的稳定性。
eefas 发表于 2024-4-14 19:49 | 显示全部楼层
delay函数的调用没有被错误地放在了DMA传输或ADC转换的中断服务例程中。
cashrwood 发表于 2024-4-15 14:15 | 显示全部楼层
可以使用基于定时器的延时实现,而不是基于循环的实现。这样可以避免占用CPU资源
primojones 发表于 2024-4-15 17:59 | 显示全部楼层
如果在HAL库中使用DMA连续转换模式,由于DMA中断处理时间过长,可能会导致程序频繁进入DMA中断,从而影响到其他任务的执行,包括延时函数
modesty3jonah 发表于 2024-4-15 21:54 | 显示全部楼层
HAL库提供了一个延时函数HAL_Delay(),可以替代原来的delay()函数。
理想阳 发表于 2024-4-16 06:11 | 显示全部楼层
可能会继续占用资源并干扰其他功能,包括延迟功能。
sesefadou 发表于 2024-4-16 11:40 | 显示全部楼层
在初始化SysTick定时器时,可以先禁用SysTick中断,直到DMA初始化和操作完成后再重新启用。
yorkbarney 发表于 2024-4-16 16:50 | 显示全部楼层
如果DMA或ADC的中断优先级设置得过高,可能会导致delay函数中的等待循环(通常基于定时器中断)被打断,从而使得delay函数无法正常工作。
alvpeg 发表于 2024-4-16 21:41 | 显示全部楼层
在DMA传输完成中断中处理数据时,如果数据处理占用了过多的时间,也会影响到延时函数的执行。
olivem55arlowe 发表于 2024-4-17 12:34 | 显示全部楼层
如果在HAL库中使用DMA连续转换模式,由于DMA中断处理时间过长,可能会导致程序频繁进入DMA中断,从而影响到其他任务的执行,包括延时函数
V853 发表于 2024-4-18 07:06 | 显示全部楼层
如果中断优先级设置不正确,延迟函数(通常基于定时器)可能无法正常工作
yeates333 发表于 2024-4-19 17:03 | 显示全部楼层
使用HAL_Delay()函数              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部