找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1122|回复: 1
打印 上一主题 下一主题
收起左侧

STM32 HAL库接收GY-25倾斜角度传感器 单片机程序没有进入中断接收回调函数

[复制链接]
跳转到指定楼层
楼主
GY-25是一款倾斜角度传感器,它通过串口输出航向角、横滚角和俯仰角数据。


在使用GY-25之前,要向GY-25发送命令才能使能它开始传输数据。有以下5种命令可选,我用的是第2种命令,自动和连续返回数据:
①0xA5+0x51: 查询模式,直接返回角度值,需每次读取都发送 ;
②0xA5+0x52: 自动模式,直接返回角度值,只需要初始化时发一次 ;
③0xA5+0x53: 自动模式,ASCII 码输出,便于直接电脑串口助手查看 ;
④0xA5+0x54: 校正模式,校正俯仰横滚角 0 度,需要保持水平时候发送 ;
⑤0xA5+0x55: 校正模式,校正航向 0 度,航向任意角度清零。

GY-25传出来的一帧数据包含8个字节。其中,第一个字节固定为0xAA,表示一帧数据的开始。第2、3字节是航向角,第4、5字节是俯仰角,第6、7字节是横滚角,第8个字节固定为0x55代表一帧的结束。
我希望使用STM32F411RE Nucleo开发板的串口1接收GY-25的数据,再通过串口2将数据输出到电脑上的串口助手(STM32F411 Nucleo开发板的已经将串口2虚拟化到ST-LINK的USB接口,电脑上的串口助手可以直接读取串口2发来的数据)。
理论上很简单,就是先给串口1发送0xA5和0x52使GY-25开始传出数据,再通过中断方式接收GY-25从串口1发出来的数据。然后通过串口2将接收到的数据发送到电脑上。
我在STM32CubeMx上已经正确配置了串口参数,也开启了串口1和串口2的中断,实物连线也检查过了。
但是我写的程序从来不会进入中断接收回调函数,同样的,串口助手也没有收到任何数据。我找不出问题在哪里,请大佬帮我谋划一下解决思路。

单片机程序如下:
/* USER CODE BEGIN PV */
      uint8_t recBuf[10];  //接收到的一帧数据
      uint8_t command1=0xA5;
      uint8_t command2=0x52;
/* USER CODE END PV */


  /* USER CODE BEGIN 2 */
        HAL_UART_Transmit_IT(&huart1,&command1,1);  //发送0xA5
        HAL_UART_Transmit_IT(&huart1,&command2,1);  //发送0x52
        HAL_UART_Receive_IT(&huart1,recBuf,10); //开启串口1的接收中断
  /* USER CODE END 2 */


while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
          //main函数里什么都没写
  }
  /* USER CODE END 3 */


/* USER CODE BEGIN 4 */
void HAL_UART_RxCapltCallback(UART_HandleTypeDef *huart)  //串口接收中断回调函数
{
    if(huart ->Instance == USART1)
    {
          HAL_UART_Transmit_IT(&huart2,recBuf,10);  //通过串口2将接收到的数据发送到电脑的串口助手
          HAL_UART_Receive_IT(&huart1,recBuf,10);  //开启串口1的接收中断
    }
}
/* USER CODE END 4 */
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2022-6-27 17:56 | 只看该作者
回调函数执行的时候还没有退出中断,HAL_UART_Transmit_IT()能用吗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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