STM32CubeMX软件配置实现3144E霍尔传感器控制LED灯(二)
·
一 、控制原理
LED灯外部电路为上拉电路,所以单片机给低电平时LED点亮,高电平时熄灭
3144E的霍尔传感器两个引脚分别是3V3和GND,以及一个输出引脚。当无磁场时测得输出引脚与GND之间电压为1.85V,有磁场靠近时该引脚电压为0V。
通过单片机检测引脚状态,来实现LED的亮灭。程序运行前,添加一个LED闪烁动作。当附近无磁场时,LED灯熄灭,有磁场时LED灯点亮
两个LED灯分别是PF9,PF10,霍尔传感器输出引脚使用PC7
二、具体操作
第一步:CubeMX配置
-
PC7:
GPIO_Input→ 在GPIO设置中启用Pull-up -
PF9, PF10:
GPIO_Output→ 初始电平设为High(LED默认灭) -
生成代码
第二步:在main.c中添加逻辑
c
/* USER CODE BEGIN 2 */
// 可选:初始化时让LED闪一下,表示程序运行
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_RESET); // 全亮
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_SET); // 全灭
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
// 读取PC7的电平状态
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7) == GPIO_PIN_RESET) // 检测到低电平(有磁场)
{
// 点亮两个LED(低电平点亮)
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET);
// 可选:串口输出调试信息
// printf("磁场 detected!\r\n");
}
else // 高电平(无磁场)
{
// 熄灭两个LED
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);
}
HAL_Delay(50); // 延时50ms,避免过于频繁读取(去抖)
}
/* USER CODE END WHILE */
第三步:进阶版(带消抖,防止误触发)
c
/* USER CODE BEGIN 2 */
uint8_t magnetic_field_detected = 0;
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
// 读取当前状态
uint8_t current_state = HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7);
// 状态变化检测(下降沿:高→低)
if (current_state == GPIO_PIN_RESET && magnetic_field_detected == 0)
{
// 第一次检测到磁场,延时消抖
HAL_Delay(20);
// 再次确认
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7) == GPIO_PIN_RESET)
{
magnetic_field_detected = 1;
// 点亮LED
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_RESET);
// 可以在这里加一个计数或执行其他动作
}
}
// 上升沿检测(低→高)
else if (current_state == GPIO_PIN_SET && magnetic_field_detected == 1)
{
HAL_Delay(20);
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7) == GPIO_PIN_SET)
{
magnetic_field_detected = 0;
// 熄灭LED
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_SET);
}
}
HAL_Delay(10); // 主循环延时
}
/* USER CODE END WHILE */
✅ 验证步骤
-
无磁场时:PC7应该是稳定的高电平(3.3V),LED熄灭
-
有磁场时:PC7变为低电平(0V),LED点亮
-
磁场移除后:LED熄灭
更多推荐
所有评论(0)