《SLAM机器人基础教程》第三章 单片机与STM32:超声测距实验

本次碰撞模块使用开关按键式碰撞,开关按键常常伴有抖动,因此需要软件消除抖动。

d.编程及运行

(1)初始化

void initSonar(void) { GPIO_InitTypeDef GPIO_InitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; //Config Clock 配置时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //TRIG IO GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStruct);//传入结构体GPIO_InitStruct,配置GPIOC //ECHO IO GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD; //下拉输入 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStruct); //timer TIM_TimeBaseStruct.TIM_ClockDivision = 0; //时钟分割,不分割,即为该定制器时钟最大值72M TIM_TimeBaseStruct.TIM_Prescaler = 719; //预分频值,719+1分频,即计数频率100K频率 TIM_TimeBaseStruct.TIM_Period = 10000; //最大计数值,最长计时10000/100K s=0.1s TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStruct); //传入结构TIM_TimeBaseStruct,配置TIM4 TIM_ARRPreloadConfig(TIM2, ENABLE);//开启自动装载 TIM_Cmd(TIM2, DISABLE); //关闭TIM2 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfjjf.html