51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
#ifndef __BSP_TRACK_IR_H
|
||
#define __BSP_TRACK_IR_H
|
||
|
||
#include "main.h"
|
||
|
||
/*
|
||
* 红外循迹 4 路状态位定义(bit=1 表示检测到黑线)
|
||
* bit0 -> H1, bit1 -> H2, bit2 -> H3, bit3 -> H4
|
||
*/
|
||
#define TRACK_IR_H1_BIT (1U << 0)
|
||
#define TRACK_IR_H2_BIT (1U << 1)
|
||
#define TRACK_IR_H3_BIT (1U << 2)
|
||
#define TRACK_IR_H4_BIT (1U << 3)
|
||
|
||
/*
|
||
* 红外模块有效电平:
|
||
* 根据用户描述:探测黑线输出低电平(GPIO_PIN_RESET),白线输出高电平。
|
||
* 超出范围(丢线/悬空)也输出低电平。
|
||
*/
|
||
#ifndef TRACK_IR_ACTIVE_LEVEL
|
||
#define TRACK_IR_ACTIVE_LEVEL GPIO_PIN_RESET
|
||
#endif
|
||
|
||
/**
|
||
* @brief 基础循迹判定结果
|
||
*/
|
||
typedef enum {
|
||
TRACK_IR_STATE_LOST = 0, // 全灭,丢线
|
||
TRACK_IR_STATE_LEFT, // 线偏左
|
||
TRACK_IR_STATE_CENTER, // 居中
|
||
TRACK_IR_STATE_RIGHT, // 线偏右
|
||
TRACK_IR_STATE_CROSS // 十字/大面积黑线
|
||
} track_ir_state_t;
|
||
|
||
/* 初始化接口(当前仅预留,GPIO 配置由 CubeMX 负责) */
|
||
void track_ir_init(void);
|
||
|
||
/* 读取原始电平状态(bit=1 表示 GPIO 为高电平) */
|
||
uint8_t track_ir_get_raw_mask(void);
|
||
|
||
/* 读取线状态掩码(bit=1 表示对应通道检测到黑线) */
|
||
uint8_t track_ir_get_line_mask(void);
|
||
|
||
/* 最基础方向判定:丢线 / 左偏 / 居中 / 右偏 / 十字 */
|
||
track_ir_state_t track_ir_basic_judge(void);
|
||
|
||
/* 便于日志输出的状态字符串 */
|
||
const char *track_ir_state_to_string(track_ir_state_t state);
|
||
|
||
#endif /* __BSP_TRACK_IR_H */
|