你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Cube下实现串口+DMA+空闲中断接收不定长数据  

[复制链接]
wjjontheway 提问时间:2015-7-30 16:38 /
阅读主题, 点击返回1楼
4 收藏 22 评论81 发布时间:2015-7-30 16:38
81个回答
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,请问见笑。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版