完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用的STM32的两路串口收发,两个串口接收中断处理有问题,我现在的处理方式是这样的
/* USER CODE BEGIN 4 */ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart == &huart2) { uRX_buf[RX_cont++] = RX_buf; // HAL_UART_Transmit_DMA(&huart2, uTX_buf, 8); if(RX_cont>63) { RX_cont=0; } } else if(huart == &huart4) { uRX_buf[RX_cont++] = RX_buf4; if(RX_cont>63) { RX_cont=0; } // HAL_UART_Receive_IT(&huart4,&RX_buf4,1);//¡ä??¨²?¨®¨º¨¹?D?? } 我仿真看的确实是进了中断了,但是回调函数中的 else if(huart == &huart4)执行不到,有么有用过的大神给点提示吧,谢谢! |
|
相关推荐
11个回答
|
|
不能这么写,if(huart->Instance ==USART1 )
|
|
|
|
签到签到,早上好!
|
|
|
|
要改成if(huart->Instance ==USART1 )吗>? |
|
|
|
|
|
|
|
是的。判断接口。你可以看一下stm32f4xx_hal_msp.c里面怎么写。参考一下。
|
|
|
|
大神,你这个方式好像行不通阿回调函数的传递参数只有一个void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 像你这样的写法会报错. |
|
|
|
如下类似代码:
void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct; if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF7_USART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ } } |
|
|
|
谢谢,我找到了这一段代码了,我的问题已经解决了,我的问题其实主要是 两个串口我用的模式不一样一个用的DMA 另一个用的一个用的接收中断,所以产生中断的方式不一样而且我开启的接收中断里面的只接收了一次所哟导致我的中断里面只能接受到一次数据。看来不是中断的问题应该是处理的问题,谢谢你回复我。 |
|
|
|
楼主这么写没有毛病 我做的项目里面区分串口也是这么写的 if(huart == &huart4) 我觉得问题不在这个地方,先查查其他代码的问题 |
|
|
|
|
|
是的,这么写确实没毛病您给提供的思路我看了下,应该也是可行的就是把接收中断 的字符个数设置成1 每次进中断后需要重新再开启中断,相对来说比较麻烦一些 我换成了DMA 接收模式,设置成连续模式拉,应该能方便点,而且一般数据处理我不放在中断回调函数里面,这样对中断时效性有影响我在MAIN 里面处理的。非常感谢您能够给我提供思路。希望以后能多交流。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1539 浏览 0 评论
4869 浏览 1 评论
6065 浏览 4 评论
哪位大神有MGC3130的STM32 i2C驱动例程分享一下,感谢感谢
10559 浏览 1 评论
stm32f103c8t6用中断采出来的数来回跳?怎么样才能稳定下来?
5550 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-7-13 19:43 , Processed in 0.623562 second(s), Total 60, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191