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

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