红外对射传感器计次(江科大stm32学习笔记)

本篇文章主要完成红外对射传感器计次的案例,为江科大stm32学习后的笔记记录。

硬件方面

如图所示为本次使用的红外对射传感器,根据相关说明书可知:模块槽中无遮挡时,接收管导通,模块DO输出低电平,遮挡时, DO 输出高电平;且有输出状态指示灯,输出高电平灯灭,输出低电平灯亮。

如图所示,①连接stm32最小系统板的GND和3.3V,以及STLINK。②连接显示屏GND对PB6,VDD对PB7,SCK对PB8,SDA对PB9。③连接红外传感器模块,先连接3.3V和GND,再将DO口接P至B14口。

软件方面

此例主要完成显示屏模块,红外传感器模块的模块化编程。

OLED的.c文件如下:

#include "stm32f10x.h"
#include "OLED_Font.h"

/*引脚配置*/
#define OLED_W_SCL(x)		GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))  //SCL接PB8
#define OLED_W_SDA(x)		GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))  //SDA接PB9

/*引脚初始化*/
void OLED_I2C_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
 	GPIO_Init(GPIOB, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
 	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	OLED_W_SCL(1);
	OLED_W_SDA(1);
}

/**
  * @brief  I2C开始
  * @param  无
  * @retval 无
  */
void OLED_I2C_Start(void)
{
	OLED_W_SDA(1);
	OLED_W_SCL(1);
	OLED_W_SDA(0);
	OLED_W_SCL(0);
}

/**
  * @brief  I2C停止
  * @param  无
  * @retval 无
  */
void OLED_I2C_Stop(void)
{
	OLED_W_SDA(0);
	OLED_W_SCL(1);
	OLED_W_SDA(1);
}

/**
  * @brief  I2C发送一个字节
  * @param  Byte 要发送的一个字节
  * @retval 无
  */
void OLED_I2C_SendByte(uint8_t Byte)
{
	uint8_t i;
	for (i = 0; i < 8; i++)
	{
		OLED_W_SDA(!!(Byte & (0x80 >> i)));
		OLED_W_SCL(1);
		OLED_W_SCL(0);
	}
	OLED_W_SCL(1);	//额外的一个时钟,不处理应答信号
	OLED_W_SCL(0);
}

/**
  * @brief  OLED写命令
  * @param  Command 要写入的命令
  * @retval 无
  */
void OLED_WriteCommand(uint8_t Command)
{
	OLED_I2C_Start();
	OLED_I2C_SendByte
### STM32传感器封装信息 STM32本身是一种微控制器系列,由STMicroelectronics开发,主要用于嵌入应用。它并不直接提供光传感器的功能,而是通过外接专用的光传感器芯片来实现相关功能[^1]。在实际项目中,通常会选用适合特定需求的光传感器模块,并将其连接到STM32的GPIO或其他通信接口上。 对于江科大(江苏科技大学)可能涉及的具体应用场景或课程设计而言,如果需要查找与STM32相关的光传感器封装信息,可以从以下几个方面入手: #### 1. **光传感器的选择** 常见的光传感器包括环境光传感器红外线传感器以及光电二极管等。这些传感器一般采用标准IC封装形,例如TO-92、SMD等形。具体选择取决于目标应用的需求,比如检测距离、灵敏度范围等因素[^3]。 #### 2. **硬件连接方** 当使用SPI、I²C或者UART协议将光传感器接入STM32时,需注意两者之间的电气兼容性和物理尺寸匹配问题。例如某些小型化设计可能会优先考虑表面贴装器件(Surface Mount Device, SMD),以便节省空间并提高可靠性。 #### 3. **软件驱动支持** 针对选定型号的光传感器,在编写程序之前应仔细阅读其数据手册(Data Sheet),了解寄存器配置方法及其工作模设置流程。同时也可以参考官方提供的库函数文档(如`stm32f10x_stdperiph_lib_um.chm`)中的相关内容来进行初始化操作[^2]。 以下是基于假设场景的一个简单代码片段展示如何读取来自某种假定类型的光学感应设备的数据: ```c #include "stm32f1xx_hal.h" void InitializeSensor(void){ GPIO_InitTypeDef gpioStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); // Enable clock for Port A /* Configure pin as input */ gpioStruct.Pin = GPIO_PIN_0; gpioStruct.Mode = GPIO_MODE_INPUT; HAL_GPIO_Init(GPIOA,&gpioStruct); } uint8_t ReadOpticalData(){ return HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值