找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1896|回復: 1
收起左側

STM32 HAL庫接收GY-25傾斜角度傳感器 單片機程序沒有進入中斷接收回調函數(shù)

[復制鏈接]
ID:1003481 發(fā)表于 2022-6-27 14:31 | 顯示全部樓層 |閱讀模式
GY-25是一款傾斜角度傳感器,它通過串口輸出航向角、橫滾角和俯仰角數(shù)據(jù)。

GY-25傳感器

GY-25傳感器


在使用GY-25之前,要向GY-25發(fā)送命令才能使能它開始傳輸數(shù)據(jù)。有以下5種命令可選,我用的是第2種命令,自動和連續(xù)返回數(shù)據(jù):
①0xA5+0x51: 查詢模式,直接返回角度值,需每次讀取都發(fā)送 ;
②0xA5+0x52: 自動模式,直接返回角度值,只需要初始化時發(fā)一次 ;
③0xA5+0x53: 自動模式,ASCII 碼輸出,便于直接電腦串口助手查看 ;
④0xA5+0x54: 校正模式,校正俯仰橫滾角 0 度,需要保持水平時候發(fā)送 ;
⑤0xA5+0x55: 校正模式,校正航向 0 度,航向任意角度清零。

GY-25傳出來的一幀數(shù)據(jù)包含8個字節(jié)。其中,第一個字節(jié)固定為0xAA,表示一幀數(shù)據(jù)的開始。第2、3字節(jié)是航向角,第4、5字節(jié)是俯仰角,第6、7字節(jié)是橫滾角,第8個字節(jié)固定為0x55代表一幀的結束。
我希望使用STM32F411RE Nucleo開發(fā)板的串口1接收GY-25的數(shù)據(jù),再通過串口2將數(shù)據(jù)輸出到電腦上的串口助手(STM32F411 Nucleo開發(fā)板的已經將串口2虛擬化到ST-LINK的USB接口,電腦上的串口助手可以直接讀取串口2發(fā)來的數(shù)據(jù))。
理論上很簡單,就是先給串口1發(fā)送0xA5和0x52使GY-25開始傳出數(shù)據(jù),再通過中斷方式接收GY-25從串口1發(fā)出來的數(shù)據(jù)。然后通過串口2將接收到的數(shù)據(jù)發(fā)送到電腦上。
我在STM32CubeMx上已經正確配置了串口參數(shù),也開啟了串口1和串口2的中斷,實物連線也檢查過了。
但是我寫的程序從來不會進入中斷接收回調函數(shù),同樣的,串口助手也沒有收到任何數(shù)據(jù)。我找不出問題在哪里,請大佬幫我謀劃一下解決思路。

單片機程序如下:
/* USER CODE BEGIN PV */
      uint8_t recBuf[10];  //接收到的一幀數(shù)據(jù)
      uint8_t command1=0xA5;
      uint8_t command2=0x52;
/* USER CODE END PV */


  /* USER CODE BEGIN 2 */
        HAL_UART_Transmit_IT(&huart1,&command1,1);  //發(fā)送0xA5
        HAL_UART_Transmit_IT(&huart1,&command2,1);  //發(fā)送0x52
        HAL_UART_Receive_IT(&huart1,recBuf,10); //開啟串口1的接收中斷
  /* USER CODE END 2 */


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

    /* USER CODE BEGIN 3 */
          //main函數(shù)里什么都沒寫
  }
  /* USER CODE END 3 */


/* USER CODE BEGIN 4 */
void HAL_UART_RxCapltCallback(UART_HandleTypeDef *huart)  //串口接收中斷回調函數(shù)
{
    if(huart ->Instance == USART1)
    {
          HAL_UART_Transmit_IT(&huart2,recBuf,10);  //通過串口2將接收到的數(shù)據(jù)發(fā)送到電腦的串口助手
          HAL_UART_Receive_IT(&huart1,recBuf,10);  //開啟串口1的接收中斷
    }
}
/* USER CODE END 4 */
回復

使用道具 舉報

ID:883242 發(fā)表于 2022-6-27 17:56 | 顯示全部樓層
回調函數(shù)執(zhí)行的時候還沒有退出中斷,HAL_UART_Transmit_IT()能用嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表