打印

bkp寄存器能不能作为数据存储器用呢?

[复制链接]
2385|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kexd2004|  楼主 | 2010-4-29 12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kexd2004 于 2010-4-30 09:32 编辑

若我的数据不多,能不能保存到bkp寄存器(通过电池保持其数据)呢?
因为大容量器件的bkp空间有42个16位的空间,即84B
沙发
kexd2004|  楼主 | 2010-4-30 10:06 | 只看该作者

把数据写到bkp寄存器有问题,哪位大虾能帮忙看看

本帖最后由 kexd2004 于 2010-5-3 10:30 编辑

void main()
{
#ifdef DEBUG
debug();
#endif
   RCC_Configuration();
   
    NVIC_Configuration();
    GPIO_Configuration();

GPIO_SetBits(GPIOE, GPIO_Pin_7);
GPIO_SetBits(GPIOC, GPIO_Pin_2);
GPIO_SetBits(GPIOC, GPIO_Pin_3);
TM2_Configuration();

/* Enable PWR(电源控制) and BKP clock */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
   
/* Enable write access to Backup domain */
    PWR_BackupAccessCmd(ENABLE);

/* Clear Tamper pin Event(TE) pending flag */
    BKP_ClearFlag();

/* Tamper pin active on low level */
    BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low);
/* Enable Tamper interrupt */
    BKP_ITConfig(ENABLE);
/* Enable Tamper pin */
    BKP_TamperPinCmd(ENABLE);

    yaData = BKP_ReadBackupRegister(BKP_DR1);
   temp_ya = BKP_ReadBackupRegister(BKP_DR2);//寄存器数据读出来

/* Write data to Backup DRx registers */
    /*WriteToBackupReg(0xA53C);
if(CheckBackupReg(0xA53C) == 0x00)
{
     GPIO_ResetBits(GPIOC, GPIO_Pin_2);
}
else
{
    GPIO_SetBits(GPIOC, GPIO_Pin_2);
}*/
while(1)
{
  if(yaFlag)
  {
     yaFlag = 0;
     BKP_WriteBackupRegister(BKP_DR1, yaData);//写数据到寄存器
     yaData++;
     BKP_WriteBackupRegister(BKP_DR2, 2);
     BKP_WriteBackupRegister(BKP_DR3, 3);
   
  }
  display_total_value();
  display_win_value();
  display_ya_value(0,BKP->DR1);//显示出来
  display_ya_value(1,BKP->DR2);
  display_ya_value(2,BKP->DR3);
  display_ya_value(3,BKP->DR4);
  display_ya_value(4,BKP->DR5);
  display_ya_value(5,BKP->DR6);
  display_ya_value(6,temp_ya);}

使用特权

评论回复
板凳
kexd2004|  楼主 | 2010-4-30 15:50 | 只看该作者
本帖最后由 kexd2004 于 2010-5-3 13:35 编辑

已解决

使用特权

评论回复
地板
香水城| | 2010-5-3 16:14 | 只看该作者
如何解决的?

使用特权

评论回复
5
kexd2004|  楼主 | 2010-5-3 16:56 | 只看该作者
本帖最后由 kexd2004 于 2010-5-3 17:54 编辑

仔细看了数据手册,初始化有问题:
1.BKP_DeInit()原型是
BKP_DeInit(void)//Forces or releases the Backup domain reset
{
   RCC_BackupResetCmd(ENABLE);
   RCC_BackupResetCmd(DISABLE);
}
这个函数不能加上去,或者直接用RCC_BackupResetCmd(DISABLE);

2.不用干扰检测,即下面的函数都不用或禁止
/* Tamper pin active on low level */
    BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low);
/* Enable Tamper interrupt */
    BKP_ITConfig(ENABLE);
/* Enable Tamper pin */
    BKP_TamperPinCmd(ENABLE);
3.顺便提一下,读写BKP数据不必同步总线,使用RTC才用(我没有用RTC)
4.还不知道使用BKP+电池 做数据存储器是否安全可靠呢,主要是功耗不知多大,即电池能用多久的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

65

帖子

1

粉丝