国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32系列(HAL庫(kù))——F103C8T6通過(guò)HC-SR04超聲波模塊實(shí)現(xiàn)測(cè)距

這篇具有很好參考價(jià)值的文章主要介紹了STM32系列(HAL庫(kù))——F103C8T6通過(guò)HC-SR04超聲波模塊實(shí)現(xiàn)測(cè)距。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.軟件準(zhǔn)備

(1)編程平臺(tái):Keil5

(2)CubeMX

(3)XCOM(串口調(diào)試助手)

2.硬件準(zhǔn)備

(1)某寶買的超聲波模塊

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?

(2)F1的板子,本例使用經(jīng)典F103C8T6

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

(3)ST-link?下載器

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

(4)USB-TTL模塊

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

(5)杜邦線若干

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

3.模塊資料

(1)模塊簡(jiǎn)介:

????????超聲波是振動(dòng)頻率高于20kHz的機(jī)械波。它具有頻率高、波長(zhǎng)短、繞射現(xiàn)象小、方向性好、能夠成為射線而定向傳播等特點(diǎn)。HC-SRO4是一款尺寸完全兼容老版本,增加UART和IIC功能的開(kāi)放式超聲波測(cè)距模塊,默認(rèn)條件下,軟件與硬件完全兼容老版本HC-SRO4;可以通過(guò)電阻設(shè)置成UART或IIC模式。2CM盲區(qū),4.5M典型最遠(yuǎn)測(cè)距,2.2mA作電流。采用升級(jí)解調(diào)芯片RCWL-9206,帶UART與IIC功能MCU:使其外圍更加簡(jiǎn)潔,工作電壓更寬(3-5.5V),接口功能更多。

(2)模塊參數(shù):

①專業(yè)解調(diào)測(cè)距芯片RCWL-9206
②支持GPIO,UART與IIC三種模式接口
③2.2mA工作電流
④2cm最小盲區(qū)
⑤2cm-450cm的超寬測(cè)量范圍
⑥工作溫度:-10°C-70°c
⑦3V-5.5V寬電壓供電

(3)工作原理

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?(4)本例程實(shí)現(xiàn)思路:

? ? ? ? 程序采用狀態(tài)機(jī)編程,MCU給模塊Trig引腳輸出一個(gè)高電平脈沖-->模塊發(fā)送脈沖信號(hào)-->定時(shí)器啟動(dòng)高電平輸入捕獲-->模塊返回的高電平信號(hào)到達(dá)定時(shí)器開(kāi)始計(jì)數(shù)-->返回信號(hào)變?yōu)榈碗娖蕉〞r(shí)器停止計(jì)數(shù)-->得到定時(shí)器時(shí)間差-->根據(jù)公式計(jì)算距離

4.CubeMX配置

(1)芯片選擇

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?(2)配置RCC、SYS、時(shí)鐘樹(shù)

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

配置RCC

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

配置SYS

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

配置時(shí)鐘樹(shù)

(3)配置GPIO

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

(4)配置串口1

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?(5)配置定時(shí)器

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?(6)開(kāi)啟定時(shí)器中斷

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

(7)設(shè)置路徑、生成代碼工程?

5、Keil5代碼

(1)勾選Use?MicroLIB

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?

(2)創(chuàng)建SR04.c和SR04.h文件

(3)添加上述的SR04.c文件進(jìn)工程

——————上述兩步參考之前系列教學(xué)步驟,在此不再贅述(點(diǎn)擊跳轉(zhuǎn))

(4)SR04.c和SR04.h代碼

SR04.h

#ifndef __SR04_H
#define __SR04_H
#include "main.h"
#include "tim.h"
#include "stdio.h"

#define TRIG_H  HAL_GPIO_WritePin(Trig_GPIO_Port,Trig_Pin,GPIO_PIN_SET)
#define TRIG_L  HAL_GPIO_WritePin(Trig_GPIO_Port,Trig_Pin,GPIO_PIN_RESET)

void delay_us(uint32_t us);
void SR04_GetData(void);

#endif

SR04.c

#include "SR04.h"

