stm第九天433M无线遥控灯
1.433M无线模块工作原理
数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频飘仅为3ppm.接收到信号,接收模块对应针脚输出高电平,有DO D1 D2 D3,可能对应遥控器的A/B/C/D。
2.引脚接线
1.供电正极,连接此引脚到电源5V,以提供433M无线模块所需的电流
2.GND():地,连接此引脚到电源的负极或者地。
3.DO-D4:连接控制输入信号通常用于连接控制信号,当按键变换控制外设信号
3.433M控制灯软件开发流程
· 初始化系统
。 初始化433M DO-D1引脚对应的GPIO外设时钟
。 初始化433M DO-D1 引脚配置
•433M按键控制外设
1:wireless.c工程
#include "wireless.h"
#include "stm32f10x.h"void Wireless_Init(void)//433无线遥控灯的初始化函数
{//有两个步骤 :1:初始化433无线遥控D0和D1的外设 2:初始化433无线遥控灯时钟GPIO_InitTypeDef Wireless_Initstruct;//初始化433无线遥控灯结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );//打开APB2总线下GPIOA的时钟Wireless_Initstruct.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_2;//配置A0和A2引脚Wireless_Initstruct.GPIO_Mode= GPIO_Mode_IPD;//配置引脚输入模式为下拉输入GPIO_Init(GPIOA, &Wireless_Initstruct);//初始化GPIOA的结构体}
2:wireless.h工程
#ifndef WIRELESS_H_
#define WIRELESS_H_void Wireless_Init(void);//声明函数#endif
3:main.c工程
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "Bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"
#include "wireless.h"void delay(uint16_t time)//延时1ms 软件延时粗延时
{uint16_t i=0;while(time --){i=12000;while(i --);}}int main()
{Wireless_Init();//调用函数,初始化433无线模块的时钟和引脚配置LED_Init();//初始化灯的时钟和引脚配置GPIO_SetBits(GPIOA, GPIO_Pin_1);//初始化灯灭while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==1)//因为接收模块对应针脚输出高电平,当按键A按下;A0输入高电平。{GPIO_ResetBits(GPIOA, GPIO_Pin_1);//灯亮}else if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)==1)//因为接收模块对应针脚输出高电平,当按键B按下;A2输入高电平。{GPIO_SetBits(GPIOA, GPIO_Pin_1);//灯灭}}}
4:代码心得补充
函数声明问题: void Wireless_Init();
和 void LED_Init();这里只是简单的函数声明,而不是函数调用。正确的函数调用应该去掉 void 关键字,例如
Wireless_Init();和 LED_Init();。这两个函数可能分别用于初始化无线通信模块和LED相关的GPIO引脚。
GPIO引脚状态判断问题:
if(GPIO_Pin_0 ==1)和
else if(GPIO_Pin_2 ==1) 这种写法是错误的。GPIO_Pin_o 和 GPIO_Pin_2是GPIO引脚的宏定义,代表引脚编号,不能直接和 1进行比较。应该使用GPIO_ReadInputDataBit 函数来读取引脚的电平状态
补充:
1. **模拟输入模式** `GPIO_Mode_AIN`
- **功能**:信号直接进入ADC/DAC模块,**不经过**施密特触发器或上下拉电阻[3]][4]]。
- **应用场景**:
- 用于ADC采集模拟信号(如温度传感器、电压检测)。
- 低功耗场景下关闭数字电路以省电。
---
### 2. **浮空输入模式** `GPIO_Mode_IN_FLOATING`
- **功能**:引脚电平完全由外部输入决定,内部无上下拉电阻,处于高阻态[3]][4]]。
- **应用场景**:
- 需要检测外部信号电平变化的场景(如按键检测)。
- **注意**:引脚悬空时易受干扰,需外部电路保证稳定电平。
---
### 3. **下拉输入模式** `GPIO_Mode_IPD`
- **功能**:内部启用约30-50kΩ下拉电阻,默认电平为低,仅当外部输入高电平时才会拉高[3]][4]]。
- **应用场景**:
- 检测高电平触发信号(如高有效传感器输出)。
- 避免悬空引脚因干扰产生误触发。
---
### 4. **上拉输入模式** `GPIO_Mode_IPU`
- **功能**:内部启用约30-50kΩ上拉电阻,默认电平为高,仅当外部输入低电平时才会拉低[3]][4]]。
- **应用场景**:
- 检测低电平触发信号(如按键接地触发)。
- 常用作总线信号的默认保持状态(如I2C的SDA、SCL)。
---
### 5. **开漏输出模式** `GPIO_Mode_Out_OD`
- **功能**:仅能输出低电平或高阻态,需外接上拉电阻实现高电平输出[3]][5]]。
- **应用场景**:
- 支持“线与”逻辑的总线(如I2C)。
- 驱动不同电压电平的外设(如5V器件与3.3V MCU通信)。
---
### 6. **推挽输出模式** `GPIO_Mode_Out_PP`
- **功能**:可主动输出高/低电平,驱动能力强,无需外接上拉电阻[3]][5]]。
- **应用场景**:
- 控制LED、继电器等需直接驱动能力的设备。
- 高速信号传输(如SPI、PWM输出)。
---
### 7. **复用开漏输出模式** `GPIO_Mode_AF_OD`
- **功能**:复用外设控制开漏输出,需外接上拉电阻[3]][6]]。
- **应用场景**:
- 外设总线通信(如I2C的SCL、SDA引脚)。
- 复用功能下的电平兼容性需求场景。
---
### 8. **复用推挽输出模式** `GPIO_Mode_AF_PP`
- **功能**:复用外设控制推挽输出,直接输出高/低电平[3]][6]]。
- **应用场景**:
- 高速外设信号(如USART_TX、SPI_MOSI)。
- 需要强驱动能力的复用功能(如定时器PWM输出)。
---
### **模式选择建议**
1. **输入模式**:
- 优先选上拉/下拉输入,避免浮空输入的不确定性[4]]。
2. **输出模式**:
- 常规控制选推挽输出,总线通信选开漏输出[5]]。
3. **复用模式**:
- 需与外设功能匹配(如I2C必须用复用开漏)[6]]。
相关文章:
stm第九天433M无线遥控灯
1.433M无线模块工作原理 数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~85度之间变化时,频飘仅为3ppm.接收到信号,接收模块对应针脚输出高电平,有DO D1 D2 D3&#…...
六十天前端强化训练之第三十天之深入解析Vue3电商项目:TechStore全栈实践(文结尾附有源代码)
欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 深入解析Vue3电商项目:TechStore全栈实践 一、项目架构设计 二、核心功能实现 三、组合式API深度实践 四、性能优化实践 五、项目扩展方向 六、开发经验总结…...
类与对象(中)(详解)
【本节目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗&…...
Spring Boot框架中常用注解
以下是Spring Boot框架中常用注解的详细说明,包括名称、用途、用法、使用位置及扩展示例,按功能模块分类整理: 一、核心启动与配置注解 1. SpringBootApplication 用途:主启动类注解,整合了 Configuration、EnableAu…...
ResNet与注意力机制:深度学习中的强强联合
引言 在深度学习领域,卷积神经网络(CNN)一直是图像处理任务的主流架构。然而,随着网络深度的增加,梯度消失和梯度爆炸问题逐渐显现,限制了网络的性能。为了解决这一问题,ResNet(残差…...
notify_one() 会阻塞吗?
notify_one() 不会阻塞。它是用于唤醒一个等待中的线程,通常是通过条件变量(std::condition_variable)来使用的。调用 notify_one() 会使一个处于等待状态的线程被唤醒并继续执行,但它本身并不会阻塞。 当调用 notify_one() 时&a…...
Flutter项目之页面实现以及路由fluro
目录: 1、项目代码结构2、页面编写以及路由配置main.dart(入口文件)page_content.dartindex.dartapplication.dartpubspec.yamllogin.dartdio_http.dart 3、Fluro路由routes.dartnot_found_page.dart(路由优化,找不到页面时展示此页面) 4、注册页面 1、项…...
《Python实战进阶》第31集:特征工程:特征选择与降维技术
第31集:特征工程:特征选择与降维技术 摘要 特征工程是机器学习和数据科学中不可或缺的一环,其核心目标是通过选择重要特征和降低维度来提升模型性能并减少计算复杂度。本集聚焦于特征选择与降维技术,涵盖过滤法、包裹法、嵌入法等…...
大模型在支气管哮喘手术全流程风险预测与治疗方案制定中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目标与方法 1.3 研究创新点 二、支气管哮喘概述 2.1 定义与发病机制 2.2 分类与临床表现 2.3 诊断标准与方法 三、大模型技术原理与应用现状 3.1 大模型的基本原理 3.2 在医疗领域的应用案例分析 3.3 适用于支气管哮喘预…...
C++类与对象的第二个简单的实战练习-3.24笔记
哔哩哔哩C面向对象高级语言程序设计教程(118集全) 实战二 Cube.h #pragma once class Cube { private:double length;double width;double height; public:double area(void);double Volume(void);//bool judgement(double L1, double W1, double H1);…...
react自定义hook
自定义hook: 用来封装复用的逻辑,,自定义hook是以use开头的普通函数,,将组件中可复用的状态逻辑抽取到自定义的hook中,简化组件代码 常见自定义hook例子: 封装一个简单的计数器 import {useS…...
Rk3568驱动开发_设备树点亮LED_10
设备树中添加节点 在设备树文件中添加led节点,添加完后需要重新编译内核,因为单独编译这个设备树文件生成的dtb文件目前不能直接做替换,所以要编译内核将编译好的boot.img文件烧录到设备里,boot.img里包含新添加的设备树节点&…...
大数据学习(82)-数仓详解
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
Unity学习之Shader(Phong与Blinn-Phong)
三、Lesson3 1、关键名称 向量 • nDir:法线方向,点乘操作时简称n; • lDir:光照方向,点乘操作时简称l; • vDir:观察方向,点乘操作时简称v; • rDir:光反…...
uniapp笔记-swiper组件实现轮播图
思路 主要就是参考 swiper | uni-app官网 实现轮播图。 实例 新建一个banner.vue通用组件。 代码如下: <template><view>轮播图</view> </template><script> </script><style> </style> 随后在index.vue中导…...
【C++ 继承】—— 青花分水、和而不同,继承中的“明明德”与“止于至善”
欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创…...
FPGA_YOLO(二)
上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。 对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。 FPGA关于YOLO的部署 1…...
蓝桥杯学习-14子集枚举,二进制枚举
子集枚举 一、回溯3-子集枚举(递归实现指数型枚举) 一旦涉及选与不选,删和不删,留和不留-->两种状态-->就要想到子集枚举例题1–递归实现指数型枚举19685 其实看不懂这个题目,好奇怪的题目。根据老师的解析来写…...
人工智能时代大学教育范式重构:基于AI编程思维的能力培养路径研究
人工智能技术的快速发展正在重塑高等教育的内容与方法。本文以AI编程教育为切入点,通过文献分析与案例研究,探讨AI时代大学教育的核心能力需求与教学范式转型路径。研究发现,AI编程中蕴含的系统性思维训练、项目架构能力和元认知能力培养机制…...
<数据集>轨道异物识别数据集<目标检测>
数据集下载链接:https://download.csdn.net/download/qq_53332949/90527370 数据集格式:VOCYOLO格式 图片数量:1659张 标注数量(xml文件个数):1659 标注数量(txt文件个数):1659 标注类别数:6 标注类别…...
结构型——享元模式
享元模式 享元模式的核心思想是通过共享技术减少大量细粒度对象的创建,降低内存占用并提升性能。换句话说,它通过分离对象的内部状态(可共享的固有属性)和外部状态(随场景变化的属性)实现对象复用。 特点…...
淘宝API关键词接口详解(实战案例)
以下为您详解淘宝API关键词接口的调用方法及实战案例: 一、接口定义与核心功能 淘宝关键词API是开放平台提供的标准化数据服务接口,允许开发者通过关键词检索商品全维度信息。其核心功能包括: 精准检索:支持商品标题、属性、类…...
Pyecharts功能详解与实战示例
一、Pyecharts简介 Pyecharts是一个基于Python的开源数据可视化库,它基于百度的Echarts库,提供了丰富的图表类型和强大的交互功能。通过Pyecharts,你可以轻松创建各种精美的图表,如折线图、柱状图、饼图、散点图、地图等…...
传统金融和分布式金融
文章目录 传统金融和分布式金融一、传统金融机构的核心问题深度剖析1. 支付与清算系统的结构性缺陷2. 金融排斥(Financial Exclusion)的根源3. 中心化风险的爆发与传导 二、DeFi的技术突破与创新机制1. 支付与清算:区块链的底层重构2. 普惠金…...
EasyUI数据表格中嵌入下拉框
效果 代码 $(function () {// 标记当前正在编辑的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …...
C语言:扫雷
在编程的世界里,扫雷游戏是一个经典的实践项目。它不仅能帮助我们巩固编程知识,还能锻炼逻辑思维和解决问题的能力。今天,就让我们一起用 C 语言来实现这个有趣的游戏,并且通过图文并茂的方式,让每一步都清晰易懂 1. 游…...
操作系统必知的面试题
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
清华大学.智灵动力-《DeepSeek行业应用实践报告》附PPT下载方法
导 读INTRODUCTION 今天分享是由清华大学.智灵动力:《DeepSeek行业应用实践报告》,主要介绍了DeepSeek模型的概述、优势、使用技巧、与其他模型的对比,以及在多个行业中的应用和未来发展趋势。为理解DeepSeek模型的应用和未来发展提供了深入的…...
数据库三级填空+应用题(1)
填空 35【答案】TOP 3 WITH TIES 【解析】希望选出商品数量最多的前3类商品,并获得相应的商品类别和数量。with ties一般是和Top 、 order by相结合使用,表示包括与最后一行order by后面的参数取值并列的结果。 36在SQL Server 2008中,每个数据页可存储8…...
可视化图解算法:链表的奇偶重排(排序链表)
1. 题目 描述 给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。 注意是节点的编号而非节点的数值。 数据范围:节点数量满足 0≤n≤105,节点中的值都满足 0≤val≤10000 要…...
