完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近再调试STM32L476RG 串口,使用串口2,在验证DMA空闲中断的时候,
发现初始化的时候 __HAL_UART_ENABLE_IT( huart2, UART_IT_IDLE); //使能idle中断 一执行这一行代码,程序就不能运行下去,卡在此位置, 验证步骤: HSE外部晶振都是8M demo1 stm32cubemx 生成一个demo 仅使用串口4,用来printf输出,串口2验证dma 接收。为了和F103对比 同样的设置时钟pll 72M 初始化的时候 操作 printf("*****init end ****** n"); #ifdef TEStiUART2DMA __HAL_UART_ENABLE_IT( huart2, UART_IT_IDLE); //使能idle中断 卡死 HAL_UART_Receive_DMA( huart2,UART2_RX_BUF,RECEIVELEN); //打开DMA接收,数据存入rx_buffer数组中。 printf("*****init end 222222222****** n"); #else HAL_UART_Receive_IT( huart2, uart2rx_buffer,1); // 重新使能串口1接收中断 __HAL_UART_DISABLE_IT( huart2,UART_IT_RXNE); #endif /* USER CODE END 2 */ 为了对比原因,用stm32f103ret6 板子 stm32cubemx新建了一个同样简单的demo 晶振 pll 72M 串口1 作为printf 串口2 用来验证dma接收, F103没有任何问题 ,可以正常运行 和接收, 请问有人遇到类似问题吗,谢谢。 |
|
相关推荐
1个回答
|
|
有几种可能的原因会导致在使能UART_IT_IDLE后卡死:
1. 中断优先级配置错误:如果IDLE中断的优先级高于其他中断,可能会导致程序一直停在此处。请确保IDLE中断的优先级低于其他需要处理的中断。 2. IDLE中断标志未被清除:在每次进入IDLE中断处理函数之前,需要手动清除IDLE中断标志位。如果未清除标志位,会导致中断一直触发。 3. 串口传输配置错误:请确保串口的传输参数正确设置,例如波特率、数据位、校验位和停止位。如果参数设置错误,可能会导致无法正常接收数据。 4. 串口DMA配置错误:如果DMA的配置发生错误,可能会导致DMA传输无法完成,从而导致IDLE中断一直触发。请仔细检查DMA的配置是否正确。 5. 时钟配置错误:如果时钟配置错误,可能会导致串口无法正常工作。请确保时钟配置正确,特别是与外部晶振相关的配置。 建议您逐一检查以上可能的原因,查找导致卡死的具体原因。如果需要更详细的帮助,请提供更多的代码和配置信息。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1574 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1519 浏览 1 评论
949 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
672 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1565 浏览 2 评论
1852浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
622浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
508浏览 3评论
516浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
494浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 04:16 , Processed in 0.703491 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号