blob: 719cac7456b2f603faa52d7bc95613ad78fc6184 (
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
79
80
|
#include <stdio.h> // for snprintf()
#include <wirish/wirish.h>
#include <libmaple/bkp.h>
#include <libmaple/iwdg.h>
void print_bkp_contents();
void write_to_bkp(uint16 val);
#define comm Serial2
void setup() {
pinMode(BOARD_BUTTON_PIN, INPUT);
comm.begin(9600);
comm.println("*** Beginning BKP test");
comm.println("Init...");
bkp_init();
comm.println("Done.");
print_bkp_contents();
write_to_bkp(10);
print_bkp_contents();
comm.println("Enabling backup writes.");
bkp_enable_writes();
write_to_bkp(20);
print_bkp_contents();
comm.println("Disabling backup writes.");
bkp_disable_writes();
write_to_bkp(30);
print_bkp_contents();
comm.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);
comm.println();
}
void loop() {
}
void print_bkp_contents() {
comm.println("Backup data register contents:");
char buf[100];
for (int i = 1; i <= BKP_NR_DATA_REGS; i++) {
snprintf(buf, sizeof buf, "DR%d: %d ", i, bkp_read(i));
comm.print(buf);
if (i % 5 == 0) comm.println();
}
comm.println();
}
void write_to_bkp(uint16 val) {
comm.print("Attempting to write ");
comm.print(val);
comm.println(" to backup registers...");
for (int i = 1; i <= BKP_NR_DATA_REGS; i++) {
bkp_write(i, val);
}
comm.println("Done.");
}
__attribute__((constructor)) void premain() {
init();
}
int main(void) {
init();
setup();
while (1) {
loop();
}
return 0;
}
|