OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4275|回复: 3

f767 中串口怎么定义多个?它是用回调函数。回调函数又不能多次使用

[复制链接]

9

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2016-11-9
在线时间
38 小时
发表于 2016-12-30 20:01:25 | 显示全部楼层 |阅读模式
3金钱
本帖最后由 18784506782 于 2016-12-30 20:03 编辑


最佳答案

查看完整内容[请看2#楼]

进入回调函数里面,针对不同的串口做不同的处理,串口句柄里面就有标记是哪个串口的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-12-30 20:01:26 | 显示全部楼层
进入回调函数里面,针对不同的串口做不同的处理,串口句柄里面就有标记是哪个串口的。
回复

使用道具 举报

86

主题

567

帖子

0

精华

高级会员

Rank: 4

积分
825
金钱
825
注册时间
2014-9-30
在线时间
139 小时
发表于 2017-2-13 18:19:39 | 显示全部楼层

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==UART4)
  {
  /* USER CODE BEGIN UART4_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart4,(uint8_t *)CD_In,16);
  /* USER CODE END UART4_MspDeInit 0 */
  }
  else if(huart->Instance==UART5)
  {
  /* USER CODE BEGIN UART5_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart5,(uint8_t *)DD_In,16);
  /* USER CODE END UART5_MspDeInit 0 */
  }
  else if(huart->Instance==USART1)
  {
  /* USER CODE BEGIN USART1_MspDeInit 0 */
    keychr = key_in[2];         //从液晶屏键盘码 AA+55+key 提取 key 键值
    HAL_UART_Receive_IT(&huart1,(uint8_t *)key_in,3);
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_2);      //翻转 LED灯 测试之用 。
  /* USER CODE END USART1_MspDeInit 0 */
  }
  else if(huart->Instance==USART2)
  {
  /* USER CODE BEGIN USART2_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart2,(uint8_t *)AD_In,16);
  /* USER CODE END USART2_MspDeInit 0 */
  }
  else if(huart->Instance==USART3)
  {
  /* USER CODE BEGIN USART3_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart3,(uint8_t *)BD_In,16);
  /* USER CODE END USART3_MspDeInit 0 */
  }
}

void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
  // printf("error code:%X\r\n",huart->ErrorCode);
  if(huart->Instance==UART4)
  {
  /* USER CODE BEGIN UART4_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart4,(uint8_t *)CD_In,16);
  /* USER CODE END UART4_MspDeInit 0 */
  }
  else if(huart->Instance==UART5)
  {
  /* USER CODE BEGIN UART5_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart5,(uint8_t *)DD_In,16);
  /* USER CODE END UART5_MspDeInit 0 */
  }
  else if(huart->Instance==USART1)
  {
  /* USER CODE BEGIN USART1_MspDeInit 0 */
  HAL_Delay(3);
  HAL_UART_Receive_IT(&huart1,(uint8_t *)key_in,3);
  HAL_Delay(3);
  /* USER CODE END USART1_MspDeInit 0 */
  }
  else if(huart->Instance==USART2)
  {
  /* USER CODE BEGIN USART2_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart2,(uint8_t *)AD_In,16);
  /* USER CODE END USART2_MspDeInit 0 */
  }
  else if(huart->Instance==USART3)
  {
  /* USER CODE BEGIN USART3_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart3,(uint8_t *)BD_In,16);
  /* USER CODE END USART3_MspDeInit 0 */
  }
}

俺 把 5个 串口 都 用起了,但是 还是觉得 囫囵吞枣 。
回复

使用道具 举报

9

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2016-11-9
在线时间
38 小时
 楼主| 发表于 2017-2-20 13:42:31 | 显示全部楼层
caosix 发表于 2017-2-13 18:19
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==UART4)

就这样 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 17:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表