目录

usart.c

硬件连接

百度网盘源码


用到的模块有扫码模块,继电器,电子锁。

实质就是扫码模块扫码将码的内容通过串口传输给单片机做判断,识别到码的内容再控制继电器的开关,继电器进一步控制电子锁。

单片机判断这一步其实都是串口代码

usart.c

#include "config.h"
#include "Usart.h"u8 USART_RxBUF[USART_RXBUF_SIZE];
u16 USART1_RecPos=0;void Usart_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOA,&GPIO_InitStructure);USART_InitStructure.USART_BaudRate=USART_BAUD;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,&USART_InitStructure);NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);USART_Cmd(USART1,ENABLE);USART_ClearFlag(USART1,USART_FLAG_TC);}
void UsartSendByte(USART_TypeDef* USARTx,u8 ch)
{USART_SendData(USARTx,(u16)ch);while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
void UsartSendString(USART_TypeDef*USARTx,u8*str)
{u32 pos=0;while(*(str+pos)!='\0'){UsartSendByte(USARTx,*(str+pos));pos++;}}
int fputc(int ch,FILE*f)
{USART_SendData(USART1,(u16)ch);while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);return (ch);}
void USART1_IRQHandler(void)
{u8 RecCh;if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET){USART1RecTimer=10;RecCh= (u8)USART_ReceiveData(USART1);USART_RxBUF[USART1_RecPos++]=RecCh;USART_ClearITPendingBit(USART1,USART_IT_RXNE);}}
unsigned char USRET1_RecProcess(void)
{if(USART1RecTimer)return FALSE;if(!USART1_RecPos)return FALSE;USART_RxBUF[USART1_RecPos++]='\0';if(strstr((char *)USART_RxBUF,"码的内容")!=NULL){relay_off();SysTickDelayMs(200);relay_on();}memset(USART_RxBUF,0,USART_RXBUF_SIZE);USART1_RecPos=0;return TRUE;
}

设置判断和控制继电器的函数

unsigned char USRET1_RecProcess(void)
{if(USART1RecTimer)return FALSE;if(!USART1_RecPos)return FALSE;USART_RxBUF[USART1_RecPos++]='\0';if(strstr((char *)USART_RxBUF,"码的内容")!=NULL){relay_off();SysTickDelayMs(200);relay_on();}memset(USART_RxBUF,0,USART_RXBUF_SIZE);USART1_RecPos=0;return TRUE;
}

设置码的内容可以下载一个二维码生成器。

硬件连接

扫码模块的rx——单片机PA9

扫码模块的tx——单片机PA10

继电器IN——PB7

百度网盘源码

最后奉上我调试时用的代码。

链接:https://pan.baidu.com/s/1J5sy5ldL1jGp90VrwaHSAA 
提取码:9438

stm32学习记录——扫码开锁相关推荐

  1. STM32学习记录——光敏传感器的使用

    文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 只做学习记录,记录自己如何从零学会使用一个模块,仅仅只是会用,缺乏专业知识.如果需要了解更多原理,可以从我推荐的技术大佬的文章中获 ...

  2. Swoole源码学习记录(五)——锁和信号(二)

    Swoole版本:1.7.4-stable Github地址: https://github.com/LinkedDestiny/swoole-src-analysis 二.Mutex互斥锁 接下来是 ...

  3. STM32学习记录:输入捕获应用

    目录 前言 一.输入捕获的应用 1.1.测量脉宽或者频率 1.2.测量频率的步骤方法 1.3.测量脉宽的步骤方法 二. 输入捕获工作过程 2.1.CH1为例,输入捕获工作过程 2.2.输入通道 2.3 ...

  4. stm32学习记录——继电器

    STM32控制继电器 jdq.c #include "jdq.h"void relay_init(void) {GPIO_InitTypeDef GPIO_InitStructur ...

  5. STM32学习记录——烟雾传感器的使用

    文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 这次记录一下烟雾传感器的学习,由于烟雾传感器的资料比较杂,算法比较多,对我来说也比较难,所以我的代码中算法部分是不太具有参考价值, ...

  6. STM32学习记录0002-STM32初探

    一.为什么选择STM32 1.1 什么是STM32 是一种新的基于ARM内核的32位MCU系列 1.内核为ARM公司为要求高性能.低成本.低功耗的嵌入式专门设计的Cortex-M内核,是一种标准的AR ...

  7. 【学习记录】野火stm32学习记录(一)GPIO

    观看的视频:野火-视频链接  https://www.bilibili.com/video/BV18X4y1M763 什么是GPIO? GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的 ...

  8. STM32学习记录——声音传感器的使用

    文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 前言 今天记录的是声音传感器模块的学习 一.学习目的 我的学习目的是学会使用声音传感器模块,并通过检测声音的有无控制LED的亮灭.我使用的是S ...

  9. STM32学习记录——触摸屏虚拟按键

    视频演示:(有点粗糙,很多没细节没去弄了) 电子锁触摸屏 直接使用正点原子实验26触摸屏实验进行添加: 这里借用了博客基于STM32的TFT触摸屏虚拟按键_鱼鱼不秃头的博客-CSDN博客_stm32触 ...

最新文章

  1. DevExpress最强干货|实用示例、更新等你来体验!
  2. sql怎么实现取当前数据以及累计7天数据_年薪60万+大佬吐血整理字节跳动大数据面试真题...
  3. 082_html5Web存储
  4. SAP S/4HANA product search generated SQL statement的生产原理介绍
  5. 地理坐标系和投影坐标系的区别
  6. 一波圣诞美陈设计素材,值得收藏哦!
  7. RealVIZ Stitcher Unlimited v5.5.1 1CD
  8. cad菜单栏快捷键_教你如何用富怡服装CAD画男衬衫的结构设计
  9. WordPress使用腾讯云CDN配置如何实现https访问?
  10. 空气质量等级c语言编程,华中科技大学C语言课设空气质量检测信息管理系统技术分析.docx...
  11. 连获国际大奖创下史上第一,这家耳机品牌凭什么与众不同?
  12. 微软edge浏览器安装包下载地址-Microsoft edge download
  13. python中如何输出空格换行_Python将文件中空格变成换行的方法如何做
  14. Java图结构-模拟校园地图-迪杰斯特拉(Dijkstra)算法求最短路径 #谭子
  15. Linux Panic 机制解析
  16. “NING咖啡”来袭,李宁的流量把戏还是真未来?
  17. java采用什么与什么相结合的产物,智能仪器是
  18. 2021国防科技大学计算机学院无军籍考研409分经验贴(数一+英一+834)
  19. 如何使用HTML获取当前电脑的时间
  20. 《视窗控制中心 V6.0》(SIMATIC WinCC V6.0)6.0 SP3 + Hotfix2 Build: 6.1.1.2[ISO]

热门文章

  1. 【SolidWorks免费模型下载】:3D打印机 免费模型下载
  2. Unity3D FPS Game:第一人称射击游戏(一)
  3. CentOS安装达梦数据库
  4. Linux配置多个IP地址
  5. 基于javaweb的机械零件管理系统
  6. 矢量图形是指使用计算机技术合成的图像,第四章:数字媒体试题 文档
  7. 如何使用C#实现QQ号码的申请
  8. MAC IDEA安装与常用插件与环境配置
  9. 第6章 - 多无人车系统的协同控制 --> 多无人车系统建模
  10. 类hao123单拼+123的未注册COM和CN域名分享