用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;}
DeepSeek回复: