【发布时间】:2019-02-21 05:25:09
【问题描述】:
我有一个项目,我使用过 stm32f746g 发现板。它从 Uart 顺序接收固定大小的数据,并通知应用程序每个数据接收完成,使用 dma 回调(HAL_UART_RxCpltCallback 函数)。它在开始时运行良好,但在运行几分钟后,dma 回调停止被调用,因此指定的参数值没有得到更新。因为这个参数也是在另一个线程中使用的(实际上是一个rtos定义的定时器),我相信这个问题是由于缺乏线程安全造成的。但我的问题是 ISR 不支持互斥锁和信号量,我需要在 dma 回调中保护我的变量,这是一个中断例程。我正在使用 keil rtx 来处理多线程,我使用的计时器是 rtx 中定义的 osTimer。我该如何处理这个问题?
【问题讨论】:
标签: mutex semaphore uart dma stm32f7