完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚结束STM32,所以想请教一下。就是我想用串口2接收数据然后发送给串口1,串口1接收后再发送出去,可是怎么调试也不对,下面贴上我的代码,请大佬们帮个忙,纠结死了。(这部分是接收) HAL_UART_Receive_DMA( huart2,u1buf,21);
下面是判断部分的代码 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { UNUSED(huart); if(huart->Instance == USART1) //判断由哪个串口触发中断 { HAL_UART_Transmit_DMA( huart1,u1buf,21,0xFFFF); //接收到数据马上用串口1发送 HAL_UART_Receive_DMA( huart1,u1buf,21); //串口1重新使能 } if(huart->Instance == USART2) { HAL_UART_Transmit_DMA( huart2,u2buf,21,0xFFFF); //接收到数据马上用串口2发送 HAL_UART_Receive_DMA( huart2,u2buf,21); //串口2重新使能 } } |
|
相关推荐
2个回答
|
|
不用DMA发送,直接用查询发送,可以发出去吗?另外注意下,是否进入回调函数。
|
|
|
|
首先,让我们逐步分析您的代码和问题。您提到您想要使用串口2接收数据,然后将接收到的数据通过串口1发送出去。您已经提供了接收部分的代码和判断部分的代码。让我们从这两部分开始分析。
1. 接收部分的代码: ```c HAL_UART_Receive_DMA(huart2, u1buf, 21); ``` 这行代码使用DMA(直接内存访问)从串口2接收数据到u1buf数组中。这里假设u1buf是一个足够大的数组,可以存储21个字节的数据。 2. 判断部分的代码: ```c void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ UNUSED(huart); if(huart->Instance == USART1) //判断由哪个串口触发中断 // ... } ``` 这段代码是在串口接收完成中断回调函数中,用于判断是哪个串口触发了中断。这里,您已经正确地使用了`UNUSED(huart)`来避免编译器警告,因为您暂时没有使用`huart`指针。 现在,让我们来解决您遇到的问题。您提到在调试过程中遇到了异常。为了解决这个问题,请按照以下步骤操作: 1. 确保您的硬件连接正确,串口2和串口1分别连接到适当的设备。 2. 确保您的串口配置正确。检查波特率、数据位、停止位和奇偶校验位等参数是否与您的设备兼容。 3. 在`HAL_UART_RxCpltCallback`函数中添加一些调试信息,以帮助您了解程序的执行流程。例如,您可以使用`printf`函数(需要配置UART用于调试输出)或者在IDE中设置断点来检查变量的值。 4. 确保您已经正确初始化了DMA。检查DMA通道、内存地址、外设地址等参数是否正确。 5. 在`HAL_UART_RxCpltCallback`函数中,添加代码将接收到的数据从u1buf数组发送到串口1。例如: ```c void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(huart->Instance == USART1) { // 发送数据到串口1 HAL_UART_Transmit(huart1, u1buf, 21, HAL_MAX_DELAY); } } ``` 6. 如果问题仍然存在,请检查您的IDE设置,确保没有其他编译错误或警告。 7. 如果以上步骤都无法解决问题,请尝试使用简单的轮询方式(非DMA)进行串口通信,以排除DMA相关的问题。 希望这些建议能帮助您解决问题。如果您有其他问题或需要进一步的帮助,请随时提问。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1113 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1134 浏览 1 评论
569 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
424 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1020 浏览 2 评论
1612浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
280浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
290浏览 3评论
273浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
250浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 02:17 , Processed in 0.728632 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号