基于MSP432P410R的HC-SR04超声波程序

发布者:SparklingBeauty最新更新时间:2022-07-25 来源: csdn关键字:HC-SR04 手机看文章 扫描二维码
随时随地手机看文章

代码

//HCSR04.h配置

 

#ifndef _HCSR04_H

#define _HCSR04_H

 

#include  "main.h" 

 

void HCSR04Init(void);

float Distance(void);

 

 

#endif

//HCSR04.c配置

 

#include "HCSR04.h"

 

#include "main.h"

 

 

 

const Timer_A_UpModeConfig upConfig =

{

        TIMER_A_CLOCKSOURCE_SMCLK,              // SMCLK Clock Source

        TIMER_A_CLOCKSOURCE_DIVIDER_3,          // SMCLK/1 = 3MHz

        50000,                           // 5000 tick period

        TIMER_A_TAIE_INTERRUPT_DISABLE,         // Disable Timer interrupt

        TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE,    // Enable CCR0 interrupt

        TIMER_A_DO_CLEAR                        // Clear value

};

 

void HCSR04Init(void)

{

 

    MAP_GPIO_setAsOutputPin(GPIO_PORT_P9, GPIO_PIN2);//tring

MAP_GPIO_setAsInputPin(GPIO_PORT_P5, GPIO_PIN3); 

    MAP_GPIO_setAsInputPinWithPullDownResistor(GPIO_PORT_P5, GPIO_PIN3);

    

MAP_GPIO_disableInterrupt(GPIO_PORT_P9, GPIO_PIN2);

    MAP_GPIO_disableInterrupt(GPIO_PORT_P5, GPIO_PIN3);

 

    MAP_Timer_A_configureUpMode(TIMER_A2_BASE, &upConfig);

 

    MAP_Interrupt_enableSleepOnIsrExit();

    MAP_Interrupt_enableInterrupt(INT_TA1_0);

    MAP_Timer_A_startCounter(TIMER_A2_BASE, TIMER_A_UP_MODE);

    

    MAP_Interrupt_enableMaster();  

 

}

void TA1_0_IRQHandler(void)

{

 

    MAP_Timer_A_clearCaptureCompareInterrupt(TIMER_A2_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_0);

// Timer_A_getCounterValue(uint32_t timer);

}

 

float Distance(void)

{

int count=0,i=0,sum=0;

float distance=0;

while(i!=5)

{

GPIO_setOutputLowOnPin(GPIO_PORT_P9, GPIO_PIN2);//上拉

GPIO_setOutputHighOnPin(GPIO_PORT_P9, GPIO_PIN2);//上拉

delay_us(10);

GPIO_setOutputLowOnPin(GPIO_PORT_P9, GPIO_PIN2);//上拉

        TIMER_A_CMSIS(TIMER_A2_BASE)->R = 0;

while(GPIO_getInputPinValue(GPIO_PORT_P5,GPIO_PIN3) == 0); //

MAP_Interrupt_enableInterrupt(INT_TA1_0);

while(GPIO_getInputPinValue(GPIO_PORT_P5,GPIO_PIN3) == 1);  //

        MAP_Interrupt_disableInterrupt(INT_TA1_0);

count=TIMER_A_CMSIS(TIMER_A2_BASE)->R;

//v = 340m/s = 34000cm/s = 34000cm/10^6us = 0.034cm/us

//s = vt/2 = t*0.034/2 = t*0.017 ?t/58

distance=((float)count / 58);

i++;

sum=sum+distance;

}

return sum/5;

}


//main.c配置

 

#include  "main.h"

#include "HCSR04.h"

#include  "string.h"

#include "stdio.h"

/*  全局变量申明区  */

// u8  a=0;

// u16 len ;

/* 函数调用申明区 */

 

 

int main(void)

    int Distance1;

    WDT_A_holdTimer();

    GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);//led灯

    SystemClockInit(HFXT);//系统时钟初始化(系统主时钟)

    SystemClockInit(DCO);//系统时钟初始化(子系统时钟)

Usart1tInit(); //串口1 初始化

HCSR04Init();

    LedInit();

    while(1)

    {

        Distance1= Distance();

        GPIO_toggleOutputOnPin(GPIO_PORT_P2,GPIO_PIN1);

        printf("Distance = %dmmrn",Distance1);    

        delay_ms(50);

    }

 

}


总结

HC-SR04超声波的配置程序还是很简单的,但是相比STM32,MSP432使用HC-SR04测量出来的距离超过20CM之后就不准确了,原因暂时未知,可能是定时器频率的问题,还有待研究。

关键字:HC-SR04 引用地址:基于MSP432P410R的HC-SR04超声波程序

上一篇:基于MSP432P401R的OLED I2C程序
下一篇:MSP432P401R时钟系统

推荐阅读最新更新时间:2024-11-02 14:22

语音播报超声波测距程序
语音播报超声波测距程序,语音集成电路用ISD4004 SS接P1.2 MOSI接P1.0 MISO接P1.1 SCLK接P1.3。超声波模块用市面上常用的模块。由于超声波属于声波范围,其速度与温度有关,不同温度下超声波在空气中传播速度随温度变化关系:V=331.4+0.61T。所以要是测量结果更加精确需另加温度补偿模块(本实验中采用开发板上的DS18B20温度传感器完成温度补偿)。外围可添加LCD显示(本实验采用开发板1602LCD)和语音播报模块(本实验采用ISD4004语音模块)。 // *********************单片机实验室******************************/ // *功能
[单片机]
超声波PIC程序
//////////////////////////////////////////////////////////////////////////////// // // PIC16F877 + DYP-ME007 + LCD03 example // Written October 2008 , using HITECH PIC16 compiler // // Note - assumes a 20MHz crystal, which is 5MHz timer clock // A 1:4 prescaler is used to give a 1.25MHz timer count (0.8uS p
[单片机]
超声波水位测量控制系统C语言源程序
本文介绍一个超声波水位测量控制系统C语言源程序,本设计的超声波水位测量控制系统是一种利用超声波技术、电子技术、电磁开关技术相结合来实现非接触式液位测量和控制系统,能够在某些特定场合或环境比较恶劣的情况下使用,在工业监测和控制等方面得到了广泛应用。近些年来,工业水平的不断发展对液位测量的精度、广度和抗干扰性提出了越来越高的要求,超声波测距技术本身也在不断的完善和发展,测距仪更趋向小型化和智能化,逐步实现了高精确度、高可靠性、安全性和多功能化。 超声波水位测量控制系统C语言源程序, 电子小制作 可测量并显示液位,还可以通过单片机控制把液位限定在某一范围内,在单片机控制失效的情况下发出报警信号,提醒工作人员进行手动控制。研
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved