1. 配置好串口3的波特率,MD0引脚接低电平,处于无线通信模式。
  2. 串口3的初始化
#include "usart3.h"
#include "stdio.h"
#include "string.h"
#include "stdarg.h"    //串口发送缓存区
__align(8) u8 USART3_TX_BUF[USART3_MAX_SEND_LEN];   //发送缓冲,最大USART3_MAX_SEND_LEN字节
extern uint8_t Temp;void USART3_Init(u32 bound)
{//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); //使能GPIOD时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能USART2时钟//串口1对应引脚复用映射GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3); //GPIOD5复用为USART2GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3); //GPIOD6复用为USART2//USART1端口配置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; //GPIOD5与GPIOD6GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //速度50MHzGPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PD9,PD10//USART1 初始化设置USART_InitStructure.USART_BaudRate = bound;//波特率设置USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式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(USART3, &USART_InitStructure); //初始化串口1USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启相关中断//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;//串口2中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;      //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ通道使能NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、USART_Cmd(USART3, ENABLE);  //使能串口1
}
//串口3,printf 函数
//确保一次发送数据不超过USART3_MAX_SEND_LEN字节
void u3_printf(char* fmt,...)  //...表示可变参数
{  u16 i,j;va_list ap;va_start(ap,fmt);vsprintf((char*)USART3_TX_BUF,fmt,ap);va_end(ap);i=strlen((const char*)USART3_TX_BUF);                     //此次发送数据的长度for(j=0;j<i;j++)                                          //循环发送数据{while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);//等待上次传输完成 USART_SendData(USART3,(uint8_t)USART3_TX_BUF[j]);     //发送数据到串口3 }}void USART3_IRQHandler(void)
{//  if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
//  {//      Temp =USART_ReceiveData(USART3);
//      USART_SendData(USART1,Temp);
//      while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
//  }
}
  1. 主函数中实现每隔一秒发送一次
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "usart3.h"//LORA-01 发送端uint8_t Temp;
static uint8_t num=0;
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);        //延时初始化uart_init(115200);  //串口初始化波特率为115200USART3_Init(9600);LED_Init();             //初始化与LED连接的硬件接口printf("\r\n您发送的消息为:\r\n");while (1){delay_ms(1000);u3_printf("LED0-%d\r\n",num++);printf("LED0-%d\r\n",num++);}
}
同样,在另外一个芯片上,配置好串口3的波特率,作为无线的接收#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
#include "key.h"void USART3_Init(u32 bound);
void Temp_config(void);
uint8_t Temp;int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);        //延时初始化uart_init(115200);  //串口初始化波特率为115200USART3_Init(9600);LED_Init();             //初始化与LED连接的硬件接口printf("\r\n您发送的消息为:\r\n");while (1){}
}
void USART3_Init(u32 bound)
{//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); //使能GPIOD时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能USART2时钟//串口1对应引脚复用映射GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3); //GPIOD5复用为USART2GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3); //GPIOD6复用为USART2//USART1端口配置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; //GPIOD5与GPIOD6GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //速度50MHzGPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PD9,PD10//USART1 初始化设置USART_InitStructure.USART_BaudRate = bound;//波特率设置USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式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(USART3, &USART_InitStructure); //初始化串口1USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启相关中断//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;//串口2中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;      //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ通道使能NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、USART_Cmd(USART3, ENABLE);  //使能串口1
}void USART3_IRQHandler(void)
{if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET){Temp =USART_ReceiveData(USART3);USART_SendData(USART1,Temp);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);      }
}void Temp_config(void)
{}
  1. 最后就可以实现无线通信的功能,我这里写的比较简单。

