[i=s] 本帖最后由 emika 于 2025-3-26 17:55 编辑 [/i]
前情基础
- 已经搭建好STM32F103C8T6开发环境,确保你所常用的下载器配合你的其他STM32F103C8T6开发板可以下载,正常跑通。
- 我买了两套LoRa-Kit+Ra-01转接板+Ra-01+双天线套餐。因为要一发一收,所以买了两套
https://detail.tmall.com/item.htm?abbucket=6&id=615979347868&rn=90f6767fffb15a37cebfe9eabf555689&spm=a1z10.3-b-s.w4011-22642361401.75.75ab623dXiW5H9&skuId=5433973253918

LoRa-Kit开发板STM32F103C8T6基本运行测试(非必要)
确认你的环境能编译下载+串口跑通
使用下面的代码目的为确认你的环境能编译下载+串口跑通,
只要是tx配置为GPIO_Pin_9,rx配置为GPIO_Pin_10,使用其他的demo也可以
这里以野火的核心板参考历程为例
完整版代码链接:https://pan.baidu.com/s/1l5kkKe0YZCTAmQbzZ3Sqcg?pwd=faxb
提取码:faxb
使用的是其中3-USART1接发的demo

解压后按照下面这个目录即可打开demo

开发板上已经有串口芯片,这个配置对应的是开发板串口芯片直连电脑的串口
下面为串口配置部分关键代码
一般对应的tx配置为GPIO_Pin_9,rx配置为GPIO_Pin_10
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
/*初始化USART 配置模式为 115200 8-N-1,中断接收*/
USART_Config();
/* 发送一个字符串 */
Usart_SendString( DEBUG_USARTx,"这是一个串口中断接收回显实验\n");
printf("欢迎使用STM32开发板\n\n\n\n");
while(1)
{
}
}
/**
* @brief USART GPIO 配置,工作参数配置
* @param 无
* @retval 无
*/
void USART_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// 打开串口GPIO的时钟
DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
// 打开串口外设的时钟
DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);
// 将USART Tx的GPIO配置为推挽复用模式
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN; // GPIO_Pin_9
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);
// 将USART Rx的GPIO配置为浮空输入模式
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN; //GPIO_Pin_10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
// 配置串口的工作参数
// 配置波特率
USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
// 配置 针数据字长
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
// 配置停止位
USART_InitStructure.USART_StopBits = USART_StopBits_1;
// 配置校验位
USART_InitStructure.USART_Parity = USART_Parity_No ;
// 配置硬件流控制
USART_InitStructure.USART_HardwareFlowControl =
USART_HardwareFlowControl_None;
// 配置工作模式,收发一起
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
// 完成串口的初始化配置
USART_Init(DEBUG_USARTx, &USART_InitStructure);
// 串口中断优先级配置
NVIC_Configuration();
// 使能串口接收中断
USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);
// 使能串口
USART_Cmd(DEBUG_USARTx, ENABLE);
}
烧录前注意这里要改为你自己所用的烧录器哦

如图连接,将烧录器swdio swclk gnd三个脚位和开发板连接
开发板背面有对应丝印

确认能烧录进去

烧录后,不连接其他线,使用sscom连接板载串口
按下复位键,效果如下
如果没有效果,在sscom里换一个串口

lora模组基础demo运行
https://docs.ai-thinker.com/lora%E8%A7%84%E6%A0%BC%E4%B9%A6
lora模组规格书
LoRa开发板规格书
里面有开发板原理图

发射模组制作
下载demo
https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E8%B5%84%E6%96%99

下载好了使用keil打开,和上面一样编译烧录
多接一个烧录器串口的RX(左下角黄线),对应板子上脚位是BT_TX
按下复位键

切换到烧录器自带的串口(注意不是开发板的),即可看到不停输出发送信息

确认能跑通后,把烧录器所有线拔除,用一个ttl,如图连接
建议使用如图连接5V供电
不建议使用ttl的3.3V供电,因为有些ttl可能会导致供电不足

可以看到ttl不断获得反馈数据。

到此,这个发送模组就做好了,而且已经在不断发送lora数据了
如此放在一边不停发送即可
接收模组制作
拿另一个套开发板,将发送的代码注释,改为接收函数,编译

和上面一样连接烧录器,同时连接烧录器的串口rx并烧录

烧录后按一下复位键即可不停接收到发送模组发来的数据
