当前位置: 首页 > news >正文

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]]。  

相关文章:

  • 汇编语言高级编程技巧:从基础到进阶
  • vue3动态绑定并通过按钮绑定事件 | 解决报错error ‘xxx‘ is not defined no-undef
  • 第二章 EXI协议原理与实现--9 设计完整的EXI编解码库
  • NEW!睿本云接入抖音「会员通」!
  • OpenCV旋转估计(3)图像拼接类cv::detail::MultiBandBlender
  • Android RemoteViews:跨进程 UI 更新的奥秘与实践
  • C++类与对象的第二个简单的实战练习-3.24笔记
  • 2025年渗透测试面试题总结-某美团-安全工程师实习(题目+回答)
  • MVVM、MVC、MVP 的区别
  • Python前缀和(例题:异或和,求和)
  • python中的变量 - 第一章
  • Linux第一节:Linux系统编程入门指南
  • 【参考资料 II】C 运算符大全:算术、关系、赋值、逻辑、条件、指针、符号、成员、按位、混合运算符
  • ctfshow WEB web签到题
  • 五种IO模型
  • 【JavaEE】Mybatis XML配置文件实现增删改查
  • 编程从键盘输入一个大写英文字符,将其转换为小写字符显示并显示出它的十进制,十六的 ASCI码。
  • Kubernetes集群中部署SonarQube服务
  • Gitee上库常用git命令
  • Babel 从入门到精通(四):@babel/template的应用实例与最佳实践
  • 国办印发《关于进一步加强困境儿童福利保障工作的意见》
  • 第一集|《刑警的日子》很生活,《执法者们》有班味
  • 中国驻美国大使馆发言人就中美经贸高层会谈答记者问
  • 复旦设立新文科发展基金,校友曹国伟、王长田联合捐赠1亿元
  • 李彦宏:技术迭代速度之快从业30年来未见过,要提升执行力战胜对手
  • 全国首例在沪完成,这项近视治疗手术不到10秒