本文主要是介绍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 -- PF9
LED1 -- PF10
LED2 -- PE13
LED3 -- 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--PA0
KEY1--PE2
KEY2--PE3
KEY3--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 | 超声波写倒车雷达小系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!