正点原子的ATK-LORA-01调试过程相关推荐

  1. 正点原子STM32F407+AD7606+RT-Thread Studio 调试记录

    介绍 项目要求采集6路压力传感器1-5V数据. 经过选型比较,选择AD7606 8通道采样器件,从淘宝买的采样模块. 时序图 说明:图一是整体的一个时序框图,大体的逻辑就是在使用AD7606之前要先复 ...

  2. 正点原子无线串口LORA模块透明传输学习整理

    基本上和正点原子手册上一样,只是为了以后使用方便,去除了屏幕显示和定向传输部分的代码. 串口使用串口三 定时器使用TIM7,用PA4记录AUX上升沿和下降沿变化. Lora简介 引脚配置及功能: 相关 ...

  3. 基于正点原子电机实验的pid调试助手代码解析(速度环控制)

    这里写目录标题 下位机与PID调试助手传输的原理 代码讲解(基于正点原子) 解析数据接受和数据发送的底层函数 数据接受 数据帧格式 环形数组以及怎么找到它的帧头位置 crc校验 数据发送 数据上传函数 ...

  4. 单元测试(01) 调试过程中遇到 Method isEmpty in android.text.TextUtils not mocked

    异常信息 java.lang.RuntimeException: Method isEmpty in android.text.TextUtils not mocked. See http://g.c ...

  5. dev c++怎么调试_「正点原子NANO STM32开发板资料连载」第十八章 USMART 调试组件...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十八章 U ...

  6. ATK BLE 01低功耗蓝牙配对调试经验

    目录 首先配置主机 配置从机 配对 最终效果 BLE调试心得 首先看好哪个是主机,哪个是从机,正点原子的低功耗蓝牙模块(BLE01或BLE02)是主从一体的,任何一个模块都可以配置为主模块或从模块. ...

  7. 【正点原子MP157连载】第二十八章 A7和M4联合调试-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  8. 基于stm32的正点原子Lora模块教程

    基于stm32的LoRa模块调试教程 初识LoRa 上手LoRa 程序编写 结果演示 再见LoRa 初识LoRa 简单来讲,LoRa就是一种低功耗远程无线通信技术.它是基于Semtech公司SX127 ...

  9. 基于STM32的正点原子LORA模块通信网络

    LoRa是semtech公司开发的一种低功耗局域网无线标准,其名称"LoRa"是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播 ...

  10. 韦东山 IMX6ULL和正点原子_【调试笔记】韦东山:在100ASK_IMX6ULL板子上支持其他型号的屏幕...

    目录 1. 我担心这有点尴尬 2. 移植思路 3. 移植LCD驱动 3.1 确定LCD参数 3.2 修改设备树 3.3 完善驱动 4. 移植触摸屏驱动 4.1 确定触摸屏型号 4.2 在设备树中指定触 ...

最新文章

  1. [转载自简书] ASPNetCore上传大文件碰到的一些问题总结
  2. [科技部与你共成长] 数组循环移位
  3. 淘宝top平台调用接口响应时间优化
  4. 我的未来计算机作文,我的未来作文(精选4篇)
  5. leetcode981. 基于时间的键值存储(treemap)
  6. 单元格格式_单元格格式的用法你知道吗~~
  7. Socket选项之SO_RCVTIMEO 和SO_SNDTIMEO
  8. python分布式框架celery项目开发_本项目在 Celery 分布式爬虫的基础上构建监控方案 Demo...
  9. IBM Machine Learning学习笔记——Time Series and Survival Analysis
  10. java volatile关键字的理解
  11. UNIQLO 11月销售额逆市上涨7.9%
  12. Java 编码规范8(编程规约-注释规约与其它)
  13. 军事指挥系统时间同步解决方案
  14. 企业上云“行稳致远”,新钛云服“服务+产品”模式升级上云、用云新思维 | 爱分析洞见...
  15. Dominating Patterns UVALive - 4670 (ac自动机)
  16. 这怎么可能:一千年前世界与中国差距有多大?
  17. APP服务器与Web服务器的区别是什么?
  18. 智能相机与工业相机_使用智能手机相机后如何移动到专用相机
  19. 1688采源宝的商家靠谱吗 怎么入驻成为阿里采源宝商家
  20. Babel 是干什么的

热门文章

  1. 结构体+枚举+联合体
  2. android monkeyrunner 命令,monkeyrunner 基础命令行
  3. 经典.net面试(net面试题汇总)20200227版本
  4. 2019最全Activity6.0工作流的介绍
  5. Java入门第88课——使用replaceAll实现字符串替换
  6. Django的MVT、MVC模式
  7. Mysql中isnull,ifnull,nullif的区别
  8. JAVA教程-JAVA语言基础框架知识学习点-JAVA精通必看
  9. 影响我学习过程的两个小机遇
  10. 信息系统项目管理-项目范围管理-(五)