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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版