一、硬件设计介绍
选用的霍尔传感器是一个开关量,把它看成一个按键即可。
当霍尔传感器触发时,输出低电平(0)。
当霍尔传感器没有被触发时,输出高电平(1)。
这里选用的是P136引脚。
二、引脚初始化
void hall_init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct.GPIO_Ctrl = GPIO_Control_DIG;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;//不进行上下拉,电平取决于外部电压
GPIO_Init(GPIO_PORT13, &GPIO_InitStruct);
}
三、霍尔传感器识别
这里对识别结果进行一个取反:
如果识别到霍尔传感器输出1。
如果没有识别到霍尔传感器输出0。
#define HALL GPIO_ReadInputDataBit(GPIO_PORT13,GPIO_Pin_6)
unsigned char hall_scan(void)//霍尔扫描
{
unsigned char on = 0;
if(HALL) on = 0;
else on = 1;
return on;
}
四、H文件编写
#ifndef _HALL_H_
#define _HALL_H_
#include "gpio.h"
void hall_power_init(void);
void hall_init(void);
unsigned char hall_scan(void);//霍尔扫描
#endif
五、总结
霍尔传感器相当于一个开关,选用引脚时只需要选用通用的GPIO口即可。
各个型号的霍尔传感器输出高低电平可能不一致,本例程只提供参考。