一、前期准备
单片机:STM32F103C8T6*2
开发环境:MDK5.14
库函数:标准库V3.5
433M模块:淘宝有售

二、实验效果
2.1 Master 初始化

2.2 Slave 初始化

2.3 Master发送,Slave接收


2.4 Slave发送,Master接收

三、驱动原理
按照文档配置,SET脚置1为配置模式,绿色灯会亮起,SET脚清零为工作模式。
需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。

四、驱动代码
4.1 Master
wireless_433m.h

#ifndef __CONF_433M_H__
#define __CONF_433M_H__
#include "stm32f10x.h"
#include "gpio.h"
#include "uart.h"
//Rate of Work
#define     Rate_Defualt        0x00        //20dBm
#define     Rate_1dBm           0x01
#define     Rate_2dBm           0x02
#define     Rate_5dBm           0x03
#define     Rate_8dBm           0x04
#define     Rate_11dBm          0x05
#define     Rate_14dBm          0x06
#define     Rate_17dBm          0x07
#define     Rate_20dBm          0x08//Baudrate
#define     Buad_Default        0x00        //9600
#define     Buad_1200           0x01
#define     Buad_2400           0x02
#define     Buad_4800           0x03
#define     Buad_9600           0x04
#define     Buad_19200          0x05
#define     Buad_38400          0x06
#define     Buad_57600          0x07
#define     Buad_115200         0x08//RF Baudrate
#define     RF_Buad_Defualt     0x00        //10k bps
#define     RF_Baud_500         0x01
#define     RF_Baud_2400        0x02
#define     RF_Baud_10000       0x03
#define     RF_Baud_20000       0x04
#define     RF_Baud_40000       0x05
#define     RF_Baud_100000      0x06
#define     RF_Baud_150000      0x07
#define     RF_Baud_250000      0x08//Serial Port Format
#define     Serial_Mode_default 0x00        //8N1
#define     Serial_Mode_8N1     0x01
#define     Serial_Mode_8O1     0x02
#define     Serial_Mode_8E1     0x03//Frequency Band
#define     Frequency_Default   0x02
#define     Frequency_433M      0x00
#define     Frequency_315M      0x01
#define     Frequency_433M_1    0x02
#define     Frequency_868M_915M 0x03/* Master IO Definitions */
#define     M_TXD_Pin       GPIO_Pin_2
#define     M_RXD_Pin       GPIO_Pin_3
#define     M_SET           PAout(5)
#define     M_Mode_Config   M_SET = 0
#define     M_Mode_Work     M_SET = 1#define       M_Test_Key      PAin(0)#define      RecLen      64extern uint8_t M_RecData[RecLen];
extern uint8_t *M_pIndex;
extern uint8_t *M_pWrite;
extern uint8_t *M_pRead;
extern uint8_t M_DataLen;extern void Wireless_433MConfiguration(void);
extern void Wireless_433MInitalized(void);
#endif

wireless_433m.c

#include "conf_433m.h"uint8_t M_RecData[RecLen] = {0};
uint8_t *M_pIndex = M_RecData;
uint8_t *M_pWrite = M_RecData;
uint8_t *M_pRead = M_RecData;
uint8_t M_DataLen = 0;void Wireless_433MConfiguration(void)
{GPIO_InitTypeDef    GPIO;//Enable APB2 BusRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//Register IO GPIO.GPIO_Pin   = GPIO_Pin_5;GPIO.GPIO_Speed = GPIO_Speed_50MHz;GPIO.GPIO_Mode  = GPIO_Mode_Out_OD;GPIO_Init(GPIOA, &GPIO);GPIO.GPIO_Pin   = GPIO_Pin_0;GPIO.GPIO_Mode  = GPIO_Mode_IPU;GPIO_Init(GPIOA, &GPIO);M_Mode_Config;
}void Wireless_433MInitalized(void)
{uint8_t Wireless_433_Conf[15] = {0};uint16_t Base_Freq = 430;uint8_t i = 0;uint16_t Checksum = 0;//F8 00 00 00 28 12 34 12 34 00 00 02 B6//0  1  2  3  4  5  6  7  8  9  10 11 12Wireless_433_Conf[0] = 0xF8;Wireless_433_Conf[1] = Buad_Default;Wireless_433_Conf[2] = Rate_Defualt;Wireless_433_Conf[3] = (uint8_t)(((434 - Base_Freq)*10) / 256);Wireless_433_Conf[4] = (uint8_t)(((434 - Base_Freq)*10) % 256);Wireless_433_Conf[5] = 0x11;Wireless_433_Conf[6] = 0x11;Wireless_433_Conf[7] = 0x22;Wireless_433_Conf[8] = 0x22;Wireless_433_Conf[9] = RF_Buad_Defualt;Wireless_433_Conf[10] = Serial_Mode_default;Wireless_433_Conf[11] = Frequency_Default;for (i = 1; i < 12; i ++){Checksum += Wireless_433_Conf[i];}Wireless_433_Conf[12] = (uint8_t)(Checksum % 256);printf("Master Config Cmd: ");for (i = 0; i < 13; i ++){printf("%02X ", Wireless_433_Conf[i]);}printf("\r\n");for (i = 0; i  < 13; i ++){USART_Send(USART2, Wireless_433_Conf[i]);}while(M_DataLen == 0);printf("M_RecData: %s\r\n", M_RecData);if (M_DataLen == 2){if (M_RecData[0] == 'O' && M_RecData[1] == 'K')printf("Config Master PASS!\r\n");}else if (M_DataLen == 5){printf("Config Master Error!\r\n");}else{printf("DataLen = %d!\r\n", M_DataLen);}M_DataLen = 0;memset(M_RecData, 0, RecLen);M_Mode_Work;
}

4.2 Slave
wireless_433m.h

#ifndef __CONF_433M_H__
#define __CONF_433M_H__
#include "stm32f10x.h"
#include "gpio.h"
#include "uart.h"
//Rate of Work
#define     Rate_Defualt        0x00        //20dBm
#define     Rate_1dBm           0x01
#define     Rate_2dBm           0x02
#define     Rate_5dBm           0x03
#define     Rate_8dBm           0x04
#define     Rate_11dBm          0x05
#define     Rate_14dBm          0x06
#define     Rate_17dBm          0x07
#define     Rate_20dBm          0x08//Baudrate
#define     Buad_Default        0x00        //9600
#define     Buad_1200           0x01
#define     Buad_2400           0x02
#define     Buad_4800           0x03
#define     Buad_9600           0x04
#define     Buad_19200          0x05
#define     Buad_38400          0x06
#define     Buad_57600          0x07
#define     Buad_115200         0x08//RF Baudrate
#define     RF_Buad_Defualt     0x00        //10k bps
#define     RF_Baud_500         0x01
#define     RF_Baud_2400        0x02
#define     RF_Baud_10000       0x03
#define     RF_Baud_20000       0x04
#define     RF_Baud_40000       0x05
#define     RF_Baud_100000      0x06
#define     RF_Baud_150000      0x07
#define     RF_Baud_250000      0x08//Serial Port Format
#define     Serial_Mode_default 0x00        //8N1
#define     Serial_Mode_8N1     0x01
#define     Serial_Mode_8O1     0x02
#define     Serial_Mode_8E1     0x03//Frequency Band
#define     Frequency_Default   0x02
#define     Frequency_433M      0x00
#define     Frequency_315M      0x01
#define     Frequency_433M_1    0x02
#define     Frequency_868M_915M 0x03/* Slave IO Definitions */
#define     S_TXD_Pin       GPIO_Pin_2
#define     S_RXD_Pin       GPIO_Pin_3
#define     S_SET           PAout(5)
#define     S_Mode_Config   S_SET = 0
#define     S_Mode_Work     S_SET = 1#define       S_Test_Key      PAin(0)#define      RecLen      64extern uint8_t S_RecData[RecLen];
extern uint8_t *S_pIndex;
extern uint8_t *S_pWrite;
extern uint8_t *S_pRead;
extern uint8_t S_DataLen;extern void Wireless_433MConfiguration(void);
extern void Wireless_433MInitalized(void);
#endif

wireless_433.c

#include "conf_433m.h"uint8_t S_RecData[RecLen] = {0};
uint8_t *S_pIndex = S_RecData;
uint8_t *S_pWrite = S_RecData;
uint8_t *S_pRead = S_RecData;
uint8_t S_DataLen = 0;void Wireless_433MConfiguration(void)
{GPIO_InitTypeDef    GPIO;//Enable APB2 BusRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//Register IO GPIO.GPIO_Pin   = GPIO_Pin_5;GPIO.GPIO_Speed = GPIO_Speed_50MHz;GPIO.GPIO_Mode  = GPIO_Mode_Out_OD;GPIO_Init(GPIOA, &GPIO);GPIO.GPIO_Pin   = GPIO_Pin_0;GPIO.GPIO_Mode  = GPIO_Mode_IPU;GPIO_Init(GPIOA, &GPIO);S_Mode_Config;
}void Wireless_433MInitalized(void)
{uint8_t Wireless_433_Conf[15] = {0};uint16_t Base_Freq = 430;uint8_t i = 0;uint16_t Checksum = 0;//F8 00 00 00 28 12 34 12 34 00 00 02 B6//0  1  2  3  4  5  6  7  8  9  10 11 12Wireless_433_Conf[0] = 0xF8;Wireless_433_Conf[1] = Buad_Default;Wireless_433_Conf[2] = Rate_Defualt;Wireless_433_Conf[3] = (uint8_t)(((434 - Base_Freq)*10) / 256);Wireless_433_Conf[4] = (uint8_t)(((434 - Base_Freq)*10) % 256);Wireless_433_Conf[5] = 0x22;Wireless_433_Conf[6] = 0x22;Wireless_433_Conf[7] = 0x11;Wireless_433_Conf[8] = 0x11;Wireless_433_Conf[9] = RF_Buad_Defualt;Wireless_433_Conf[10] = Serial_Mode_default;Wireless_433_Conf[11] = Frequency_Default;for (i = 1; i < 12; i ++){Checksum += Wireless_433_Conf[i];}Wireless_433_Conf[12] = (uint8_t)(Checksum % 256);printf("Slave Config Cmd: ");for (i = 0; i < 13; i ++){printf("%02X ", Wireless_433_Conf[i]);}printf("\r\n");for (i = 0; i  < 13; i ++){USART_Send(USART2, Wireless_433_Conf[i]);}while(S_DataLen == 0);printf("S_RecData: %s\r\n", S_RecData);if (S_DataLen == 2){if (S_RecData[0] == 'O' && S_RecData[1] == 'K')printf("Config Slave PASS!\r\n");}else if (S_DataLen == 5){printf("Config Slave Error!\r\n");}else{printf("DataLen = %d!\r\n", S_DataLen);}S_DataLen = 0;memset(S_RecData, 0, RecLen);S_Mode_Work;
}

由于作者能力有限,有不妥之处欢迎指正,邮箱alex_hua@foxmail.com

