头文件调用
#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
#include "flash.h"
#include "stm32l1xx_hal_flash_ex.h"
#include "stm32l1xx_hal_flash.h"
通过取字模取字
char ji[] ={0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x00,
0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00};/*"计",0*/
char shu[]={0x90,0x52,0x34,0x10,0xFF,0x10,0x34,0x52,0x80,0x70,0x8F,0x08,0x08,0xF8,0x08,0x00,
0x82,0x9A,0x56,0x63,0x22,0x52,0x8E,0x00,0x80,0x40,0x33,0x0C,0x33,0x40,0x80,0x00};/*"数",1*/
char qi[]={0x80,0x80,0x9E,0x92,0x92,0x92,0x9E,0xE0,0x80,0x9E,0xB2,0xD2,0x92,0x9E,0x80,0x00,
0x08,0x08,0xF4,0x94,0x92,0x92,0xF1,0x00,0x01,0xF2,0x92,0x94,0x94,0xF8,0x08,0x00};/*"器",2*/
char zhi[]={0x00,0x80,0x60,0xF8,0x07,0x04,0xE4,0xA4,0xA4,0xBF,0xA4,0xA4,0xE4,0x04,0x00,0x00,
0x01,0x00,0x00,0xFF,0x40,0x40,0x7F,0x4A,0x4A,0x4A,0x4A,0x4A,0x7F,0x40,0x40,0x00};/*"值",3*/
char jie[]={0x20,0x30,0xAC,0x63,0x20,0x18,0x08,0x48,0x48,0x48,0x7F,0x48,0x48,0x48,0x08,0x00,
0x22,0x67,0x22,0x12,0x12,0x12,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00};/*"结",4*/
char guo[]={0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x00,
0x44,0x44,0x24,0x25,0x14,0x0C,0x04,0xFF,0x04,0x0C,0x14,0x25,0x24,0x44,0x44,0x00};/*"果",5*/
char maohao[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*":",6*/
char wai[]={0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00};/*"Y",7*/
char nen[]={0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00};/*"N",8*/
界面部分
void chushi()
{
OLED_ShowCHineseArray(32,0,(char *)ji);
OLED_ShowCHineseArray(48,0,(char *)shu);
OLED_ShowCHineseArray(64,0,(char *)qi);
OLED_ShowCHineseArray(16,3,(char *)shu);
OLED_ShowCHineseArray(32,3,(char *)zhi);
OLED_ShowCHineseArray(48,3,(char *)maohao);
OLED_ShowString(56,3,(uint8_t *)"N-1");
OLED_ShowCHineseArray(16,6,(char *)jie);
OLED_ShowCHineseArray(32,6,(char *)guo);
OLED_ShowCHineseArray(48,6,(char *)maohao);
OLED_ShowString(56,6,(uint8_t *)"Y");
}
定义 Y N 及其flash的地址
uint32_t N = 0;
uint32_t Y = 1;
uint32_t TestAddr=0x0800F000;
初始化部分
void Init() {
// 开发板平台初始化
BoardInitMcu();
BoardInitPeriph();
keys_init();//按键初始化
setTimer2Callback(Time2Handler);
Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次
}
按键部分
void KeyDownHandler(void) {
if(isKey2Pressed())
{
resetKey2();
N--;
Y = N-1;
OLED_ShowNum(56,3,N,3,16);
OLED_ShowNum(56,6,Y,3,16);
}
else if(isKey3Pressed())
{
resetKey3();
N++;
Y=N-1;
OLED_ShowNum(56,3,N,3,16);
OLED_ShowNum(56,6,Y,3,16);
}
else if(isKey4Pressed())
{
resetKey4();
WriteFlashTest(0x0800F000,N);
WriteFlashTest(0x0800F000,Y);
GpioWrite(&Led2,1);
DelayMs(1000);
GpioWrite(&Led2,0);
}
}
主函数
int main( void )
{
Init();
OLED_Init();
chushi();
//USART1_Init(115200);
GpioWrite(&Led2,1);
N = PrintFlashTest(TestAddr); //读取flash地址的数据
Y = PrintFlashTest(TestAddr); //读取flash地址的数据
while( 1 )
{
KeyDownHandler();
}
}