Forum: Gesperrte Threads Backup RAM Register


von Ma B. (drumstick)


Lesenswert?

Hallo zusammen!

Ich arbeite mit dem STM32F103VDT6 und dem uVision von Keil.

Ich schreibe per Tastendruck ins Backup RAM Register DR1. Nach einem 
Poweron schreibe ich den Wert vom BKP zurückt in die Zählervariable.

Am Vbat, der nach einem Spannungsabfall an Vdd per internem Switch 
automatisch zugeschalten wird, hängt ein Kondensator mit einer Diode. 
Nach einem Poweroff beträgt die Spannung am Kondensator 2.68V.

Das Problem nun ist, dass nach einem Poweroff die Daten im BKP Ram 
verloren gehen.

Ich verwende die StandartLib.

Mein Code:
1
#include <RTL.h>
2
#include <stdlib.h>
3
#include <stdint.h>
4
#include "stm32f10x.h"
5
6
#define PIN_MOT_Enable_BASE  GPIOD_BASE
7
#define PIN_MOT_Enable_PIN   11
8
#define PIN_MOT_Enable_PIN2  12
9
10
11
void init(void)
12
{
13
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
14
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
15
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); 
16
}
17
18
int main (void)
19
{
20
  init();
21
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
22
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);
23
  PWR_BackupAccessCmd(ENABLE);
24
  BKP_ClearFlag();
25
  
26
  if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)
27
  {
28
    /* Clear reset flags */
29
    RCC_ClearFlag();
30
    if(BKP_ReadBackupRegister(BKP_DR1) == 0)
31
    {
32
      
33
    }
34
    else
35
    {
36
      PWR_BackupAccessCmd(ENABLE);
37
      BKP_WriteBackupRegister(BKP_DR1, 0x0000000C);
38
      PWR_BackupAccessCmd(DISABLE);
39
    }
40
  }
41
  while(1)
42
  {
43
    if((GPIO_ReadInputDataBit((GPIO_TypeDef *) PIN_MOT_Enable_BASE, (1 << PIN_MOT_Enable_PIN)) == 0))
44
    {
45
      PWR_BackupAccessCmd(ENABLE);
46
      BKP_WriteBackupRegister(BKP_DR1, 0x00000005);
47
      PWR_BackupAccessCmd(DISABLE);
48
    }
49
50
    if((GPIO_ReadInputDataBit((GPIO_TypeDef *) PIN_MOT_Enable_BASE, (1 << PIN_MOT_Enable_PIN2)) == 0))
51
    {
52
      PWR_BackupAccessCmd(ENABLE);
53
      BKP_WriteBackupRegister(BKP_DR1, 0x0000000B);
54
      PWR_BackupAccessCmd(DISABLE);
55
    }
56
      
57
  };
58
}

Hat schon mal Jemand so etwas gemacht, oder sieht Jemand meinen Fehler?

Vielen Dank und freundliche Grüsse!

M.B.

: Verschoben durch Admin
von (prx) A. K. (prx)


Lesenswert?

Warum nicht einfach dort weitermachen, wo dein exakt gleiches Problem 
schon einmal dran war: Beitrag "STM32F103VDT6 Backup Register Vbat"

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.