完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的是rtt studio, 当不用qspi dma的时候,STM32g474 qspi读取w25q64 id正常,后续的读写都正常。 如果在dma_config.h添加已下几个宏使用DMA1的通道1,程序死活不进中断: #define QSPI_DMA_IRQHandler DMA1_Channel1_IRQHandler #define QSPI_DMA_RCC RCC_AHB1ENR_DMA1EN #define QSPI_DMA_INSTANCE DMA1_Channel1 #define QSPI_DMA_IRQ DMA1_Channel1_IRQn #define QSPI_DMA_REQUEST DMA_REQUEST_QUADSPI 实际上,我即便修改如下两个中断函数名称,程序还是没跑进两个中断函数: #ifdef BSP_QSPI_USING_DMA //void QSPI_IRQHandler(void) void QUADSPI_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); HAL_QSPI_IRQHandler(&_stm32_qspi_bus.QSPI_Handler); /* leave interrupt */ rt_interrupt_leave(); } //void QSPI_DMA_IRQHandler(void) void DMA1_Channel1_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); HAL_DMA_IRQHandler(&_stm32_qspi_bus.hdma_quadspi); /* leave interrupt */ rt_interrupt_leave(); } #endif /* BSP_QSPI_USING_DMA */ 导致程序一直停留在drv_qspi.c的qspixfer()中的while循环语句中死等: 后来我在cubeMx如下配置dma: 然后用cubeMx生成mdk工程,在main()函数调用以下库函数,能读取w25q64的id, 证明其实dma是能正常工作的: HAL_QSPI_Command(&hqspi1, &qspi_cmd, 1000); HAL_QSPI_Receive_DMA(&hqspi1, id); 另外,我还专门对比了mdk工程的MX_DMA_Init()、MX_QUADSPI1_Init()和我工程的参数配置都是一样的,让后SystemClock_Config()函数也是重新拷贝过去,结果还是不行。 为什么在rtt studio使用qspi dma就进不了中断呢? |
|
相关推荐
1个回答
|
|
在使用RTT Studio开发STM32G474的QSPI DMA时,如果程序无法进入中断,可能是由于以下几个原因导致的:
1. **中断优先级配置错误**:确保DMA中断的优先级配置正确。在STM32中,中断优先级需要在NVIC中正确设置。 2. **DMA通道配置错误**:检查DMA通道的配置是否正确,包括源地址、目标地址、传输大小等。 3. **QSPI配置错误**:确保QSPI的配置与DMA传输兼容,包括时钟、数据宽度等。 4. **中断服务例程(ISR)未正确配置**:确保中断服务例程(ISR)正确配置,并且与DMA中断向量匹配。 5. **DMA传输完成标志未正确处理**:在DMA传输完成后,需要检查传输完成标志,并在ISR中清除该标志。 6. **硬件问题**:检查硬件连接是否正确,包括QSPI和DMA的引脚连接。 7. **代码问题**:检查代码中是否有逻辑错误,导致中断无法触发。 针对你提供的宏定义,这里有一些可能的检查点: - **QSPI_DMA_IRQHandler**:确保这个宏定义指向的是正确的中断处理函数。 - **QSPI_DMA_RCC**:确保这个宏定义启用了正确的DMA时钟。 - **QSPI_DMA_INSTANCE**:确保这个宏定义指向了正确的DMA实例。 此外,你可以尝试以下步骤来调试问题: 1. **使用调试器**:使用调试器逐步执行代码,查看中断是否被触发。 2. **检查中断使能**:确保在代码中正确使能了DMA中断。 3. **检查中断向量表**:确保中断向量表中的DMA中断向量指向了正确的ISR。 4. **检查NVIC配置**:确保NVIC中的中断优先级和使能位配置正确。 如果以上步骤都无法解决问题,建议查看STM32的参考手册和RTT Studio的文档,以确保所有配置都是正确的。同时,也可以查看社区论坛或者官方支持,看看是否有其他人遇到类似问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
156个成员聚集在这个小组
加入小组【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
901 浏览 0 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
1304 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
932 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
1197 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board使用7寸屏设置为RGB666大端模式模式成功显示摄像头图案
1205 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:33 , Processed in 0.587432 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号