LORA模块开发基础教程目录
- 物联网国赛LORA模块开发基础教程—开发环境配置
- 物联网国赛LORA模块开发基础教程—输出(LED)
- 物联网国赛LORA模块开发基础教程—输入(按键)
- 物联网国赛LORA模块开发基础教程—OLED屏幕
- 物联网国赛LORA模块开发基础教程—传感器
- 物联网国赛LORA模块开发基础教程—定时器
- 物联网国赛LORA模块开发基础教程—串口收发
- 物联网国赛LORA模块开发基础教程—读写内部FALSH
- 物联网国赛LORA模块开发基础教程—点对点通信
物联网国赛LORA模块开发基础教程(通用库)—串口收发
1.本节内容
- 串口发送
- 串口接收
- 串口控制LED灯
2.本节函数
USART1_Init(115200); //串口1初始化参数为波特率
//串口发送
printf();
//串口接收
USART1_RX_BUF; //接收缓冲,最大255个字节,串口来数据,此数组会自动填充数据,判断即可
USART1_ReceiveClr(); //通常每次判断结束后,清空缓冲区
//特别提示:要使用串口收发必须要在main.c里#include 串口的头文件以及main函数,否则会报错
#include "usart1-board.h"
3.本节代码
/**
******************************************************************************
* File Name : main.c
* Description : Main program body
******************************************************************************
*/
#include
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
//选手自行添加头文件
#include "adc_reader.h"
#include "usart1-board.h"
/**********************************************************************************************
*函数:void Init( void )
*功能:平台初始化
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void Init() {
// 开发板平台初始化
BoardInitMcu();
BoardInitPeriph();
keys_init();//按键初始化
setTimer2Callback(Time2Handler);
Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次
}
/**********************************************************************************************
*函数:void KeyDownHandler( void )
*功能:按钮事件监听
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void KeyDownHandler(void) {
}
/**********************************************************************************************
*函数:void handlerPre10Ms( void )
*功能:10毫秒循环
*输入:无
*输出:无
*特殊说明:循环处理总时长300ms
**********************************************************************************************/
void handlerPre10Ms(void) {
for (int delay = 0; delay 30; delay++) {
HAL_Delay(10);
}
}
/**
* Main application entry point.
*/
int main( void )
{
Init();
USART1_Init(115200);//参数为波特率
ADCS_Init();
while( 1 )
{
//串口发送
//光照传感器
AdcScanChannel();
printf("光照传感器电压值:%.2fVrn",AdcReadCh0()); //返回值就是电压值
HAL_Delay(500);
//串口接收,处理数据
if(USART1_RX_BUF[0] == 0X01) //如果串口数据第0位为 0X01
{
if(USART1_RX_BUF[1] == 0X01) //如果串口数据第1位为 0X01
GpioWrite(&Led1,0); //点亮LED1
else
GpioWrite(&Led1,1); //熄灭LED1
}
else if(USART1_RX_BUF[0] == 0X02) //如果串口数据第0位为 0X02
{
if(USART1_RX_BUF[1] == 0X01) //如果串口数据第1位为 0X01
GpioWrite(&Led2,0); //点亮LED1
else
GpioWrite(&Led2,1); //熄灭
}
USART1_ReceiveClr(); //通常每次判断结束后,清空缓冲区
}
}
4.实验效果
- 串口发送
- 串口接收
- 串口控制LED灯
5.本节相关知识
6.本节资源
百度网盘: 本节源码
7.结束语
上节内容:定时器
下节内容:Flash存储
本文章来源于互联网,如有侵权,请联系删除!