初级会员

- 积分
- 103
- 金钱
- 103
- 注册时间
- 2019-7-9
- 在线时间
- 25 小时
|
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "stmflash.h"
#include "oled.h"
//要写入到STM32 FLASH的字符串数组
const u8 TEXT_Buffer[]={"STM32F103 "};
#define SIZEp sizeof(TEXT_Buffer) //数组长度
#define FLASH_SAVE_ADDR 0X08070000 //设置FLASH 保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)
int main(void)
{
u8 key;
u16 i=0;
u8 datatemp[SIZEp];
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
OLED_Init();
OLED_Clear(); //初始化LCD
while(1)
{
key=KEY_Scan(0);
if(key==KEY1_PRES) //KEY1按下,写入STM32 FLASH
{
OLED_ShowString(0,0,"Start Write FLASH....");
STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)TEXT_Buffer,SIZEp);
OLED_ShowString(5,2,"FLASH Write Finished!");//提示传送完成
}
if(key==KEY0_PRES) //KEY0按下,读取字符串并显示
{
OLED_Clear();
STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,SIZEp);
OLED_ShowString(0,0,"The Data Readed Is: ");//提示传送完成
OLED_ShowString(5,2,datatemp);//显示读到的字符串
}
i++;
delay_ms(10);
if(i==20)
{
LED0=!LED0;//提示系统正在运行
i=0;
}
}
}
用的原子哥的例程,改成了OLED 显示,可以把数据写进去,OLED上可以显示“FLASH Write Finished!”,但是读数据的时候什么也不显示,把读取函数删了,OLED会有显示,希望大佬能帮忙解决,感激不尽
|
|