運行環境
- Windows10
- STM32CubeMX___Version 6.1.0
- Keil5(MDK5)___Version 5.27
簡介
這是一個針對智能車 有來有往 單收單發超聲波模組的一個教程
模組圖片

一、引數簡介
二、使用程序
三. 資料格式
四、STM32CubeMx的配置
1、開啟時鐘

2、下載配置

3.開啟一個串口

4.打開NVIC

五、代碼詳解
1.頭檔案包含
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
2.變數定義,以及中斷邏輯處理
/* USER CODE BEGIN 0 */
unsigned char dat_left[3]; //存放超聲波串口接收的位元組數
unsigned char num_left; //超聲波資料接收變數
int distance_left; //計算出來的距離
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if( huart == &huart2 )
{
HAL_UART_Receive_IT(&huart2,&dat_left[num_left],sizeof (num_left));
if(dat_left[0] != 0xA5)
{
num_left = 0;
}
else
num_left++;
if(num_left==3)
{
num_left = 0;
distance_left = dat_left[1]<<8 | dat_left[2];
}
}
}
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);//注意把&huart1改為自己的stm32使用的串口號
return ch;
}
/* USER CODE END 0 */
3.開啟中斷接受
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart2,&dat_left[num_left],sizeof (num_left));
/* USER CODE END 2 */
4.連續接受
while (1)
{
printf("distance_left=%d\r\n",distance_left);
HAL_Delay (100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
六、總結
市面上大部分的 智能車的單收單發模組原理都一樣,最關鍵的是掌握核心串口處理函式,切勿急躁,靜心能事半功倍,欲速則不達,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294790.html
標籤:其他
