LORA模块开发基础教程目录
- 物联网国赛LORA模块开发基础教程—开发环境配置
- 物联网国赛LORA模块开发基础教程—输出(LED)
- 物联网国赛LORA模块开发基础教程—输入(按键)
- 物联网国赛LORA模块开发基础教程—OLED屏幕
- 物联网国赛LORA模块开发基础教程—传感器
- 物联网国赛LORA模块开发基础教程—定时器
- 物联网国赛LORA模块开发基础教程—串口收发
- 物联网国赛LORA模块开发基础教程—读写内部FALSH
- 物联网国赛LORA模块开发基础教程—点对点通信
物联网国赛LORA模块开发基础教程(通用库)—读写内部FALSH
1.本节内容
- 每次复位自动读取Flash里的值
- 每次复位自动写入Flash里的值+1
2.本节函数
//为了方便先在main.c #defin Flash的起始地址和数据长度
#define Addr_Reserved 0X0800E000 //起始地址
#define Flash_Data_Len1 //数据长度
//写入Flash数据
STMFLASH_Write(Addr_Reserved,(uint32_t*)"123456789",Flash_Data_Len);//写内部FALSH
//读取Flash数据
STMFLASH_Read(Addr_Reserved,Flash_Data,Flash_Data_Len);//读内部FALSH
//特别提示:要使用光照传感器必须要在main.c里#include Flash的头文件以及main函数,否则会报错
#include "flash.h"
3.本节代码
/**
******************************************************************************
* File Name : main.c
* Description : Main program body
******************************************************************************
*/
#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
//选手自行添加头文件
#include "hal_oled.h"
#include "flash.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.
*/
#define Addr_Reserved 0X0800E000//起始地址
#define Flash_Data_Len 1//数据长度
uint32_t Flash_Data[1];
int main( void )
{
Init();
OLED_Init();
STMFLASH_Read(Addr_Reserved,Flash_Data,Flash_Data_Len);//读内部FALSH
OLED_ShowNum(0,2,Flash_Data[0],3,16); //显示Flash的值
Flash_Data[0]++;
STMFLASH_Write(Addr_Reserved,(uint32_t*)Flash_Data,Flash_Data_Len);//写内部FALSH
while( 1 )
{
}
}
4.实验效果
- 每次复位自动读取Flash里的值
- 每次复位自动写入Flash里的值+1
5.本节相关知识
6.本节资源
百度网盘: 本节源码