433M串口模块无线通信(STM32)相关推荐

  1. 使用CH340串口模块对STM32进行程序下载

    使用CH340串口模块对STM32进行程序下载 一.接线 二.利用FlyMcu进行STM32程序下载 1.STM32配置 2.FlyMcu配置 一.接线 CH340 STM32 VCC VCC GND ...

  2. MJKDZ PS2手柄控制OskarBot小车(三):STM32接收无线串口模块的数据并处理

    MJKDZ PS2手柄控制OskarBot小车(三):无线串口模块接收数据并处理 [目录] 1.硬件与软件设计思路 - 1.1 硬件资源 - 1.2 STM32串口接收数据的方法 2.源代码详解 - ...

  3. stm32驱动Lora串口模块

    本文使用的硬件 stm32MCU+亿佰特-Lora串口模块,型号E32-433T20D 定义各配置字节 /*配置报文头部选项*/ #define HEAD_Save 0xC0//配置后掉电保存 #de ...

  4. 【无线串口模块快速选型指南】通信频点、芯片、通信距离、功率灵敏度、电流 空中速率

    目录 简介 串口模块的选型要点 01 通信频点 02 芯片方案 03 通信距离 04 发射功率.接收灵敏度 发射功率 接收灵敏度 05 发射电流.接收电流.休眠电流 06  空中速率 07 天线接口形 ...

  5. 基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发

    本文主要面向刚开始接触嵌入式开发的小白,详细介绍如何搭建基于蓝牙的STM32无线控制硬件平台,蓝牙模块使用淘宝上的HC-05串口转蓝牙模块,开发板使用基于STM32F407的航发RH407. 实验器材 ...

  6. HC-05蓝牙模块与STM32控制led灯亮详解

    HC-05蓝牙模块与STM32控制led灯亮 一.HC-05蓝牙模块解析 1.简介 2.HC-05原理 3.HC-05实物图 二.使用AT指令进行配置 1.进入命令响应工作模式 2.配置串口 3.进行 ...

  7. ch340串口驱动_如何使用串口来给STM32下载程序

    前言 第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成.后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进 ...

  8. 无线串口模块通信技术参数快速选型指南

    首先我们来说一下什么是无线串口模块?无线模块即是通过无线电信号来传输数据的软硬件模组,串口模块即是使用串口通信协议来传输数据的软硬件模组,那么无线串口模块也就是使用串口协议来进行无线电通信的软硬件模组 ...

  9. CH9121串口转以太网模块STM32驱动

    CH9121串口转以太网模块STM32驱动 文章目录 CH9121串口转以太网模块STM32驱动 0. 简介 1. 特性: 2. 应用场合 3. 示例平台 4. 代码 0. 简介 CH9121 集成T ...

最新文章

  1. matlab中的mkdir函数_科学网—Matlab中计算函数运行时间的三种方法及判断新建文件夹 - 张伟的博文...
  2. EasyUI--datebox设置默认时间
  3. Zabbix实现微信告警
  4. 60%收入来自海外,VC追着投资,这匹千里马如此回答“AI往何处去”
  5. docker安装最新版Jenkins:拉取镜像/创建容器
  6. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
  7. 选择条件WD_SELECT_OPTIONS_20
  8. outlook qr码在哪里_胡志明市第一次将QR码附加在街道名称板上,目的是什么?
  9. 手机应用的照相录像功能,为什么转到后台就不能工作了?
  10. 搭建影视APP需要准备的工具
  11. 目标检测-ImageAI从安装到使用详解
  12. 【C语言初学】C语言中表示次方与开根
  13. 微信小程序获取位置信息基于腾讯地图实现
  14. unity支持的模型数据格式,unity3d模型制作规范
  15. lattice fpga ddr3 读写控制
  16. arcgis sceneView 风场
  17. CSP初赛基础知识整理
  18. 2022年11月编程语言排行
  19. 2021年,我们 CSDN App做了什么?
  20. js 截取指定字符前的字符

热门文章

  1. Oracle EBS Interface/API(18) - 标准采购订单、PBA和一揽子发放等等审批API
  2. Windows CE 6.0 环境搭建
  3. 三维翼智发光字3D字壳打印机有什么功能?
  4. 高频电子线路:小功率调幅发射机multisim设计学习记录
  5. Mysql安装-Centos7-阿里云虚拟主机
  6. 幻影追逐者服务器维护,《幻影追逐者》游戏特色曝光 开启与邪恶争斗冒险之旅...
  7. 医用雾化器芯片/PCBA方案
  8. python深度遍历
  9. 眨眼控制 眨眼检测 眼球运动来控制指令
  10. POJ1009:Edge Detection