完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
型号:STM32L432KC官方开发板
串口使用的是板载的USB下载口以及串口 用法: 在串口初始化后,while(1)之前调用 接收中断函数 HAL_UART_Receive_IT(),接收一个字节产生中断。在接收中断回调函数中处理保存数据并重新开启接收一个字节的中断。 回掉函数的代码: void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) { // printf("rx callback!n"); buf[cnt++] = data; uint8_t ret = HAL_OK; /* Set transmission flag: trasfer complete*/ do { ret = HAL_UART_Receive_IT(UartHandle, (uint8_t *) data, 1); }while(ret != HAL_OK); } 现象: 上电后会产生一次串口中断,进入这个函数。但此时并没有发送数据。 另外,后续发送任何数据都没有反应。无法产生中断。 |
|
相关推荐
1个回答
|
|
STM32 HAL库无法接收串口数据可能有以下几个原因:
1. 串口初始化配置错误:请检查您的串口初始化配置,确保波特率、数据位、停止位和奇偶校验位等参数与发送端相匹配。 2. 中断配置错误:请确保您已经正确配置了串口接收中断,并且在中断回调函数中正确处理了数据。 3. DMA配置错误:如果您使用了DMA(直接内存访问)来接收数据,请检查DMA的配置是否正确。 4. USB串口驱动问题:请确保您的计算机已经正确安装了STM32的USB串口驱动。 5. 串口线连接问题:请检查您的串口线是否连接正确,以及是否有损坏。 6. 串口接收缓冲区溢出:请确保您的接收缓冲区足够大,以避免数据丢失。 针对您提供的回调函数代码,我建议您检查以下几点: 1. 确保`buf`数组的大小足够大,以存储接收到的数据。 2. 在回调函数中,确保您已经正确地保存了接收到的数据,并重新开启了接收中断。例如: ```c void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) { // 保存接收到的数据 // ... // 重新开启接收一个字节的中断 HAL_UART_Receive_IT(&huart1, &buf[cnt], 1); cnt++; } ``` 3. 在主循环中,检查`cnt`变量的值,以确保数据已经接收。例如: ```c while (1) { if (cnt > 0) { // 处理接收到的数据 // ... cnt = 0; // 重置计数器 } } ``` 请尝试以上建议,如果问题仍然存在,请提供更详细的代码和错误信息,以便进一步分析。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 20:00 , Processed in 0.970191 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号