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

有关STM32 HAL 库多个串口的回调函数问题

[复制链接]
冷眼1121 提问时间:2017-3-16 22:30 /
阅读主题, 点击返回1楼
收藏 1 评论11 发布时间:2017-3-16 22:30
11个回答
奏奏奏 回答时间:2017-3-17 14:06:29
楼主如果是接收固定帧尾结束的数据帧
可以参考以下我的贴的代码

  1. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  2. {
  3.         if(huart == &huart2)
  4.   {
  5.                 Rxbuff_UART2[Rx_count_UART2] = aaRxBuffer_UART2[0];
  6.                
  7.                
  8.                 if((Rxbuff_UART2[Rx_count_UART2-3] == 0xFF)&&(Rxbuff_UART2[Rx_count_UART2-2] == 0xFC))
  9.                 {
  10.                         Rx_Num_UART2 = ++Rx_count_UART2;
  11.                         Rx_count_UART2 = 0;
  12.                                
  13.                 }
  14.                 else Rx_count_UART2++;
  15.                 HAL_UART_Receive_IT(&huart2,(uint8_t*)aaRxBuffer_UART2,1);
  16.   }
  17. }
复制代码


冷眼1121 回答时间:2017-3-17 16:37:52
奏奏奏 发表于 2017-3-17 14:01
楼主这么写没有毛病
我做的项目里面区分串口也是这么写的
if(huart == &huart4)

是的,这么写确实没毛病您给提供的思路我看了下,应该也是可行的就是把接收中断 的字符个数设置成1 每次进中断后需要重新再开启中断,相对来说比较麻烦一些 我换成了DMA 接收模式,设置成连续模式拉,应该能方便点,而且一般数据处理我不放在中断回调函数里面,这样对中断时效性有影响我在MAIN 里面处理的。非常感谢您能够给我提供思路。希望以后能多交流。

评分

参与人数 1ST金币 +5 收起 理由
zero99 + 5 结贴奖励

查看全部评分

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