此代码的格式可以直接烧录到STMF03C8T6最小系统中,烧录在其它芯片需要自己进行代码移植,功能是使用超声波模块进行测距,距离会显示在OLED屏幕上,并且当测量到的数据小于设定的范围是,蜂鸣器报警,可以适用在智能小车的倒车提示功能上。因为三个模块的代码过多,只展示一部分,完整代码私聊拿。


超声波测距模块代码:
.c文件

#include "stm32f10x.h"                  // Device header#include "HCSR04.h"
#include "delay.h"int N=0;
float distance=0;
void My_CSB_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//GPIO初始化,定时器初始化,初始化外部中断RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     //使能PB端口时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//PB10-Trig(输入)所以PB6是输出模式 PB11-Echo(输出)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//TrigGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//EchoGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;          //下拉输入GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        GPIO_Init(GPIOB, &GPIO_InitStructure);//溢出时间tim=(arr+1)*(psc+1)/72000000    50000*72/72000000=500msTIM_TimeBaseStructure.TIM_Period = 49999;TIM_TimeBaseStructure.TIM_Prescaler = 72-1;TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//使能中断 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //先占优先级2级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //从优先级0级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM2, ENABLE);
}
void TIM2_IRQHandler(void)
{if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET){N += 1;          }TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除中断标志位
}int count=0;
float Distance(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_10);//预先拉低Trig引脚GPIO_SetBits(GPIOB, GPIO_Pin_10);delay_us(20);GPIO_ResetBits(GPIOB, GPIO_Pin_10);//发出10us的脉冲while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0);    //等待信号发出,信号发出,计数器置0,信号发出,变为高电平,引脚置1
//N=0;TIM2->CNT=0;//us级别读取while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 1); //等待信号接受,信号发出过程中,引脚一直置位1 count=TIM2->CNT;
//单位cm
//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.5;                    return distance;
}

.h文件

#ifndef __HCSR04_H
#define __HCSR04_H
#include "sys.h"void My_CSB_Init(void);//初始化
float Distance(void);//距离#endif

STM32基础——超声波测距+OLED显示+蜂鸣器报警相关推荐

  1. 超声波测距+OLED显示

    文章目录 超声波测距+OLED显示 超声波 STM32引脚配置 代码 启动超声波模块 接收超声波数据回传 超声波测距+OLED显示 超声波模块使用的是HC-SR04模块,单片机使用的是STM32F40 ...

  2. 超声波测距OLED显示

    文章目录 一.前言 二.超声波模块介绍 1.超声波模块 2.HC-SR04模块 三.硬件连接 四.软件代码 五.效果展示 六.代码链接 一.前言 超声波模块是通过声音的传播进行测距,声音传播的速度与所 ...

  3. Arduino+HC-SR04超声波模块+OLED显示

    Arduino+HC-SR04超声波模块+OLED显示 1)超声波测距的代码从我之前发的文章中学习 使用HC-SR04超声波模块与Arduino结合进行测距并串口显示 2)OLED的显示也可以从下面这 ...

  4. STM32用超声波测距模块实现测距

    STM32用超声波测距模块实现测距 通过超声波测距模块可以实现超声波反射型距离测试.市面上的超声波测距模块主要有两种.一种是分体式模块(HC-SR04等),由超生波发射头和接收头组成,一种是一体式模块 ...

  5. arduino+水位传感器+led显示+蜂鸣器报警

    实验准备: arduino mega2560(uno.Nano及其他型号同理) led(黄.绿.红) 电阻x3(本次选用680Ω电阻1/4w金属膜电阻,避免led灯烧坏注意电阻值不要太小) 蜂鸣器(这 ...

  6. 超声波测距LCD1602显示

    超声波测距模块: 1.采用IO口TRIG触发测距,给至少10us的高电平信号: 2.模块自动发送8个40khz的方波,自动检测是否有信号返回: 3.有信号返回,通过IO口ECHO输出一个高电平,高电平 ...

  7. STM32中断中调用OLED显示出现OLED花屏

    STM32中断中调用OLED显示出现OLED花屏 在TIM5中断处理函数中,我写了OLED显示,经过DEBUG发现程序执行到OLED显示语句的时候,OLED就会花屏. //中断服务处理函数 void ...

  8. 超声波测距1602显示程序

    超声波测距1602显示程序 1.intrins.c 2.1602led.c 3.boardinit.c 4.delay.c #include <reg52.H> //机器器件配置文件 #i ...

  9. 【在线仿真】Arduino 超声波测距+LCD1602显示

    [在线仿真]Arduino 超声波测距+LCD1602显示 程序代码 /*LiquidCrystal Library - Hello WorldThis sketch prints "Hel ...

最新文章

  1. 四层和七层交换技术-loadbalance
  2. 37.操作系统的信号量
  3. centos修改ip mac等
  4. Java并发与锁设计实现详述 - Java中的Condition
  5. NP完全性理论与近似算法
  6. 收藏!企业数据安全防护5条建议
  7. 作者:​邓波(1973-),男,博士,北京系统工程研究所研究员。
  8. XML文件处理的思考
  9. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较
  10. MediaBuffer使用要点
  11. vue keep-alive
  12. atomsphere scattering almost final.
  13. 人机工程学座椅设计_人体工程学与座椅设计.ppt
  14. python实现蒙特卡洛模拟_蒙特卡洛模拟(Python)深入教程
  15. 计网学习记录,burp抓包等学习记录
  16. 进制转换函数 Java
  17. tp6 SQL调试常用操作
  18. 新唐NUC972 ARM9 内置DDR2 最大128MB 11路UART 电表 集中器 充电桩
  19. VMware设置虚拟机连接内外网
  20. 产品Backlog 管理

热门文章

  1. 上海计算机考试分值,上海高考科目及分值
  2. 普通话测试软件字体怎么调整,新版普通话测试管理系统的几个常见问题
  3. 为了彻底搞清楚数据库 E-R 模型设计,我肝了这篇万字长文
  4. 生命起源过程“消失环节”现形
  5. mapboxGL中多图标加载的实现
  6. 你真的知道如何在B站赚钱吗?
  7. 搜狗输入法 android 历史版本,搜狗输入法老版本下载
  8. 高效程序猿的狂暴之路
  9. PSPACE完全性学习笔记
  10. Hadoop生态系统官网、下载地址、文档