野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19341|回复: 2

stm32超声波模块测距程序

[复制链接]
发表于 2014-7-18 17:49:24 | 显示全部楼层 |阅读模式
#include "stm32f10x_tim.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"


void LED_Init(void)
{

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;       
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //*管配置管家
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 
GPIO_Init(GPIOA, &GPIO_InitStructure);                                         
GPIO_SetBits(GPIOA,GPIO_Pin_All);                                                 

       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);       
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;                                 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                // * trlg控制管家配置
GPIO_Init(GPIOB, &GPIO_InitStructure);                                       
GPIO_SetBits(GPIOB,GPIO_Pin_7);                                               

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                               
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;             / / * echo接收管脚配置       
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
GPIO_Init(GPIOB, &GPIO_InitStructure);                                                          
}
void Tim2_Init(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef          TIM_OCInitStructure;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);        //  时钟配置 求大神看一下这里是否有错误!!
        TIM_DeInit(TIM2);
        TIM_TimeBaseStructure.TIM_Period = 20000;
        TIM_TimeBaseStructure.TIM_Prescaler =36000;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
        TIM_Cmd(TIM2,ENABLE);
        TIM_ClearFlag(TIM2,TIM_FLAG_Update);
        TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
}
int main(void)
  {               
        const u16 a[10] ={0xd00,0xfddf,0xb04,0x944,0x9c2,0x960,0x920,0xdc4,0x900,0x940 };
        u8 t=0;
        u16 time,juli,i;
        delay_init();          
        NVIC_Configuration();          
        uart_init(9600);
        LED_Init();
        Tim2_Init();
        while(1)
                {
                  GPIO_SetBits(GPIOB,GPIO_Pin_7);
                  TIM2->CNT=0;
                  TIM_Cmd(TIM2,ENABLE);
                  delay_us(1000);
                  GPIO_ResetBits(GPIOB,GPIO_Pin_7);
                        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)==1)
                        {
                                TIM_Cmd(TIM2,DISABLE);
                                time=TIM2->CNT;     //* 这个time为什么一直是0?
                               
                        }
                juli=340*(time/2);
                i=juli%10;
                GPIO_Write(GPIOA,a[i]);
          delay_ms(1000);
}


}
       
经ST-LINK调试 那个time一直为零 这是为什么 程序那里有错误,
       

回复

使用道具 举报

发表于 2014-7-18 17:50:32 | 显示全部楼层
独立来测试,先直接开启定时器看看是否正常,再加入超声波检测触发
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-18 20:57:38 | 显示全部楼层
慕娅娜 发表于 2014-7-18 17:50
独立来测试,先直接开启定时器看看是否正常,再加入超声波检测触发

有时间但是不准确 是不是我的程序哪里有错误
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-15 12:52 , Processed in 0.037080 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表