#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "stmflash.h"
//要写入到STM32 FLASH的字符串数组
int len;
int t;
int usartsize;
u8 TEXT_Buffer[]="STM32F103 FLASH TEST";
//写入的数字
int numforflash=1;
#define SIZE sizeof(TEXT_Buffer) //数组长度
#define FLASH_SAVE_ADDR 0X08070000 //设置FLASH 保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)
int main(void)
{
u8 key;
u16 i=0;
u16 times=0;
u8 datatemp[SIZE];
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
LCD_Init(); //初始化LCD
POINT_COLOR=RED; //设置字体为红色
while(1)
{
key=KEY_Scan(0);
if(key==KEY1_PRES) //KEY1按下,写入STM32 FLASH
{
STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)TEXT_Buffer,SIZE);
printf("写入内容!\r\n length:%d,\r\n",SIZE);
printf("infor:%s\r\n",TEXT_Buffer);
}
if(key==KEY0_PRES) //KEY0按下,读取字符串并显示
{
STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,SIZE);
printf("读取内容!\r\n %s\r\n",datatemp);
}
i++;
delay_ms(10);
if(i==20)
{
LED0=!LED0;//提示系统正在运行
i=0;
}
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息:\r\n\r\n");
printf("长度:%d \r\n\r\n",len);
printf("buf0:%d \r\n\r\n",USART_RX_BUF[0]);
//把收到的内容写入buffer
for(usartsize=0;usartsize<(len/SIZE)+1;usartsize++)
{
for(t=0;t<len;t++)
{
TEXT_Buffer[t]=USART_RX_BUF[t];
}
STMFLASH_Write(FLASH_SAVE_ADDR+usartsize*SIZE,(u16*)TEXT_Buffer,SIZE);
}
printf("%s",USART_RX_BUF);
if (USART_RX_BUF[0] == 49)
{
// 执行对应的操作
// ...
printf("\r\n您发送了1,红灯将打开\r\n\r\n");
LED0=0;
}
if (USART_RX_BUF[0] == 50)
{
// 执行对应的操作
// ...
printf("\r\n您发送了2,红灯将熄灭\r\n\r\n");
LED0=1;
}
printf("\r\n您发送的全部内容为:\r\n\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("\r\n串口正在运行中!按键收消息,串口输入1,或者2控制字符串内容!\r\n");
}
delay_ms(10);
}
}
}
01-13
315
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-06
1975
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)