×
单片机 > 单片机程序设计 > 详情

STM32学习第一周之 红外光电

发布时间:2020-06-05 发布时间:
|

如果红外光电开关检测到障碍物,蜂鸣器响,RGBLED 显示红色,如果没有检测到障碍物,蜂鸣器不响,RGBLED 显示绿色

注意:添加一个 InfraredPSwitch.c 和 InfraredPSwitch.h 文件

InfraredPSwitch.h 文件里面,对红外光电开关使用的引脚和端口进行宏定义

InfraredPSwitch.c 文 件 里 面 , 设 计 一 个 InfraredPSwitch_Init 函 数 , 一 个

InfraredPSwitch_Check()函数,返回值为检测到的状态值


如有好的建议还望不吝赐教嚛


直接上代码

InfrarePSwitch_H


#ifndef __InfrarePSwitch_H

#define __InfrarePSwitch_H  

#include "sys.h"

 

#define  sign  GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_1)  


void InfrarePSwitch_Init(void);

void InfrarePSwitch_Check(void);

 

#endif


InfrarePSwitch.c


#include "sys.h"

#include "delay.h"

#include "RGBLED.h" 

#include "BEEP.h" 

#include "usart.h"

#include "InfrarePSwitch.h"


//初始化PF1口读取光电开关电平

void InfrarePSwitch_Init(void)

{

 

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);  


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;  

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

GPIO_Init(GPIOF, &GPIO_InitStructure);


GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_1);

}


void InfrarePSwitch_Check(void)

{

//GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_1);

if(sign == 0)

{

RGBLED_Display(RED, 1);

BEEP = 0;

}else

{

RGBLED_Display(GREEN, 1);

BEEP = 1;

}

}`


关于RGBLED_Display();还请参见第一篇笔记。

链接呈上 https://mp.csdn.net/mdeditor/90343426#


注意: 采用电源模块为红外光电供电时,注意GND和VCC的连接。

将两个线都接在电源模块上;不要一根接在电源模块,另一根接在开发板上。





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项