stm32智能小车设计_stm32智能小车设计方案

extern u8 TIM2CH4_CAPTURE_STA; //输入捕获状态
extern u16 TIM2CH4_CAPTURE_VAL; //输入捕获值

int main(void)
{
u32 temp=0;
u32 length1;
u32 length2;
u32 length3;
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口初始化 //初始化与LED连接的硬件接口
TIM_PWM1_Init();//10000-1,36-1);//不分频。PWM频率=72M/(0.036M)=2Khz
Echo1=0;
Echo2=0;
Echo3=0;
HCSR04_Init(0XFFFF,72-1);//以1Mhz的频率计数
/*while(1)
{

}*/
while(1)
{
	Echo3=1;
	delay_us(20);
	Echo3=0;
	length1=DIS_Init(&TIM2CH4_CAPTURE_STA,TIM2CH4_CAPTURE_VAL);
	delay_ms(1000);
	Echo1=1;
	delay_us(20);
	Echo1=0;
	length2=DIS_Init(&TIM2CH2_CAPTURE_STA,TIM2CH2_CAPTURE_VAL);
	delay_ms(1000);
	Echo2=1;
	delay_us(20);
	Echo2=0;
	length3=DIS_Init(&TIM2CH3_CAPTURE_STA,TIM2CH3_CAPTURE_VAL);
	printf("%d %d %d\r\n",length1,length2,length3);
//	GO();
	delay_ms(500);
}

}

hcsr.c
#include “sys.h”
#include “delay.h”
#include “usart.h”
#include “hcsr.h”
void HCSR04_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<0; //TIM2时钟使能
RCC->APB2ENR|=1<<2; //使能PORTA时钟
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOA->CRL&=0XFFFF000F;//PA1 清除之前设置
GPIOA->CRL|=0X00008880;//PA1输入
// GPIOA->ODR|=0<<0;
GPIOA->ODR|=0<<1; //PA1下拉
GPIOA->ODR|=0<<2;
GPIOA->ODR|=0<<3;

GPIOB->CRL&=0X000FFFFF;//PB7清除之前设置
GPIOB->CRL|=0X33300000;//PB7推挽输出
GPIOB->ODR|=1<<7;      //PB7 输出高
	GPIOB->ODR|=1<<6;
	GPIOB->ODR|=1<<5;

TIM2->ARR=arr;         //设定计数器自动重装值
TIM2->PSC=psc;         //预分频器

TIM2->CCMR1|=1<<8;     //CC2S=01 选择输入端IC1映射到TI1
TIM2->CCMR1|=1<<12;     //IC2F=0001 配置滤波器 以Fck_int采样,两个事件后有效
TIM2->CCMR1|=0<<10;    //IC2PS=00 配置输入分频,不分频

TIM2->CCER|=0<<5;      //CC2P=0 上升沿捕获
TIM2->CCER|=1<<4;      //CC2E=1 允许捕获计数器的值到捕获寄存器中
	
	TIM2->CCMR2|=1<<0;     //CC2S=01 选择输入端IC1映射到TI1
TIM2->CCMR2|=1<<4;     //IC2F=0001 配置滤波器 以Fck_int采样,两个事件后有效
TIM2->CCMR2|=0<<2;    //IC2PS=00 配置输入分频,不分频

TIM2->CCER|=0<<9;      //CC2P=0 上升沿捕获
TIM2->CCER|=1<<8;      //CC2E=1 允许捕获计数器的值到捕获寄存器中
	
	TIM2->CCMR2|=1<<8;     //CC2S=01 选择输入端IC1映射到TI1
TIM2->CCMR2|=1<<12;     //IC2F=0001 配置滤波器 以Fck_int采样,两个事件后有效
TIM2->CCMR2|=0<<10;    //IC2PS=00 配置输入分频,不分频

TIM2->CCER|=0<<13;      //CC2P=0 上升沿捕获
TIM2->CCER|=1<<12;      //CC2E=1 允许捕获计数器的值到捕获寄存器中
	
TIM2->DIER|=1<<2;      //允许捕获中断
	TIM2->DIER|=1<<3;      //允许捕获中断
	TIM2->DIER|=1<<4;      //允许捕获中断
TIM2->DIER|=1<&

你可能感兴趣的:(stm32,单片机,嵌入式硬件)