打印
[其他ST产品]

多个STM32相连的冲突问题:为什么上次没处理的数据会影响下次

[复制链接]
234|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)和中断时,可能遇到数据未处理完毕影响下一次传输的问题。

使用特权

评论回复
5
工程师犹饿死| | 2024-7-30 18:15 | 只看该作者
这通常与DMA的配置、中断处理以及缓存管理有关

使用特权

评论回复
6
工程师犹饿死| | 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

使用特权

评论回复
7
是你的乱码| | 2024-7-30 18:28 | 只看该作者
缓存的问题吧?

使用特权

评论回复
8
抹茶妹妹| | 2024-7-30 18:52 | 只看该作者
如果 DMA 传输的数据尚未完全处理(比如尚未从内存中读取),那么下次 DMA 传输开始时,之前的数据可能会影响当前的数据处理。确保您在每次 DMA 传输完成后,都能正确地处理数据,并准备好接收新的数据。

使用特权

评论回复
9
米多0036| | 2024-8-31 12:59 | 只看该作者
错误的配置或管理可能导致数据丢失或系统不稳定。

使用特权

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

本版积分规则

325

主题

2270

帖子

4

粉丝