完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
串口1按照开发板的试验,正常了,开始串口6做RS485通信试验,配置都按照串口1的中断配置,只是多了一个485模块的管脚配置,测试的时候发现,只能发送数据,不能接收,进入不了接收中断,很奇怪,测量了控制管脚,控制电平是正常的,就是进不了接收中断。代码改来改去的,就是进不去。晚上下班回去还在想,问题没解决,就是一直想问题。标准库里面,配置管脚的时候是接收和发射两个管脚分开配置的,HAL库就一起配置了
开发板的UART1的HAL配置也是分开配置的 GPIO_Initure.Pin=GPIO_PIN_9; //PA9 GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出 GPIO_Initure.Pull=GPIO_PULLUP; //上拉 GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速 GPIO_Initure.Alternate=GPIO_AF7_USART1; //复用为USART1 HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化PA9 GPIO_Initure.Pin=GPIO_PIN_10; //PA10 HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化PA10 然后,奇迹来了,居然可以进去中断了,进入之后还有数据不对问题,开发版那种接收中断函数 if((__HAL_UART_GET_FLAG(&USART2_RS485Handler,UART_FLAG_RXNE)!=RESET)) //接收中断 { HAL_UART_Receive(&USART2_RS485Handler,&res,1,1000); if(RS485_RX_CNT《64) { RS485_RX_BUF[RS485_RX_CNT]=res; //记录接收到的值 RS485_RX_CNT++; //接收数据增加1 } } 接收数据没有任何协议的,发现有时候会卡死,改为串口1那种稍微加点协议的,好些了。 然后突想再验证一下是不是上拉的原因进不了中断,把上拉改回去,结果让我吃惊,居然又可以进入中断了,就是说能否进入中断似乎跟上拉不上拉没有关系,是不是很神奇。无解。 先这样吧,先测试收发数据,UART1,UART6,定时500ms不断的收发数据,对应电脑的两个串口不断的收发。然后出现新问题了,用不了几秒的时间,就卡死了,查原因,死在接收中断里面了,定位问题,出现在 HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 函数里面,执行 __HAL_LOCK(huart); 锁死了, 网上查了一下,这个是HAL库的大坑啊,也有解决方法,最简单粗暴的方法就是注释掉,虽然有人不推荐,也有人说不影响收发数据。我就使用这个简单的方法吧,测试一下数据,正常了,不卡死了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:08 , Processed in 0.837149 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号