zw101触摸时,疑似无法读取到手指按压,经软件测试发现无法执行HandShake() 函数

发布于 2026-05-19 12:14:38

用keil5烧录完整代码后发现指纹模块无法正常使用,经多次测试在main函数中直接调用HandShake检测模组是否正常工作发现oled一直显示 System Ready表明系统一直无法执行HandShake()函数

int main(void)
{
HAL_Init();
SystemClock_Config();

MX_GPIO_Init();
// MX_I2C1_Init();
MX_I2C2_Init();
MX_USART2_UART_Init();
MX_USART1_UART_Init();

/ USER CODE BEGIN 2 /
OLED_Init();
Keypad_Init();
Motor_Init();
OLED_ShowString(0, 0, " System Ready ", OLED_8X16);
OLED_Update();
Finger_Init();
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); // 供电打开
HAL_Delay(800);

HandShake();

// AutoEnroll();
/ USER CODE END 2 /

/ Infinite loop /
/ USER CODE BEGIN WHILE /
while (1)
{

int menu_choice = 0;
int sub_choice = 0;

void HandShake(void)
{

Send_Data(PS_HandShake,12);        //发送握手指令
HAL_Delay(20);                //给程序判断流出充裕时间,若不加延时,则即使回传数据正确也不会判断成功连接
while(!USART_STA);            //等待空闲中断,数据接收完全
if(Answer(6)==0x07&&Answer(9)==0x00)
{
    OLED_ShowString(0,0,"Connect success",OLED_8X16);
    OLED_Update();
    USART_STA=0;
}
else
{
    OLED_ShowString(0,0,"Connect error",OLED_8X16);
    OLED_Update();
    USART_STA=0;
}
HAL_Delay(1000);
OLED_Clear();
memset(USART_ReceiveBuf,0xFF,sizeof(USART_ReceiveBuf));

}

uint8_t ValidTempleteNum(void) //查询指纹模块中已注册的有效模板数量
{

uint8_t num;
Send_Data(PS_ValidTempleteNumBuf,12);
HAL_Delay(30);

if(Answer(6)==0x07&&Answer(9)==0x00)
{
    num=Answer(11); //从特定位置读取模板数量
}
memset(USART_ReceiveBuf,0xFF,sizeof(USART_ReceiveBuf));
return num;

}

查看更多

关注者
0
被浏览
6
0 个回答
暂无答案,快来添加答案吧

撰写答案

请登录后再发布答案,点击登录

发布
问题

deepseek
客服

分享
好友

手机
浏览

扫码手机浏览