STM32 | 超声波写倒车雷达小系统

2024-06-01 22:20

本文主要是介绍STM32 | 超声波写倒车雷达小系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01、知识回顾

STM32 | HC-SR04 超声波测距模块 | DHT11数字温湿度传感器(第七天)
STM32 | 数字温湿度传感器DHT11
STM32 | HC-SR04 超声波测距模块
STM32 | DHT11数字温湿度传感器实战
STM32 | 超声波实战
STM32 | 方式1:手机发送指令,开发板向手机发送温湿度;方式2:手机发送指令,开发板定时向手机发送温湿度。

02、作业2

2、写倒车雷达小系统

(1)超声波模块实时测量距离,并实时显示在电脑串口助手 

(2)可通过按键调节安全报警距离

(3)开发板4个LED灯表示危险等级(共四个等级),越危险,亮灯个数越多

(4)开发板蜂鸣表示危险等级(共四个等级),越危险,蜂鸣器响应频率越快

(5)系统要考虑人性化

03、led

// 头文件#ifndef __LED_H#define __LED_H#include "stm32f4xx.h"#define LED0_ON    GPIO_ResetBits(GPIOF, GPIO_Pin_9)#define LED0_OFF  GPIO_SetBits(GPIOF, GPIO_Pin_9)#define LED1_ON    GPIO_ResetBits(GPIOF, GPIO_Pin_10)#define LED1_OFF  GPIO_SetBits(GPIOF, GPIO_Pin_10)#define LED2_ON    GPIO_ResetBits(GPIOE, GPIO_Pin_13)#define LED2_OFF  GPIO_SetBits(GPIOE, GPIO_Pin_13)#define LED3_ON    GPIO_ResetBits(GPIOE, GPIO_Pin_14)#define LED3_OFF  GPIO_SetBits(GPIOE, GPIO_Pin_14)void Led_Init(void);#endif_____________________________________//源文件#include "led.h"/*********************************引脚说明:LED0 -- PF9LED1 -- PF10LED2 -- PE13LED3 -- PE14**********************************/void Led_Init(void){  GPIO_InitTypeDef  GPIO_InitStruct;    //使能GPIOE组时钟  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);      //使能GPIOF组时钟  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);      GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_9|GPIO_Pin_10;    //引脚9 10  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;  //输出模式  GPIO_InitStruct.GPIO_OType  = GPIO_OType_PP;  //推挽输出  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;    //上拉  GPIO_InitStruct.GPIO_Speed  = GPIO_Speed_50MHz; //速度   GPIO_Init(GPIOF, &GPIO_InitStruct);    GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_13|GPIO_Pin_14;    //引脚13 14  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;  //输出模式  GPIO_InitStruct.GPIO_OType  = GPIO_OType_PP;  //推挽输出  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;    //上拉  GPIO_InitStruct.GPIO_Speed  = GPIO_Speed_50MHz; //速度   GPIO_Init(GPIOE, &GPIO_InitStruct);      GPIO_SetBits(GPIOF, GPIO_Pin_9);  GPIO_SetBits(GPIOF, GPIO_Pin_10);  GPIO_SetBits(GPIOE, GPIO_Pin_13);  GPIO_SetBits(GPIOE, GPIO_Pin_14);}

04、Key

// 头文件#ifndef __KEY_H#define __KEY_H#include "stm32f4xx.h"void Key_Init(void);#endif// 源文件#include "key.h"/*********************************引脚说明:KEY0--PA0KEY1--PE2KEY2--PE3KEY3--PE4**********************************/void Key_Init(void){  GPIO_InitTypeDef  GPIO_InitStruct;      //使能GPIOA组时钟  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  //使能GPIOE组时钟  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);      GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_0;                //引脚0  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IN;                //输入模式  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;                //上拉  GPIO_Init(GPIOA, &GPIO_InitStruct);      GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;    //引脚2 3 4  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IN;                //输入模式  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;                //上拉  GPIO_Init(GPIOE, &GPIO_InitStruct);  }

05、EXti

EXTI是外部中断(External Interrupt)的缩写,它是指在微处理器或微控制器上用于处理外部触发的中断请求的机制。通过配置外部中断,可以让系统在外部事件发生时中断当前程序的执行,转而处理外部事件。

在很多嵌入式系统中,外部中断是一种常见的事件处理方式,用于实时响应外部输入信号或事件。外部中断可以来自外部的触发信号,如按键、传感器信号、外部设备的信号等。

使用外部中断时,需要配置相应的中断触发条件和中断服务程序。当外部中断触发条件满足时,系统会立即响应中断,并执行相应的中断服务程序来处理事件。外部中断的优点是能够及时响应外部事件,实现实时性。

在一些嵌入式开发平台(如STM32系列微控制器)中,通常会提供专门的外部中断控制器(比如EXTI模块),开发者可以通过配置相应的寄存器来实现外部中断的设置和使用。通过外部中断机制,可以简化对外部事件的处理,提高系统的响应速度和灵活性。

// 头文件#ifndef __EXTI_H#define __EXTI_H#include "stm32f4xx.h"void Exti_PA0_Init(void);void Exti_PE2_Init(void);void Exti_PE3_Init(void);void Exti_PE4_Init(void);int get_value(void);#endif

这篇关于STM32 | 超声波写倒车雷达小系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022257

相关文章

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.