[其他ST产品] 多个STM32相连的冲突问题:为什么上次没处理的数据会影响下次

[复制链接]
966|10
 楼主| 七毛钱 发表于 2024-7-26 18:45 | 显示全部楼层 |阅读模式
我刚接触STM32不久,对DMA和中断的用法不是很熟,不知道为什么上次没处理的数据会影响下次,或者是我没有完全关闭DMA的接收或是没清缓存?请大牛指点我的问题所在,谢谢!
jcky001 发表于 2024-7-26 21:30 | 显示全部楼层
是不是资源共享冲突
cr315 发表于 2024-7-26 21:36 | 显示全部楼层
如果中断优先级设置不当,或者中断服务程序(ISR)执行时间过长,就可能导致中断冲突或响应延迟。
工程师犹饿死 发表于 2024-7-30 18:15 | 显示全部楼层
使用STM32的DMA(Direct Memory Access)和中断时,可能遇到数据未处理完毕影响下一次传输的问题。
工程师犹饿死 发表于 2024-7-30 18:15 | 显示全部楼层
这通常与DMA的配置、中断处理以及缓存管理有关
工程师犹饿死 发表于 2024-7-30 18:15 | 显示全部楼层
配置的示例

DMA_HandleTypeDef hdma_usart_rx;

void DMA_USART_RX_Config(void) {
    __HAL_RCC_DMA1_CLK_ENABLE();
   
    hdma_usart_rx.Instance = DMA1_Channel5;  // DMA Channel for USART RX
    hdma_usart_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
    hdma_usart_rx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_usart_rx.Init.MemInc = DMA_MINC_ENABLE;
    hdma_usart_rx.Init.Periph
是你的乱码 发表于 2024-7-30 18:28 | 显示全部楼层
缓存的问题吧?
抹茶妹妹 发表于 2024-7-30 18:52 | 显示全部楼层
如果 DMA 传输的数据尚未完全处理(比如尚未从内存中读取),那么下次 DMA 传输开始时,之前的数据可能会影响当前的数据处理。确保您在每次 DMA 传输完成后,都能正确地处理数据,并准备好接收新的数据。
米多0036 发表于 2024-8-31 12:59 | 显示全部楼层
错误的配置或管理可能导致数据丢失或系统不稳定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

400

主题

2801

帖子

4

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