STM32 | 超声波实战

时间:2024-06-02 10:20:07
#include "sr04.h"/*********************************引脚说明:PA2做为普通输出(TRIG)PA3做为普通输入(ECHO)**********************************/void Sr04_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; //使能GPIOA组时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //1、能定时器时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; //引脚20 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽输出 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //速度 GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; //引脚3 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; //输入模式 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOA, &GPIO_InitStruct); TIM_TimeBaseInitStruct.TIM_Prescaler = 84-1; // 84分频 84MHZ/84 = 1MHZ TIM_TimeBaseInitStruct.TIM_Period = 50000-1; TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数 TIM_TimeBaseInitStruct.TIM_ClockDivision= TIM_CKD_DIV1;