stm32学习记录——扫码开锁
目录
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学习记录——扫码开锁相关推荐
- STM32学习记录——光敏传感器的使用
文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 只做学习记录,记录自己如何从零学会使用一个模块,仅仅只是会用,缺乏专业知识.如果需要了解更多原理,可以从我推荐的技术大佬的文章中获 ...
- Swoole源码学习记录(五)——锁和信号(二)
Swoole版本:1.7.4-stable Github地址: https://github.com/LinkedDestiny/swoole-src-analysis 二.Mutex互斥锁 接下来是 ...
- STM32学习记录:输入捕获应用
目录 前言 一.输入捕获的应用 1.1.测量脉宽或者频率 1.2.测量频率的步骤方法 1.3.测量脉宽的步骤方法 二. 输入捕获工作过程 2.1.CH1为例,输入捕获工作过程 2.2.输入通道 2.3 ...
- stm32学习记录——继电器
STM32控制继电器 jdq.c #include "jdq.h"void relay_init(void) {GPIO_InitTypeDef GPIO_InitStructur ...
- STM32学习记录——烟雾传感器的使用
文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 这次记录一下烟雾传感器的学习,由于烟雾传感器的资料比较杂,算法比较多,对我来说也比较难,所以我的代码中算法部分是不太具有参考价值, ...
- STM32学习记录0002-STM32初探
一.为什么选择STM32 1.1 什么是STM32 是一种新的基于ARM内核的32位MCU系列 1.内核为ARM公司为要求高性能.低成本.低功耗的嵌入式专门设计的Cortex-M内核,是一种标准的AR ...
- 【学习记录】野火stm32学习记录(一)GPIO
观看的视频:野火-视频链接 https://www.bilibili.com/video/BV18X4y1M763 什么是GPIO? GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的 ...
- STM32学习记录——声音传感器的使用
文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 前言 今天记录的是声音传感器模块的学习 一.学习目的 我的学习目的是学会使用声音传感器模块,并通过检测声音的有无控制LED的亮灭.我使用的是S ...
- STM32学习记录——触摸屏虚拟按键
视频演示:(有点粗糙,很多没细节没去弄了) 电子锁触摸屏 直接使用正点原子实验26触摸屏实验进行添加: 这里借用了博客基于STM32的TFT触摸屏虚拟按键_鱼鱼不秃头的博客-CSDN博客_stm32触 ...
最新文章
- DevExpress最强干货|实用示例、更新等你来体验!
- sql怎么实现取当前数据以及累计7天数据_年薪60万+大佬吐血整理字节跳动大数据面试真题...
- 082_html5Web存储
- SAP S/4HANA product search generated SQL statement的生产原理介绍
- 地理坐标系和投影坐标系的区别
- 一波圣诞美陈设计素材,值得收藏哦!
- RealVIZ Stitcher Unlimited v5.5.1 1CD
- cad菜单栏快捷键_教你如何用富怡服装CAD画男衬衫的结构设计
- WordPress使用腾讯云CDN配置如何实现https访问?
- 空气质量等级c语言编程,华中科技大学C语言课设空气质量检测信息管理系统技术分析.docx...
- 连获国际大奖创下史上第一,这家耳机品牌凭什么与众不同?
- 微软edge浏览器安装包下载地址-Microsoft edge download
- python中如何输出空格换行_Python将文件中空格变成换行的方法如何做
- Java图结构-模拟校园地图-迪杰斯特拉(Dijkstra)算法求最短路径 #谭子
- Linux Panic 机制解析
- “NING咖啡”来袭,李宁的流量把戏还是真未来?
- java采用什么与什么相结合的产物,智能仪器是
- 2021国防科技大学计算机学院无军籍考研409分经验贴(数一+英一+834)
- 如何使用HTML获取当前电脑的时间
- 《视窗控制中心 V6.0》(SIMATIC WinCC V6.0)6.0 SP3 + Hotfix2 Build: 6.1.1.2[ISO]