jia****com
在无rtos的情况下,显示屏使用spi dma方式,采用async函数可以正常发送;
但是在引入freertos后,aysnc函数则一直处于死循环while中
app_spi_transmit_async(APP_SPI_ID_MASTER, &cmd, 1);
while(master_tx_done == 0);
Barton
你好,
在SPI初始化过程中,会调用FreeRTOS的相关API,这些API调用后,FreeRTOS会通过设置BASEPRI的方式禁止中断,在任务开始调度后(调用vTaskStartScheduler()),会重新使能中断。
因此,在FreeRTOS环境下,需要在调度开始后才能调用SPI的相关操作接口。
Barton
你好,
这个接口我之前用过,没有碰到过这个问题,请问你使用的是哪个版本的sdk呢?
建议:
1、注意调用 app_spi_transmit_async的函数返回值是否正确;
2、只在一个task中操作spi,还是多个task中有操作,会不会是重入导致的异常;
jia****com
非常感谢您的回复
我在1.6.09和1.6.10上都试了,dma配置的是 通道 0和1,没有成功。
app_spi_transmit_async 返回的是 APP_DRV_SUCCESS
这个函数是在初始化的时候,也就是创建task之前调用的,
打开微信,使用“扫一扫”即可关注