• 大小: 7KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: 其他
  • 标签:

资源简介

stm32RCT6多路超声波模块测距(多路定时器输入捕获),效果很好 几年前传不需要50个字描述,现在为了把系统自动设置的9积分下载改为5积分,就多打了这些字。

资源截图

代码片段和文件信息

#include “stm32f10x.h“
#include “sys.h“
#include “delay.h“
#include “usart.h“
#include “led.h“
#include “pwm.h“
#include “timer2.h“
#include “lcd.h“
#include “bizhang.h“
#include “maichong.h“
/////////////////////////////////////////////////////////////////////////////////////////////
//开发板型号:Mini STM32开发板
//芯片类型:STM32F103RCT6
//作者:IterrlpointC
//版本:V1.0
//文件名:主函数    
//描述:函数初始化及主程序
//修改日期:2016/12/10
//修改内容:无
//修改原因:无
//Copyright(C)2016-Pattern recognitionIterrlpointC.All rights reserved
/////////////////////////////////////////////////////////////////////////////////////////////

extern u8    TIM2CH1_CAPTURE_STA;                             //输入捕获状态
extern u16  TIM2CH1_CAPTURE_VAL_STATIM2CH1_CAPTURE_VAL_END; //输入捕获开始值,输入捕获结束值
extern u8    TIM2CH2_CAPTURE_STA;                           //输入捕获状态     
extern u16   TIM2CH2_CAPTURE_VAL_STATIM2CH2_CAPTURE_VAL_END; //输入捕获开始值,输入捕获结束值
int main(void)
 {
u8  lcd_id[12];                                  //存放LCD ID字符串
u16 Distance_MidDistance_Right;                 //中间距障距离,右边距障距离
u32 temp1_TC1=0temp2_TC2=0;                     //捕获通道1捕获溢出次数,捕获通道2捕获溢出次数
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //设置中断优先级分组2
delay_init();                                   //延时函数初始化
uart_init(9600);                            //设置串口值为9600  
LED_Init();                                   //初始化与LED连接的硬件接口
LCD_Init();                                      //初始化LCD液晶显示函数
MaiChong_Init();                                 //初始化脉冲发送函数
  TIM3_PWM_Init(8990);                       //定时器3不分频,PWM频率=72MHz/(899+1)=80Khz
  TIM2_Cap_Init(999972-1);                      //定时器2分频系数72,频率=72MHz/(71+1)=1MHz
houtui_Init();                                   //初始化小车后退函数
qianjin1_Init();                                 //初始化小车正常前进函数
qianjin2_Init();                                 //初始化警报区小车前进函数
zuozhuang_Init();                                //初始化小车左转函数
sprintf((char*)lcd_id“LCD ID:%04X“lcddev.id);  //将LCD ID打印到lcd_id数组
 
 while(1)
{
/*********************************TIM2通道2输入捕获高电平计算距离******************************/  
MaiChong1_Start();                                   //给第一个超声波模块发送脉冲
if(TIM2CH1_CAPTURE_STA&0X80)                            //若成功捕获到了一次高电平(最高位是1)
{
temp1_TC1=TIM2CH1_CAPTURE_STA&0X3F;                 //将计数器溢出次数值赋给temp1_TC1
temp1_TC1*=10000;                           //溢出次数*重装载值=溢出计数个数总和
if(TIM2CH1_CAPTURE_VAL_END>=TIM2CH1_CAPTURE_VAL_STA)//如果结束值大于等于初始值
{
 temp1_TC1+=(TIM2CH1_CAPTURE_VAL_END-TIM2CH1_CAPTURE_VAL_STA+1);//得到总的高电平时间=溢出总计数个数+最后一次高电平的时间
}
else                                                //如果结束值小于初始值(说明发生至少一次溢出)                       
  {
 temp1_TC1+=(TIM2CH1_CAPTURE_VAL_STA-TIM2CH1_CAPTURE_VAL_END+1);//得到总的高电平时间=
}
TIM2CH1_CAPTURE_VAL_STA=TIM2CH1_CAPTURE_VAL_END=0;  //结束值和初始值清零
Distance_Mid=temp1_TC1/1000000.0*340/2.0*1000;      //中间距障距离
  TIM2CH1_CAPTURE_STA=0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-05-01 11:05  避障\
     目录           0  2018-05-01 10:30  避障\MAICHONG\
     文件        2590  2018-05-01 10:30  避障\MAICHONG\maichong.c
     文件         807  2018-05-01 10:30  避障\MAICHONG\maichong.h
     文件        6432  2018-05-01 10:30  避障\main.c
     目录           0  2018-05-01 10:30  避障\TIMER2\
     文件        7778  2018-05-01 10:30  避障\TIMER2\timer2.c
     文件         691  2018-05-01 10:30  避障\TIMER2\timer2.h
     文件          56  2018-05-01 11:06  避障\新建文本文档.txt

评论

共有 条评论

相关资源