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

HAL怎么写串口接收函数?

[复制链接]
sos博 提问时间:2019-7-13 11:01 /
阅读主题, 点击返回1楼
收藏 评论11 发布时间:2019-7-13 11:01
11个回答
radio2radio 回答时间:2019-7-13 21:51:19
本帖最后由 radio2radio 于 2019-7-13 21:59 编辑
sos博 发表于 2019-7-13 21:34
哦,我学你那个,然后把flag=1放到HAL_UART_RxCpltCallbacki里面了,我DMA_RX_BUFFER_SIZE也学习你的先写 ...

如果不是必须,建议不使用DMA方式,中断方式的很清晰。

在DMA里面的中断处理的这一句:
    temp  = hdma_usart1_rx.Instance->CNDTR;
    rx_len1 =  BUFFER_SIZE - temp;

应该在这里搞定 rx_flag=1。

mikecai 回答时间:2019-7-15 09:49:24
while loop 前一句启动 HAL_UART_Receive_DMA(&huart2,ringBuf.pBuf,ringBuf.bufSize);
while loop 中:retval = ringBufPop(&userBuf[userPrt],50-userPrt,&ringBuf,&hdma_usart2_rx);
                if(retval)  //收到数据 get responde  
                {
                        userPrt+=retval;
                        uart2PrevTick = HAL_GetTick();
                        if(userPrt > 10 ) // data respond data 1/3 buffer ,print it
                        {
                                HAL_UART_Transmit(&hlpuart1,userBuf,userPrt,10);
                                while(userPrt !=0) //clean buffer
                                {
                                        userBuf[userPrt] = 0;
                                        userPrt--;
                                }
                        }
                }
                else //idle 没收到DMA
                {
                        if (0!= userPrt)  
                        {       
                                 if((HAL_GetTick()-uart2PrevTick) >= 10) // 间隔时间大于 10ms【对9600 波特率】,那就是单条命令接收 已完成
                                 {
                                 HAL_UART_Transmit(&hlpuart1,userBuf,userPrt,10); //print receive data by hlpuart1
                                                 
                   ParseData();// 解析数据
                                        while(userPrt !=0) //clean buffer
                                        {
                                                userBuf[userPrt] = 0;
                                                userPrt--;
                                        }                                                 

                         }
                }
          }
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版