一、前期准备
单片机:STM32F103ZET6
开发环境:MDK5.14
库函数:标准库V3.5
HC-SR505红外感应模块:淘宝有售
二、实验效果
三、驱动原理
这个模块比较简单,当有人靠近时候其IO输出3.3V,STM32可以直接采集。
需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。
四、驱动代码
HC_SR505.h
#ifndef __HC_SR505_H__
#define __HC_SR505_H__
#include "stm32f10x.h"
#include "gpio.h"
#define HC_SR505 PAin(0)
#define HC_SR505_PIN GPIO_Pin_0
#define HC_SR505PORT GPIOA
#define HC_SR505_CLKLINE RCC_APB2Periph_GPIOA
extern void HC_SR505Configuration(void);
#endif
HC_SR505.c
#include "hc_sr505.h"
void HC_SR505Configuration(void)
{
GPIO_InitTypeDef GPIO;
//Enable APB2 Bus
RCC_APB2PeriphClockCmd(HC_SR505_CLKLINE, ENABLE);
//Register IO
GPIO.GPIO_Pin = HC_SR505_PIN;
GPIO.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(HC_SR505PORT, &GPIO);
}
关键字:HC-SR505 红外感应模块 STM32
引用地址:
HC-SR505红外感应模块驱动(STM32)
推荐阅读最新更新时间:2024-11-09 11:50
STM32 Part number information
STM32 Part number information 如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,则宏定义选择的是STM32F10X_CL;如果是别的型号,则根据FLASH的容量来进行选择。可能文字写的有点不太清楚,还是以表格来说明:
[单片机]
玩转STM32(12)代码存储空间的选择
前面了解了CPU怎么样拥有跳动的心脏,那么它拥有了开启自动化执行的生命之路。如果学习过CPU原理之类的硬件,就知道CPU在每一个脉冲信号之下,就向前运行一步,像168MHz频率的CPU,运行一步是很短的时间。不过CPU运行的原理是很简单的,可以设想纸带上有一些图案,比如圆、三角形、四边形,当这张纸带经过一个机器时,碰到圆就加一,碰到三角形就减一,碰到四边形就输出当前计数,这样简单的机器就是一个计算机所做的事情了。同理,前面CPU运行频率,就是让纸带经过机器的速度,如果频率越高,纸带的速度就快,CPU处理的事情就越多。从这里可以看到,CPU要工作起来,刚刚有运行部件还不行,还得有纸带,纸带上面还得有符号。那么在STM32里,什么是纸
[单片机]
STM32软件层实现原理
一、前言 以STM32为例,打开网络上下载的例程或者是购买开发板自带的例程,都会发现应用层中会有stm32f10x.h或者stm32f10x_gpio.h,这些文件严格来时属于硬件层的,如果软件层出现这些文件会显得很乱。 使用过Linux的童鞋们肯定知道linux系统无法直接操作硬件层,打开linux或者rt_thread代码会发现代码中都会有device的源文件,没错,这就是驱动层。 二、实现原理 原理就是将硬件操作的接口全都放到驱动链表上,在驱动层实现device的open、read、write等操作。当然这样做也有弊端,就是驱动find的时候需要遍历一遍驱动链表,这样会增加代码运行时间。 三、代
[单片机]
STM32单片机的GPIO端口设置
1 寄存器问题 首先要了解什么是寄存器?寄存器是中央处理器CPU内用来暂存指令、数据和地址的存储器,在所有应用单片机来进行各种控制操作时,都是通过设置单片机的内部寄存器来操作单片机的,其思想就是根据每块内存单元所具有功能的不同,给这些地址取一个别名,这个过程也叫作寄存器地址映射。在后面的发展过程中,为了减少直接操作寄存器,又增添了库文件操作,以及后来的CubeMX中设置各种寄存器信息,但寄存器操作是单片机内部基础操作的方式,因此寄存器的操作是很有必要了解一下的。 图1.1 存储结构图 1.1 单片机中的寄存器 单片机中有众多寄存器,在实际单片机操作中应熟练掌握的寄存器有程序状态寄存器PSW,定时器方式控制寄存器TMOD,电源控
[单片机]
keil_提示出错 cannot load flash programming algorithm !
用STM32开发板调试例程时(用的是JLINK),提示出错 cannot load flash programming algorithm ! 遇到这种问题一般都是,Programming algorithm没有添加,或者添加错误, 添加步骤如下: 首先确认,下载器是stlink还是jlink,然后根据步骤1,2,3,4 选择合适的algorithm 就可以。 官方给出ARM调试提示解决方法: http://www.keil.com/support/docs/2747.htm RESOLUTION The programming algorithm depends on the device. For ex
[单片机]
stm32 HAL 库 串口开关 串口接收开关
适用于HAL库 1、串口接收打开或关闭 #define UART_ENABLE_RE(USARTx) USARTx.Instance- CR1|= (uint32_t)0x0004 #define UART_DISABLE_RE(USARTx) USARTx.Instance- CR1&= (~(uint32_t)0x0004) 如使能串口1的接收:UART_ENABLE_RE(huart1); 2、串口打开或者关闭 #define UARTx_ENABLE(USARTx) (USARTx.Instance)- CR1 |= USART_CR1_UE #define UARTx_DI
[单片机]
什么是GPIO? STM32中关于GPIO口的介绍
一、什么是GPIO? GPIO的英文全称是General-Purpose IO ports,也就是通用输入输出口。 在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程I/O端口”,也就是GPIO。 一个GPIO端口至少需要两个寄存器,一个做控制用的“通用IO端口控制寄存器”,还有一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是
[单片机]
STM32串口通信基本原理
介绍串口通信 按照数据传送方向分类 单工 :数据传输只支持数据在一个方向上传输 半双工 :允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口 全双工 :允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端 分别如下图中的a、b、c所示。 按照通信方式分类 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线 在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进
[单片机]