a208hlc-57526
发表于 2015-7-31 00:21:27
空闲中断只有一个字节的时长吧?怎么能调节时长呢?modbus里规定的好像是3.5字节
mark0668
发表于 2015-7-31 01:23:53
多谢分享!!!
wjandsq
发表于 2015-7-31 09:32:11
这种方式弥补ST串口没有接收FIFO的缺陷,赞一个!
JackieLaura
发表于 2015-7-31 10:04:31
谢谢楼主分享。。。水印透明的还是好点。。。
smare
发表于 2015-7-31 20:27:15
正需要这个。明天测试一下楼主的方法。谢谢
wjjontheway
发表于 2015-8-1 10:41:42
smare 发表于 2015-7-31 20:27
正需要这个。明天测试一下楼主的方法。谢谢
行,测完有什么考虑不周全的地方一起聊聊,我也只是大概弄了下,后面串口接收的时候说不定会出什么问题。我的回调函数还没有定义。
geter
发表于 2015-9-7 11:03:19
很不错的帖子
Sphinx001
发表于 2015-9-19 10:47:23
wjjontheway 发表于 2015-7-30 17:16
按HAL的回调方式写,是指在HAL_UART_IRQHandler()中添加
tmp1 = __HAL_UART_GET_FLAG(huart, UART_F ...
你可以把HAL_UART_Receive_DMA(&huart1,rx_buffer,BUFFER_SIZE);放在 if里面 初始化也要开启一次
}
太阳部落
发表于 2015-12-8 18:45:33
刚刚接触这块,有个地方不明白:使能了串口空闲中断,那么没有数据接收的时候不就一直中断吗?再请教一个问题:HAL_UART_Receive_DMA这个函数如果接收的数据长度大于指定长度,这个函数会跳转到哪里?
光环
发表于 2015-12-9 16:40:00
刚接触STM32 ,试验了一下楼主程序,每次重启MCU后,第一次向mcu发送数据,收不到,从第二次以后就正常了。不知什么原因?
另外:下面不理解的地方,请教:
if((tmp_flag != RESET))
{
__HAL_UART_CLEAR_IDLEFLAG(&huart1);
temp = huart1.Instance->SR; 这里的赋值是什么意义?
temp = huart1.Instance->DR; 这里的赋值是什么意义?
HAL_UART_DMAStop(&huart1);
temp= hdma_usart1_rx.Instance->NDTR;
rx_len =BUFFER_SIZE - temp;
recv_end_flag = 1;
}
刚接触STM32,请问见笑。