完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F439有两个DMA控制器DMA1和DMA2,每个控制器有8个流,每个流有8个通道,我做的是采用串口1DMA中断接收数据,DMA2的流2 通道4对应USART1_RX,STM32F439只提供了DMA2流2的中断函数,流2中还有其他的通道中断(如 ADC2 SPI1_RX UASRT6_RX), 那么如何在DMA2流2(void DMA2_Stream2_IRQHandler(void))中区分是哪个通道产生的中断呢?
|
|
相关推荐
2个回答
|
|
是不是每个流上每次只能同时配置一个通道连接,这个通道上产生的中断只能是这个通道的中断,相当于是两个DMA控制器,16个流,同时连接支持的只有16个通道,每个流只能同时支持一个通道,只是每个流可以进行通道选择罢了,而不是16个流,每个流8个通道,可以支持128个通道同时连接。
|
|
|
|
在STM32F439中,要区分DMA2流2中断是由哪个通道产生的,可以按照以下步骤进行:
1. 首先,需要检查DMA2流2的中断状态寄存器(DMA2_Stream2_ISR),以确定是否确实发生了中断。 2. 然后,检查DMA2流2的中断标志位。在STM32F439中,DMA中断标志位包括: - TCIFx(传输完成中断标志位) - HTIFx(传输一半完成中断标志位) - TEIFx(传输错误中断标志位) 其中,x表示流号。 3. 为了区分是哪个通道产生的中断,可以检查DMA2流2的通道映射。在STM32F439中,DMA2流2可以映射到不同的通道,如ADC2、SPI1_RX、USART6_RX等。可以通过以下方式检查通道映射: a. 检查DMA2的流2通道选择寄存器(DMA2_Stream2_CR),其中的CHSEL字段表示流2的通道选择。 b. 根据CHSEL字段的值,可以确定流2映射到的通道。例如,如果CHSEL值为0x04,则表示流2映射到USART1_RX。 4. 根据上述步骤,可以确定DMA2流2中断是由哪个通道产生的。在中断处理函数(void DMA2_Stream2_IRQHandler(void))中,可以编写相应的代码来处理不同通道的中断。 示例代码: ```c void DMA2_Stream2_IRQHandler(void) { if (DMA2_Stream2_ISR & DMA_ISR_TCIF2) // 检查传输完成中断标志位 { uint32_t chsel = DMA2_Stream2_CR & DMA_SxCR_CHSEL; // 获取CHSEL字段的值 switch (chsel) { case 0x04: // USART1_RX // 处理USART1_RX的中断 break; case 0x05: // SPI1_RX // 处理SPI1_RX的中断 break; case 0x06: // ADC2 // 处理ADC2的中断 break; default: // 其他通道的处理 break; } DMA2_Stream2_ISR = DMA_ISR_TCIF2; // 清除传输完成中断标志位 } } ``` 通过以上步骤和示例代码,可以在STM32F439的DMA2流2中断处理函数中区分是哪个通道产生的中断。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1907 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1678 浏览 1 评论
1171 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
770 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1730 浏览 2 评论
1970浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
806浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
254浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
623浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-23 07:19 , Processed in 0.831371 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号