float distant;      //測(cè)量距離
uint32_t measure_Buf[3] = {0};   //存放定時(shí)器計(jì)數(shù)值的數(shù)組
uint8_t  measure_Cnt = 0;    //狀態(tài)標(biāo)志位
uint32_t high_time;   //超聲波模塊返回的高電平時(shí)間


//===============================================讀取距離
void SR04_GetData(void)
{
switch (measure_Cnt){
	case 0:
         TRIG_H;
         delay_us(30);
         TRIG_L;
    
		measure_Cnt++;
		__HAL_TIM_SET_CAPTUREPOLARITY(&htim2, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);
		HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);	//啟動(dòng)輸入捕獲       或者: __HAL_TIM_ENABLE(&htim5);                                                                                    		
        break;
	case 3:
		high_time = measure_Buf[1]- measure_Buf[0];    //高電平時(shí)間
         printf("\r\n----高電平時(shí)間-%d-us----\r\n",high_time);							
		distant=(high_time*0.034)/2;  //單位cm
        printf("\r\n-檢測(cè)距離為-%.2f-cm-\r\n",distant);          
		measure_Cnt = 0;  //清空標(biāo)志位
        TIM2->CNT=0;     //清空計(jì)時(shí)器計(jì)數(shù)
		break;
				
	}
}


//===============================================us延時(shí)函數(shù)
    void delay_us(uint32_t us)//主頻72M
{
    uint32_t delay = (HAL_RCC_GetHCLKFreq() / 4000000 * us);
    while (delay--)
	{
		;
	}
}

//===============================================中斷回調(diào)函數(shù)
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)//
{
	
	if(TIM2 == htim->Instance)// 判斷觸發(fā)的中斷的定時(shí)器為TIM2
	{
		switch(measure_Cnt){
			case 1:
				measure_Buf[0] = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);//獲取當(dāng)前的捕獲值.
				__HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CHANNEL_1,TIM_ICPOLARITY_FALLING);  //設(shè)置為下降沿捕獲
				measure_Cnt++;                                            
				break;              
			case 2:
				measure_Buf[1] = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);//獲取當(dāng)前的捕獲值.
				HAL_TIM_IC_Stop_IT(&htim2,TIM_CHANNEL_1); //停止捕獲   或者: __HAL_TIM_DISABLE(&htim5);
				measure_Cnt++;  
                         
		}
	
	}
	
}

(5)usrat.c代碼添加

/* USER CODE BEGIN 0 */
#include "stdio.h"
/* USER CODE END 0 */
 
 
 
/* USER CODE BEGIN 1 */
/*********************************************************
*
*重定義 fputc 函數(shù)
*
*********************************************************/
int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY );
	return ch;
}
/* USER CODE END 1 */

(6)main函數(shù)

#include "SR04.h"


int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM2_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
      
      SR04_GetData(  );
      HAL_Delay(1500);
      
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

6.接線圖及效果

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

?10cm測(cè)距

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32

stm32f1 hal 超聲波測(cè)距,STM32(HAL庫(kù))外設(shè)實(shí)戰(zhàn),嵌入式硬件,單片機(jī),stm32文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-785711.html

本例程源碼下載:點(diǎn)擊跳轉(zhuǎn)?

