blob: 27f87bde78458d0b90195e68b85f8cd5e957d204 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#include <stdio.h>
#include "wirish.h"
#include "bkp.h"
#include "iwdg.h"
void print_bkp_contents();
void write_to_bkp(uint16 val);
void setup() {
pinMode(BOARD_BUTTON_PIN, INPUT);
Serial2.begin(9600);
Serial2.println("*** Beginning BKP test");
Serial2.println("Init...");
bkp_init();
Serial2.println("Done.");
print_bkp_contents();
write_to_bkp(10);
print_bkp_contents();
Serial2.println("Enabling backup writes.");
bkp_enable_writes();
write_to_bkp(20);
print_bkp_contents();
Serial2.println("Disabling backup writes.");
bkp_disable_writes();
write_to_bkp(30);
print_bkp_contents();
Serial2.println("Done testing backup registers; press button to enable "
"independent watchdog (in order to cause a reset).");
waitForButtonPress(0);
iwdg_init(IWDG_PRE_4, 1);
Serial2.println();
}
void loop() {
}
void print_bkp_contents() {
Serial2.println("Backup data register contents:");
char buf[100];
for (int i = 1; i <= NR_BKP_REGS; i++) {
snprintf(buf, sizeof buf, "DR%d: %d ", i, bkp_read(i));
Serial2.print(buf);
if (i % 5 == 0) Serial2.println();
}
Serial2.println();
}
void write_to_bkp(uint16 val) {
Serial2.print("Attempting to write ");
Serial2.print(val);
Serial2.println(" to backup registers...");
for (int i = 1; i <= NR_BKP_REGS; i++) {
bkp_write(i, val);
}
Serial2.println("Done.");
}
__attribute__((constructor)) void premain() {
init();
}
int main(void) {
init();
setup();
while (1) {
loop();
}
return 0;
}
|