(4) STM32 AS608指纹识别模块测试代码

该文介绍了如何使用STM32RCT6微控制器配合AS608指纹模块进行指纹识别。通过串口通信连接模块,并利用外部中断检测指纹传感器的唤醒信号。在检测到手指按下(上升沿触发中断)时,执行指纹识别和比对操作。文中提供了串口及中断初始化的代码示例,并给出了源码链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用资源

  • stm32RCT6板子
  • AS608指纹模块

软件资源:

  • 串口二资源连接AS608 TX RX接线
  • AS608 wak线连接PA8设置外部中断触发检测是否有手指按下
    接线: 红-vi3.3v 黄-TX-PA3 白-RX-PA2 黑-GEND 蓝-wak-PA8 绿-Vt-3.3 这颜色只对应我手里的模块
    在这里插入图片描述

2. 实现思路简述

指纹模块识别,需要录入指纹,然后在进行识别判断,那么怎么判断有手指按下呢?这里就需要外部中断实现,AS608的wak线连接指纹识别那里的电压,当有手指按下时,电压发生变化,触发外部中断,可以在中断里设个标志位,触发中断后置1,当判断有手指按下后,然后进行指纹识别对比等操作,这里外部中断设置为上升沿触发即可,因为当手指松开时还会有出现下降沿,而这时不需要触发中断

3. 指纹测试代码

3.1 部分代码介绍

串口初始化以及外部中断初始化:

void AS608_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 
	EXTI_InitTypeDef EXTI_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  
	/*开启串口GPIO口的时钟*/
	RCC_APB2PeriphClockCmd(AS608_TouchOut_INT_GPIO_CLK,ENABLE);
  AS608_USART_GPIO_APBxClkCmd(AS608_USART_GPIO_CLK, ENABLE);
  /*打开串口外设的时钟*/
	AS608_USART_APBxClkCmd(AS608_USART_CLK, ENABLE);
												
	/* 配置 NVIC 中断*/
	NVIC_Configuration();
  
	/* TouchOut线用到的GPIO */	
  GPIO_InitStructure.GPIO_Pin = AS608_TouchOut_INT_GPIO_PIN;
  /* 配置为浮空输入 */	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(AS608_TouchOut_INT_GPIO_PORT, &GPIO_InitStructure);

	/* 选择EXTI的信号源 */
  GPIO_EXTILineConfig(AS608_TouchOut_INT_EXTI_PORTSOURCE, AS608_TouchOut_INT_EXTI_PINSOURCE); 
  EXTI_InitStructure.EXTI_Line = AS608_TouchOut_INT_EXTI_LINE;
	
	/* EXTI为中断模式 */
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	/* 上升沿中断 */
  EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Rising;
  /* 使能中断 */	
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  
  /*将USART Tx的GPIO配置为推挽复用模式*/
  GPIO_InitStructure.GPIO_Pin = AS608_USART_TX_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(AS608_USART_TX_GPIO_PORT, &GPIO_InitStructure);

  /*将USART Rx的GPIO配置为浮空输入模式*/
	GPIO_InitStructure.GPIO_Pin = AS608_USART_RX_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(AS608_USART_RX_GPIO_PORT, &GPIO_InitStructure);
	
	/*配置串口的工作参数*/
	/*配置波特率*/
	USART_InitStructure.USART_BaudRate = AS608_USART_BAUDRATE;
	/*配置 针数据字长*/
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	/*配置停止位*/
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	/*配置校验位*/
	USART_InitStructure.USART_Parity = USART_Parity_No ;
	/*配置硬件流控制*/
	USART_InitStructure.USART_HardwareFlowControl = 
	                                USART_HardwareFlowControl_None;
	/*配置工作模式,收发一起*/
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	/*完成串口的初始化配置*/
	USART_Init(AS608_USART, &USART_InitStructure);
	
	/*使能串口接收中断*/
	USART_ITConfig(AS608_USART, USART_IT_RXNE, ENABLE);	
	USART_ITConfig(AS608_USART, USART_IT_IDLE, ENABLE ); //使能串口总线空闲中断 	
	
	/*使能串口*/
	USART_Cmd(AS608_USART, ENABLE);	
 	
}

外部中断函数:

u8 press=0;
void AS608_TouchOut_IRQHandler(void)
{
  /*确保是否产生了EXTI Line中断*/
	if(EXTI_GetITStatus(AS608_TouchOut_INT_EXTI_LINE) != RESET) 
	{
		press=1;    EXTI_ClearITPendingBit(AS608_TouchOut_INT_EXTI_LINE);   
  }
}

3.2 源码链接

这里放的源码为野火的,功能比较齐全,我自己的源码是在上面进行删减的

链接: https://pan.baidu.com/s/1FMo1N-CQGrksOW9c7Oypyw 提取码: 4tag

串口输出:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌最俊朗-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值