到了這里,關(guān)于STM32系列(HAL庫(kù))——F103C8T6通過(guò)HC-SR04超聲波模塊實(shí)現(xiàn)測(cè)距的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • stm32(F103c8t6)自學(xué)筆記@阿布君

    stm32(F103c8t6)自學(xué)筆記@阿布君

    1.注意頭文件和C文件的包含關(guān)系,C文件自身應(yīng)包含自身的H頭文件以及用到的外部頭文件,而自身頭文件只需包含頭文件需要用到的資源文件即可。 參考文獻(xiàn):http://t.csdn.cn/o2GmL 注釋: 紅色 表示:與電源相關(guān) 藍(lán)色 是最小系統(tǒng)相關(guān)的引腳 綠色 是IO口、功能口 S代表電源、I代表

    2024年02月03日
    瀏覽(27)
  • STM32 F103C8T6學(xué)習(xí)筆記7:雙機(jī)無(wú)線串口通信

    STM32 F103C8T6學(xué)習(xí)筆記7:雙機(jī)無(wú)線串口通信

    今日嘗試配通倆個(gè)C8T6單片機(jī)之間的無(wú)線串口通信,文章提供原理,源碼,測(cè)試效果圖,測(cè)試工程下載: 目錄 傳輸不規(guī)范問(wèn)題: 串口通信資源: 單個(gè)串口資源理解: 單片機(jī)串口資源: 測(cè)試目標(biāo)與測(cè)試硬件連接: 串口初始化與串口中斷接收邏輯: 串口初始化: 初步測(cè)試能否

    2024年02月09日
    瀏覽(17)
  • STM32 F103C8T6學(xué)習(xí)筆記12:紅外遙控—紅外解碼-位帶操作

    STM32 F103C8T6學(xué)習(xí)筆記12:紅外遙控—紅外解碼-位帶操作

    今日學(xué)習(xí)一下紅外遙控的解碼使用,紅外遙控在日常生活必不可少,它的解碼與使用也是學(xué)習(xí)單片機(jī)的一個(gè)小過(guò)程,我們將通過(guò)實(shí)踐來(lái)實(shí)現(xiàn)它。 文章提供源碼、測(cè)試工程下載、測(cè)試效果圖。 目錄 紅外遙控原理: ?紅外遙控特點(diǎn): 紅外發(fā)射裝置: ?紅外接收示意圖: ?NEC協(xié)議

    2024年02月11日
    瀏覽(22)
  • STM32CubeIDE + HAL + STM32f103C8T6 系列教程1 ---板載PC13LED閃爍

    STM32CubeIDE + HAL + STM32f103C8T6 系列教程1 ---板載PC13LED閃爍

    之前的系列教程都是基于Arduino的,但是公司招聘51和stm32的開(kāi)發(fā)還是多些,所以特別開(kāi)了一個(gè)stm32的系列。 這個(gè)系列特點(diǎn)是注重了 Arduino 編程思維和習(xí)慣下向STM32開(kāi)發(fā)的過(guò)渡 。前期沒(méi)有涉及到太多寄存器相關(guān)的知識(shí),利用HAL庫(kù)和STM32CubeIDE快速入手STM32的數(shù)字輸入/輸出、模擬輸

    2024年02月16日
    瀏覽(20)
  • STM32 F103C8T6學(xué)習(xí)筆記1:開(kāi)發(fā)環(huán)境與原理圖的熟悉

    STM32 F103C8T6學(xué)習(xí)筆記1:開(kāi)發(fā)環(huán)境與原理圖的熟悉

    作為一名大學(xué)生,學(xué)習(xí)單片機(jī)有一段時(shí)間了,也接觸過(guò)嵌入式ARM的開(kāi)發(fā),但從未使用以及接觸過(guò)STM32C8T6大開(kāi)發(fā)使用,于是從今日開(kāi)始,將學(xué)習(xí)使用它~ 本文介紹STM32C8T6最小系統(tǒng)開(kāi)發(fā)環(huán)境搭建注意問(wèn)題,STM32C8T6單片機(jī)資源介紹, 目錄 開(kāi)發(fā)環(huán)境與下載問(wèn)題: 1.電腦上需要安裝相應(yīng)

    2024年02月14日
    瀏覽(24)
  • STM32 F103C8T6學(xué)習(xí)筆記3:串口配置—串口收發(fā)—自定義Printf函數(shù)

    STM32 F103C8T6學(xué)習(xí)筆記3:串口配置—串口收發(fā)—自定義Printf函數(shù)

    今日學(xué)習(xí)使用STM32 C8T6的串口,我們?cè)诮?jīng)過(guò)學(xué)習(xí)筆記2的總結(jié)歸納可知,STM32 C8T6最小系統(tǒng)板上有三路串口,如下圖: ?今日我們就著手學(xué)習(xí)如何配置開(kāi)通這些串口進(jìn)行收發(fā),這里不講串口通信概念與基礎(chǔ),可以自行網(wǎng)上查找,本文直接開(kāi)始介紹庫(kù)函數(shù)與編程實(shí)現(xiàn): ? ? ? ? ?

    2024年02月10日
    瀏覽(29)
  • STM32F103C8T6(HAL庫(kù))驅(qū)動(dòng)舵機(jī)

    STM32F103C8T6(HAL庫(kù))驅(qū)動(dòng)舵機(jī)

    常見(jiàn)的舵機(jī)分為360°和180°兩種,本次對(duì)180°舵機(jī)進(jìn)行驅(qū)動(dòng),舵機(jī)驅(qū)動(dòng)需要通過(guò)PWM信號(hào)進(jìn)行驅(qū)動(dòng)。本文通過(guò)定時(shí)器中的PWM信號(hào)設(shè)定使得SG90舵機(jī)進(jìn)行不同角度的轉(zhuǎn)動(dòng)。 對(duì)于舵機(jī)的驅(qū)動(dòng),需要20ms的脈沖,高電平時(shí)間在0.5ms-2.5ms區(qū)間即可控制舵機(jī)在0-180°角度進(jìn)行轉(zhuǎn)動(dòng)。常見(jiàn)角度對(duì)應(yīng)

    2024年02月05日
    瀏覽(23)
  • STM32 F103C8T6學(xué)習(xí)筆記4:時(shí)鐘樹(shù)、滴答計(jì)時(shí)器、定時(shí)器定時(shí)中斷

    STM32 F103C8T6學(xué)習(xí)筆記4:時(shí)鐘樹(shù)、滴答計(jì)時(shí)器、定時(shí)器定時(shí)中斷

    今日理解一下STM32F103 C8T6的時(shí)鐘與時(shí)鐘系統(tǒng)、滴答計(jì)時(shí)器、定時(shí)器計(jì)時(shí)中斷的配置,文章提供原理,代碼,測(cè)試工程下載。 目錄 時(shí)鐘樹(shù)與時(shí)鐘系統(tǒng): 滴答計(jì)時(shí)器: 定時(shí)器計(jì)時(shí)中斷: 測(cè)試結(jié)果: 測(cè)試工程下載: 該系統(tǒng)介紹在 STM32F10x-中文參考手冊(cè) P56頁(yè)開(kāi)始 微控制器的時(shí)鐘系

    2024年02月13日
    瀏覽(32)
  • STM32 F103C8T6學(xué)習(xí)筆記8:0.96寸單色OLED顯示屏顯示字符

    STM32 F103C8T6學(xué)習(xí)筆記8:0.96寸單色OLED顯示屏顯示字符

    使用STM32F103 C8T6 驅(qū)動(dòng)0.96寸單色OLED顯示屏: OLED顯示屏的驅(qū)動(dòng),在設(shè)計(jì)開(kāi)發(fā)中OLED顯示屏十分常見(jiàn),因此今日學(xué)習(xí)一下。一篇文章從程序到顯示都講通。 文章提供源碼、原理解釋、測(cè)試工程下載,測(cè)試效果圖展示。 ? 目錄 OLED驅(qū)動(dòng)原理—IIC通信: SSD1306 單色 0.96 OLED 顯示屏特性

    2024年02月12日
    瀏覽(23)
  • STM32F103C8T6(HAL庫(kù)函數(shù) - 內(nèi)部Flash操作)

    STM32F103C8T6(HAL庫(kù)函數(shù) - 內(nèi)部Flash操作)

    STM32F103C8T6 內(nèi)部Flash 為 64KB,本次將對(duì)他多余空間進(jìn)行讀寫。 數(shù)據(jù)手冊(cè)下載 STM32F103x8/STM32F103xB 數(shù)據(jù)手冊(cè) 包含F(xiàn)lash Memory Page分布 STM32F設(shè)備命名 設(shè)備容量類型 中容量類型 內(nèi)部空間介紹 Flash Memory 從 0x0800 0000 ~ 0x0801 FFFF 頁(yè)分布1K每頁(yè), STM32F103C8T6 只有64KByte, 那就是64頁(yè) 使用 controll

    2024年01月21日
    瀏覽(31)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包