网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月12日漏签0天
msp430吧 关注:7,572贴子:16,103
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回msp430吧
>0< 加载中...

hcsr04 中遇到的问题 求大佬解惑

  • 只看楼主
  • 收藏

  • 回复
  • 贴吧用户_Gt6W6VA
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用msp432p401r开发板 连接hcsr04超声波测距 改了一点公式让这个模块能测出相对准确的值 但是在测距为20.60cm时 之后的距离都不会再变大了 而是从0开始向上增加


  • 贴吧用户_Gt6W6VA
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void init_hcsr04()
{
//初始化引脚
GPIO_setAsOutputPin(TRIG_PORT, TRIG_PIN);
GPIO_setAsInputPinWithPullDownResistor(ECHO_PORT, ECHO_PIN);
// 配置TA3.0定时器
Timer_A_UpModeConfig initUpModeParam;
initUpModeParam.clockSource= TIMER_A_CLOCKSOURCE_SMCLK;
initUpModeParam.clockSourceDivider= TIMER_A_CLOCKSOURCE_DIVIDER_1;
initUpModeParam.timerPeriod= 48000;
initUpModeParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE;
initUpModeParam.captureCompareInterruptEnable_CCR0_CCIE = TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE;
initUpModeParam.timerClear= TIMER_A_DO_CLEAR;
Timer_A_initUpMode(TIMER_A3_BASE, &initUpModeParam);
// 配置TA3.0定时器的CCR0比较匹配寄存器
Timer_A_clearCaptureCompareInterrupt(TIMER_A3_BASE, TIMER_A_CAPTURECOMPARE_REGISTER_0);
Timer_A_CompareModeConfig initCompareModeParam;
initCompareModeParam.compareRegister= TIMER_A_CAPTURECOMPARE_REGISTER_0;
initCompareModeParam.compareInterruptEnable= TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE;
initCompareModeParam.compareOutputMode= TIMER_A_OUTPUTMODE_OUTBITVALUE;
initCompareModeParam.compareValue= 48000;
Timer_A_initCompareMode(TIMER_A3_BASE, &initCompareModeParam);
Timer_A_startCounter(TIMER_A3_BASE, TIMER_A_UP_MODE);
//输出低电平
GPIO_setOutputLowOnPin(TRIG_PORT, TRIG_PIN);
__delay_cycles(10 * 48); // 10us延时
}
float sonar_cm(void)
{
double distance = 0;
GPIO_setOutputHighOnPin(TRIG_PORT, TRIG_PIN);
__delay_cycles(15 * 48);
GPIO_setOutputLowOnPin(TRIG_PORT, TRIG_PIN);
while(GPIO_getInputPinValue(ECHO_PORT, ECHO_PIN) == 0);
// 计时器开始计时
Timer_A_clear(TIMER_A3_BASE);
uint32_t start_time = Timer_A_getCounterValue(TIMER_A3_BASE);
while(GPIO_getInputPinValue(ECHO_PORT, ECHO_PIN) == 1);
uint32_t end_time = Timer_A_getCounterValue(TIMER_A3_BASE);
uint32_t duration = end_time - start_time;
if(duration > 60)
{
distance = duration * 0.034;
distance = duration / (2 * 58);
//


2025-06-12 07:40:57
广告
  • 贴吧用户_Gt6W6VA
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
// distance = duration * 0.034 /2;
// distance = distance / 100;
}
return distance;
}
int main(void)
{
MAP_WDT_A_holdTimer(); /* Stop Watch dog */
SysInit(); //时钟初始化 48MHz
delay_init(); //延时初始化
uart_init(115200); //串口初始化
init_hcsr04();
MAP_Interrupt_enableMaster(); //开启总中断
printf("Hello MSP432\r\n");
while(1)
{
float dis = sonar_cm();
printf("Distance: %.2fcm\r\n", dis * 0.05);
__delay_cycles(4800000);
}
}


  • 贴吧用户_Gt6W6VA
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回msp430吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示