OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6449|回复: 11

串口发送的数据如何在断电之后不消失

[复制链接]

8

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-2-7
在线时间
0 小时
发表于 2014-7-11 10:53:46 | 显示全部楼层 |阅读模式
5金钱
串口发送闹钟时间,存入a[]中,断电之后再上电,a[]中的数据就消失了,怎样实现断电之后再上电,a[]的数据保持不变?
for(i=0;i<len;i++)
{
if(USART_RX_BUF==' ')
{
continue;
}
a[j]=(USART_RX_BUF-'0')*10+(USART_RX_BUF[i+1]-'0');
i++;
j++;
}
if(h==a[0]&&m==a[1]&&s==a[2]||(h==a[3]&&m==a[4]&&s==a[5])||(h==a[6]&&m==a[7]&&s==a[8])||(h==a[9]&&m==a[10]&&s==a[11])) //设置响铃时间
{
BEEP=1;
delay_ms(300); //延时300ms
BEEP=0;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2013-12-2
在线时间
0 小时
发表于 2014-7-11 11:40:47 | 显示全部楼层
写入Flash或者BKP寄存器接电池或者外接EEPROM
回复

使用道具 举报

8

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-2-7
在线时间
0 小时
 楼主| 发表于 2014-7-11 11:46:42 | 显示全部楼层
回复【2楼】pathletboy:
---------------------------------
如何写入BKP寄存器啊?
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2013-12-2
在线时间
0 小时
发表于 2014-7-11 14:27:26 | 显示全部楼层
回复【3楼】crystalcug:
---------------------------------
查看库函数BKP部分。
回复

使用道具 举报

11

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2014-4-4
在线时间
1 小时
发表于 2014-7-11 15:52:20 | 显示全部楼层
外部加一个EEPROM吧
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-11 23:21:42 | 显示全部楼层
回复【3楼】crystalcug:
---------------------------------
BKP寄存器写很简单的哦.
我们的RTC例程就有写BKP寄存器.不过要电池维持才能不丢,不爽.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-7-12 18:55:49 | 显示全部楼层
回复【2楼】pathletboy:
---------------------------------
正解。。。
写入Flash。可以参考我们的SPI FLASH(外部)或者 FLASH 模拟EEPROM (内部)
 BKP寄存器很简单参考RTC实验。
 外接EEPROM 参考我们的IIC实验。。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-7-12 18:56:56 | 显示全部楼层
你定义一个变量,变量毫无疑问会丢点丢失了。。。否则,那程序永远都只会执行一次,下次又从记忆的地方执行,这是不可能的。。。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

8

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-2-7
在线时间
0 小时
 楼主| 发表于 2014-7-16 16:13:05 | 显示全部楼层
回复【7楼】Admin:
---------------------------------
请教一下怎样向Flash写入数据啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-16 23:09:25 | 显示全部楼层
回复【9楼】crystalcug:
---------------------------------
请参考我们的FLASH模拟EEPROM例程.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-2-7
在线时间
0 小时
 楼主| 发表于 2014-7-17 14:44:31 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
我要将串口发送的数据写入Flash,程序是在while(1)中的,所以断电之后再上电,TEXT_Buffer[]中的数据也消失了,添加一个条件语句,使得只有串口发送数据之后才使TEXT_Buffer=USART_RX_BUF,if语句中的条件应该怎样写啊?
if()
for(i=0;i<len;i++)
{
TEXT_Buffer=USART_RX_BUF;
}>
回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
发表于 2014-7-17 19:07:01 | 显示全部楼层
你可以开辟一个地址放USART_RX_BUF;const unsigned char USART_RX_BUF[] __attribute__((at(ADDR(Flash地址)))) ;

读取的时候可以用memcpy(u8*&TEXT_Buffer,u8*&USART_RX_BUF,sizeof(TEXT_Buffer));

写的时候用Flash_Write(ADDR, (u8*)&TEXT_Buffer,sizeof(TEXT_Buffer));
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 01:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表