糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 433M串口模块无线通信(STM32)

433M串口模块无线通信(STM32)

时间:2023-08-30 16:11:54

相关推荐

433M串口模块无线通信(STM32)

一、前期准备

单片机: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#defineRate_Defualt0x00//20dBm#defineRate_1dBm0x01#defineRate_2dBm0x02#defineRate_5dBm0x03#defineRate_8dBm0x04#defineRate_11dBm0x05#defineRate_14dBm0x06#defineRate_17dBm0x07#defineRate_20dBm0x08//Baudrate #defineBuad_Default0x00//9600#defineBuad_12000x01#defineBuad_24000x02#defineBuad_48000x03#defineBuad_96000x04#defineBuad_192000x05#defineBuad_384000x06#defineBuad_576000x07#defineBuad_1152000x08//RF Baudrate#defineRF_Buad_Defualt0x00//10k bps#defineRF_Baud_5000x01#defineRF_Baud_24000x02#defineRF_Baud_100000x03#defineRF_Baud_200000x04#defineRF_Baud_400000x05#defineRF_Baud_1000000x06#defineRF_Baud_1500000x07#defineRF_Baud_2500000x08//Serial Port Format#defineSerial_Mode_default0x00//8N1#defineSerial_Mode_8N10x01#defineSerial_Mode_8O10x02#defineSerial_Mode_8E10x03//Frequency Band #defineFrequency_Default0x02#defineFrequency_433M0x00#defineFrequency_315M0x01#defineFrequency_433M_10x02#defineFrequency_868M_915M0x03/* Master IO Definitions */#defineM_TXD_PinGPIO_Pin_2#defineM_RXD_Pin GPIO_Pin_3#defineM_SETPAout(5)#defineM_Mode_ConfigM_SET = 0#defineM_Mode_WorkM_SET = 1#defineM_Test_KeyPAin(0)#defineRecLen64extern 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#defineRate_Defualt0x00//20dBm#defineRate_1dBm0x01#defineRate_2dBm0x02#defineRate_5dBm0x03#defineRate_8dBm0x04#defineRate_11dBm0x05#defineRate_14dBm0x06#defineRate_17dBm0x07#defineRate_20dBm0x08//Baudrate #defineBuad_Default0x00//9600#defineBuad_12000x01#defineBuad_24000x02#defineBuad_48000x03#defineBuad_96000x04#defineBuad_192000x05#defineBuad_384000x06#defineBuad_576000x07#defineBuad_1152000x08//RF Baudrate#defineRF_Buad_Defualt0x00//10k bps#defineRF_Baud_5000x01#defineRF_Baud_24000x02#defineRF_Baud_100000x03#defineRF_Baud_200000x04#defineRF_Baud_400000x05#defineRF_Baud_1000000x06#defineRF_Baud_1500000x07#defineRF_Baud_2500000x08//Serial Port Format#defineSerial_Mode_default0x00//8N1#defineSerial_Mode_8N10x01#defineSerial_Mode_8O10x02#defineSerial_Mode_8E10x03//Frequency Band #defineFrequency_Default0x02#defineFrequency_433M0x00#defineFrequency_315M0x01#defineFrequency_433M_10x02#defineFrequency_868M_915M0x03/* Slave IO Definitions */#defineS_TXD_PinGPIO_Pin_2#defineS_RXD_Pin GPIO_Pin_3#defineS_SETPAout(5)#defineS_Mode_ConfigS_SET = 0#defineS_Mode_WorkS_SET = 1#defineS_Test_KeyPAin(0)#defineRecLen64extern 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@

如果觉得《433M串口模块无线通信(STM32)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。