本帖最后由 damiaa 于 2015-1-16 13:37 编辑
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); 使能接收
这个IO和时间搭配问题吧。
用232试试。或者只接收。IO搞个低 死的 ?
我把原有中断服务函数的标志位处理函数的顺序改了一下。
现在可以收到数据了,但是第一个数据经常出现跟帧头不匹配的现象,我感觉是第一个字节丢掉。
求分析!
大秦正声 发表于 2015-1-16 11:30
通信距离有多远?用max3232?
50cm通信距离
大秦正声 发表于 2015-1-16 11:30
通信距离有多远?用max3232?
max422. 硬件没有问题,poll模式可以正常接收
党国特派员 发表于 2015-1-16 11:37
HAL_UART_Receive_IT 只需要调用一次。
还有就是你的接收函数里都干了些什么,会不会时间超长了。
...
接收回调只是加了一个标志位,没干别的
dsjsjf 发表于 2015-1-16 12:08
用户函数区处理时间太长
用户函数的也就回调中的控制函数,没别的了
damiaa 发表于 2015-1-16 13:31
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); 使能接收
...
设备在收到我的指令50us后才会发数据的。我感觉不是因为使能脚的问题
接收中断未处理完整;
中断+查询:第一个接收中断来了后改为查询方式接收;
是否使用FIFO?
我想是:在规定时间里中断里发送肯定正常发送,之后到接受中断里,由于你的发送时间太短,中断有优先级,建议可惜在发送中断时间放大点和接受程序减少放中断里。个人意见,仅供参考。
LZ在调陀螺仪么~~~:lol