AS608指纹模块的蓝牙串口模块怎么控制,51做的核心,有偿谢谢

查看: 740|回复: 3
STM32 与 指纹识别模块AS608 通信问题
主题帖子精华
新手入门, 积分 47, 距离下一级还需 -27 积分
在线时间14 小时
最近买了一个AS608指纹识别模块 ,看了一下原子哥的源代码, 原子哥的串口2通信 用的是定时检测一帧数据 ,有点看不懂 , 然后在网上查了下资料, 用 串口空闲中断可以解决接受一帧不定长数据, 所以我就用了这种方法, 是的, 但是现在无法正常通信 , 有哪位大神帮忙看下,如果解决了,发个50红包给你, 说到做到
串口相关代码如下
#include &myusart.h&
void Usart2_Init(void)
& && &&&GPIO_InitTypeDef& && &&&GPIO_InitS
& && &&&USART_InitTypeDef& &&&USART_InitS
& && &&&NVIC_InitTypeDef& && &&&NVIC_InitS
& && &&&RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);& &
& && &&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);& &
& && && && && & //USRT2对应引脚复用映射
& && &&&GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART1);
& && &&&GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART1);
& && && && && &
& && &&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
& && &&&GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;& && && &
& && &&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
& && &&&GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; -
& && &&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& && &&&GPIO_Init(GPIOA,&GPIO_InitStructure);
& && && && && & //USART2初始化配置
& && &&&USART_InitStructure.USART_BaudRate = 56700;
& && &&&USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N
& && &&&USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
& && &&&USART_InitStructure.USART_Parity = USART_Parity_No;
& && &&&USART_InitStructure.USART_StopBits = USART_StopBits_1;
& && &&&USART_InitStructure.USART_WordLength = USART_WordLength_8b;
& && &&&USART_Init(USART2,&USART_InitStructure);
& && & //使能USART2
& &&&USART_Cmd(USART2,ENABLE);
& && && &USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); // 开启接收非空中断
& && && & USART_ITConfig(USART2,USART_IT_IDLE,ENABLE); // 开启接受空闲中断
& &//USART1 NVIC 配置
& &NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; // 串口2中断通道
& &NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 抢占优先级
& &NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0 ; // 响应优先级
& &NVIC_InitStructure.NVIC_IRQChannelCmd&&= ENABLE; // IRQ通道使能
& &NVIC_Init(&NVIC_InitStructure);
extern uint8_t&&aRxBuffer[100];
extern uint8_t RxC
extern uint8_t ReceiveS
void USART2_IRQHandler(void)
& &&&u8 clear =
& && && && && && && && && && &&&if(USART_GetFlagStatus(USART2,USART_IT_RXNE) != RESET) //如果接受到一个字节
& && && && && && && && && && &&&{
& && && && && && && && && && && && & aRxBuffer[RxCounter++]= USART_ReceiveData(USART2);
& && && && && && && && && && &&&}
& && && && && && && && && && &&&
& && && && && && &&&else if(USART_GetFlagStatus(USART2,USART_IT_IDLE) != RESET) //如果接收到一帧数据
& && && && && && && && &{
& && && && && && && && && & clear = USART2-&SR ; // 读SR寄存器
& && && && && && && && && && &&&clear = USART2-&DR; // 读DR寄存器 (先读SR再DR,就是为了清除IDLE中断标志位)
& && && && && && && && && && &&&
& && && && && && && && && && &&&ReceiveState = 1;& && &&&// 标记接受到一帧数据
& && && && && && && && &}
/***************************************************************************************************************************************
#include &as608.h&
#include &stm32f4xx.h&
#include &string.h&
#include &delay.h&
//发送一个字节
static void MYUSART2_SendData(u8 data)
& && &USART_SendData(USART2,data);
& && &&&while(USART_GetFlagStatus(USART2,USART_FLAG_TXE) == RESET);
//发送一个包头
static void SendHead(void)
& && &&&MYUSART2_SendData(0xEF);
& && &&&MYUSART2_SendData(0x01);
//读取一帧数据
void MYUSART2_GetFrameData(void)
& && && & u8
& && &if(ReceiveState == 1)
& && && & {
& && && && && &ReceiveState = 0; // 见标志位清零
& && && && &for(i = 0; i & RxC i++)
& && && && && && &ACK_data = aRxBuffer;
& && && && &&&RxCounter = 0; //& && && &&&
& && && & }
//与AS608 模块握手函数
u8 PS_HandShake(u32 *PS_Addr)
& && &&&int i,
& && &&&SendHead();
& && &&&SendAddr();
& && &&&MYUSART2_SendData(0X01);
& && &&&MYUSART2_SendData(0X00);
& && &&&MYUSART2_SendData(0X00);& && &&&
& &delay_ms(200);
& && &&&MYUSART2_GetFrameData();
& && &&&if(ACK_data[0] == 0xEF && ACK_data[1] == 0x01 && ACK_data[6] == 0x07)& && && &
& && && && && && && && &*PS_Addr=(ACK_data[2]&&24) + (ACK_data[3]&&16)+(ACK_data[4]&&8) + (ACK_data[5]);
& && && && && && && && && &&&
& && && && && && && &return 1;&&//握手成功返回1
& & else&&
& && && && && &
& && &&&return 0;
//****************************************************************************
#include &myusart.h&
#include &delay.h&
#include &as608.h&
#include &led.h&
volatile uint8_t aRxBuffer[100] = {0x00}; // 接受缓存数据
volatile uint8_t RxCounter&&= 0;& &&&
volatile uint8_t ReceiveState = 0 ; //接收一帧数据标志位
int main(void)
& && && &&&uint8_
& && && &&&delay_init(168);
& && & Usart_Init(115200);
& && && &&&Usart2_Init();
& && && &&&LED_Init();
& && & delay_ms(200);
& && &&&while(1)
& && && && && & {
& && && && && &&&
& && && && && && & if(PS_HandShake(&AS608Addr))
& && && && && && && && && &{
& && && && && && && && && && && &&&printf(&握手成功\n&);
& && && && && && && && && &}
& && && && && && && && && &else
& && && && && && && && && &{
& && && && && && && && && && && &printf(&握手失败\n&);
& && && && && && && && && &}& && && &
& && &&&}& && && &
http://www.openedv.com/forum.php?mod=viewthread&tid=112690&highlight=MODBUS
主题帖子精华
金钱128404
在线时间1138 小时
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
主题帖子精华
金钱128404
在线时间1138 小时
这是我们的modbus例程,用的就是串口空闲中断做的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
主题帖子精华
新手入门, 积分 47, 距离下一级还需 -27 积分
在线时间14 小时
谢谢原子哥,
Powered by指纹模块fm-180和as608的区别_百度知道
指纹模块fm-180和as608的区别
我有更好的答案
是ES的一种 QS可以视作是正式发行前的最后一个测试版,通常和初期的正式版没什么区别 通常和第一个正式版有着相同的步进 仅仅是CPUID上不一样,在CPU-Z中会被识别为ES版 很多时候QS版没锁频,超频方便 在QS之前的ES版
采纳率:53%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。指纹 识别模块_淘宝指纹 识别模块_淘宝网购物指纹 识别模块 - 值得买
品质专员砍价
低价全网最低价
值得买特价商品每天上新
->专人砍价 限量特惠
(C)2015 - 2016
tongjidaima&>&atk as608指纹识别模块用户手册
atk as608指纹识别模块用户手册
上传大小:1.75MB
atk as608指纹识别模块用户手册,ATK-AS608 指纹识别模块是 ALIENTEK 推出的一款高性能的光学指纹识别模块。
ATK-AS608 模块采用了国内著名指纹识别芯片公司杭州晟元芯片技术有限公司(Synochip)
的 AS608 指纹识别芯片。芯片内置 DSP 运算单元,集成了指纹识别算法,能高效快速采集
图像并识别指纹特征。模块配备了串口、USB 通讯接口,用户无需研究复杂的图像处理及
指纹识别算法,只需通过简单的串口、USB 按照通讯协议便可控制模块。本模块可应用于
各种考勤机、保险箱柜、指纹门禁系统、指纹锁等场合。
综合评分:0
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有0条
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
atk as608指纹识别模块用户手册
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
atk as608指纹识别模块用户手册

我要回帖

更多关于 串口模块 的文章

 

随机推荐