annotate Small_CPU/Src/baseCPU2.c @ 946:80ae8ea7f0a0 Evo_2_23

GNSS set to full power at startup: In case of an reset the module would continue in sleep mode if it was in this state. To avoid this the module will now always set to full power at startup of the RTE.
author Ideenmodellierer
date Sun, 22 Dec 2024 20:52:08 +0100
parents e7f87ade3037
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 * @copyright heinrichs weikamp
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 * @file base.c including main()
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 * @date 15-Aug-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 * @version V1.0.3
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 * @since 21-Nov-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 * @brief The beginning of it all. main() is part of this.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 * + Do the inits for hardware
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 * + Do the inits for sub-systems like menu, dive screen etc.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 * + Start IRQs
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 * + Start MainTasks not in IRQs
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 * @bug
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 * @warning
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 @verbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 ==============================================================================
286
733877ab87d9 Minor: Some Texts fixed, allign RTErequired* values with RTE firmware
heinrichsweikamp
parents: 280
diff changeset
18 ##### What about hardware without 8 MHz oscillator #####
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 [..] modify OTP Byte 1 at 0x1FFF7800 with ST-Link utility
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23 ##### Where is the RTE Firmware version #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 [..] in baseCPU2.c <just here below :->
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28 ##### What to do with the RTE Firmware version #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30 [..] change the values RTErequiredHigh and RTErequiredLow in settings.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 to start warning via the firmware if not updated
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34 ##### What it does #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35 ==============================================================================
286
733877ab87d9 Minor: Some Texts fixed, allign RTErequired* values with RTE firmware
heinrichsweikamp
parents: 280
diff changeset
36 [..] All realtime stuff and all what has to be done during sleep
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38 [..] RealTimeClock. The entire time and date handling (including divetime)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
39 [..] Hardware control for pressure sensor, compass, battery monitor
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
40 [..] Calculations of tissue load, critical radius, otu, cns
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
41 [..] Switching off the power of the main CPU after request from it.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
42
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
43 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
44 ##### IRQs #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
45 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
46 [..] The IRQs are are only used for SystemTick and SPI TransferComplete after
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
47 DMA data reception.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
48
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
49 [..] HAL_SPI_TxRxCpltCallback() restarts DMA and will call
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
50 scheduleSpecial_Evaluate_DataSendToSlave() only if it is not blocked
239
e4207f0aaa4b cleanup: factor out dataSendToSlaveStopEval
Jan Mulder <jlmulder@xs4all.nl>
parents: 207
diff changeset
51 by I2C.
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
52 If the evaluation is blocked it has to be tested and executed afterwards.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
53 I2C is executed _without_ the usage of interrupts.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
56 ##### Main loop #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
57 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
58 [..] is a combination of the while loop below in main.c and code in scheduler.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
59 It is similar to the DR5 code / logic - in contrast to the main CPU
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
60 Switching the state is done via global.mode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
61 The loops in scheduler all run in the main execution thread without
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
62 any job stacks (like it was in the DR5).
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
63
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
64 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
65 ##### Real Time Clock #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
66 ==============================================================================
286
733877ab87d9 Minor: Some Texts fixed, allign RTErequired* values with RTE firmware
heinrichsweikamp
parents: 280
diff changeset
67 The RTC is a separate part of hardware inside the CPU and is not affected
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
68 by reset. Only power-on reset does change something.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
69 This is fine but the RTC is vital for the Sleep mode as Wakeuptimer.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
70 This is the only date/time system in the OSTC. The main CPU is passive.
286
733877ab87d9 Minor: Some Texts fixed, allign RTErequired* values with RTE firmware
heinrichsweikamp
parents: 280
diff changeset
71 Data transfer is done with localtime_rtc_tr and localtime_rtc_dr
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
72 in HAL_RTC format to the main CPU and as HAL_RTC structs the way back for
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
73 setting the actual time and date.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
74 The RTC unit has 20 Byte of V_bat powered SRAM. It could be used
286
733877ab87d9 Minor: Some Texts fixed, allign RTErequired* values with RTE firmware
heinrichsweikamp
parents: 280
diff changeset
75 for something useful in both CPUs.
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
76
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
77 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
78 ##### File system #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
79 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
80 [..] some files are used for both CPUs, like decom.c/.h, data_central.h, ...
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
81
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
82
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
84 ##### Unique device ID register (96 bits) #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
85 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86 [..] some files are used for both CPUs, like decom.c/.h, data_central.h, ...
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
87
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
88
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
89 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
90 ##### I2C #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
91 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
92 [..] used for pressure, compass, (accelerator) and battery gauge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
93 main cpu and pic (button) is spi
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
94
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
95
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
96 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
97 ##### Firmware Update Info #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
98 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
99 V0.85 160531 scheduleCheck_pressure_reached_dive_mode_level() changes
286
733877ab87d9 Minor: Some Texts fixed, allign RTErequired* values with RTE firmware
heinrichsweikamp
parents: 280
diff changeset
100 160606 global.no_fly_time_minutes is at least 24h after the dive
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
101 160613 ambient light fixed
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
102 160720 compass calib to Flash (8000 writes max. as erase has problems)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
103 160829 do not reset main CPU on power on!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
104 V0.91 161018 pressure_calculation_AN520_004_mod_MS5803_30BA__09_2015();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
105 V0.92+ 161020 global.sensorError[MAX_SENSORS]
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
106 fix missing init_pressure(); at powerUp of RTE
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
107 added HAL_StatusTypeDef for many functions in pressure.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
108 161024 no_fly_time_minutes Backup FIX
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
109 seconds_since_last_dive now related to RTC clock
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
110 161121 close to surface starts at 1 meter below last known surface pressure
286
733877ab87d9 Minor: Some Texts fixed, allign RTErequired* values with RTE firmware
heinrichsweikamp
parents: 280
diff changeset
111 161121 in surface mode dive mode starts @1 mtr difference if surface 880 hPa instead of 700 hPa before
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
112 V0.97+ 170213 added global.dataSendToSlave.diveModeInfo for DIVEMODE_Apnea
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
113 added global.dataSendToSlave.setEndDive
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
114 DIVEMODE_Apnea special in scheduler.c (ticksdiff >= 1000) -> no tissue, cns, otu, no change in noFly Time etc.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115 V0.99 170320 new HAL Driver Repository
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
116 V1.01 170509 old HAL Driver Repository
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
117
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
118 @endverbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
119 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
120 * @attention
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
121 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
122 * <h2><center>&copy; COPYRIGHT(c) 2017 heinrichs weikamp</center></h2>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
123 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
124 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
125 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
126
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
127 //#define DEBUG_PIN_ACTIVE
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
128 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
129
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
130 #include "baseCPU2.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
131
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
132 // From Small_CPU/Inc:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
133 #include "dma.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
134 #include "i2c.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
135 #include "spi.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
136 #include "rtc.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
137 #include "adc.h"
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
138 #include "gpio.h"
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
139 #include "compass.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
140 #include "pressure.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
141 #include "batteryGasGauge.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
142 #include "batteryCharger.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
143 #include "scheduler.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
144 #include "tm_stm32f4_otp.h"
554
3328189786e7 Added external ADC interface functionality (MCP3424):
Ideenmodellierer
parents: 533
diff changeset
145 #include "externalInterface.h"
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
146 #include "uart.h"
922
7c996354b8ac Moved UART6 into a separate unit:
Ideenmodellierer
parents: 917
diff changeset
147 #include "uart_Internal.h"
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
148 #include "uartProtocol_GNSS.h"
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
149 #include "GNSS.h"
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
150 #include "configuration.h"
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
151
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
152
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
153 // From Common/Inc:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
154 #include "calc_crush.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
155 #include "decom.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
156 #include "FirmwareData.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
157
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
158 // From Common/Drivers/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
159 #include <stdio.h>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
160
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
161
433
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
162 uint8_t coldstart __attribute__((section (".noinit")));
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
163
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
164 uint8_t hasExternalClock(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
165 if ((TM_OTP_Read(0, 0) > 0) && (TM_OTP_Read(0, 0) < 0xFF))
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
166 return 1;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
167 else
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
168 return 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
169 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
170
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
171 // SHALL LOAD AT 0x08000000 + 0x00005000 = 0x08005000.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
172 // See CPU2-RTE.ld
100
b364c75005bb Stable.fix.
Dmitry Romanov <kitt@bk.ru>
parents: 90
diff changeset
173 const SFirmwareData cpu2_FirmwareData __attribute__(( section(".firmware_data") ))= {
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 713
diff changeset
174 .versionFirst = 3,
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 890
diff changeset
175 .versionSecond = 4,
762
32529dfea3b0 Preparing a 1.6.2 release candidate
heinrichsweikamp
parents: 738
diff changeset
176 .versionThird = 0,
843
2cab242c9a4a Update version number and set beta state
Ideenmodellierer
parents: 839
diff changeset
177 .versionBeta = 1,
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
178
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
179 /* 4 bytes with trailing 0 */
100
b364c75005bb Stable.fix.
Dmitry Romanov <kitt@bk.ru>
parents: 90
diff changeset
180 .signature = "mh",
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
181
762
32529dfea3b0 Preparing a 1.6.2 release candidate
heinrichsweikamp
parents: 738
diff changeset
182 .release_year = 23,
818
40e951cfa443 1.6.4 release
heinrichsweikamp
parents: 801
diff changeset
183 .release_month = 9,
40e951cfa443 1.6.4 release
heinrichsweikamp
parents: 801
diff changeset
184 .release_day = 14,
100
b364c75005bb Stable.fix.
Dmitry Romanov <kitt@bk.ru>
parents: 90
diff changeset
185 .release_sub = 0,
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
186
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
187 /* max 48 with trailing 0 */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
188 //release_info ="12345678901234567890123456789012345678901"
768
dfdfea8897f3 1.6.2 release
heinrichsweikamp
parents: 763
diff changeset
189 .release_info = "stable April 2023",
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
190
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
191 /* for safety reasons and coming functions */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
192 .magic[0] = FIRMWARE_MAGIC_FIRST, .magic[1] = FIRMWARE_MAGIC_SECOND,
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
193 .magic[2] = FIRMWARE_MAGIC_CPU2_RTE, /* the magic byte for RTE */
433
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
194 .magic[3] = FIRMWARE_MAGIC_END
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
195 };
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
196
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
197
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
198 uint8_t firmwareVersionHigh(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
199 return cpu2_FirmwareData.versionFirst;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
200 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
201
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
202 uint8_t firmwareVersionLow(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
203 return cpu2_FirmwareData.versionSecond;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
204 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
205
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
206 /** @addtogroup OSTC4
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
207 * @{
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
208 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
209
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
210 /** @addtogroup CPU2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
211 * @{
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
212 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
213
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
214 /* Private typedef -----------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
215 /* Private define ------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
216 #define BUTTON_OSTC_GPIO_PIN GPIO_PIN_0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
217 #define BUTTON_OSTC_GPIO_PORT GPIOA
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
218 #define BUTTON_OSTC_HAL_RCC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
219 #define BUTTON_OSTC_IRQn EXTI0_IRQn
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
220
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
221
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
222 /* Private macro -------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
223
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
224 /* Private variables ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
225 uint32_t global_test_time_counter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
226 SBackup backup;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
227
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
228 /* Private function prototypes -----------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
229 static void EXTI_Wakeup_Button_Init(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
230 static void EXTI_Wakeup_Button_DeInit(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
231
183
9baecc0c24b2 Cleanup compiler warnings
ideenmodellierer
parents: 181
diff changeset
232 #ifdef DEBUG_I2C_LINES
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
233 void GPIO_test_I2C_lines(void);
183
9baecc0c24b2 Cleanup compiler warnings
ideenmodellierer
parents: 181
diff changeset
234 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
235
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
236 void sleep_prepare(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
237
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
238 void SystemClock_Config(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
239 void SystemClock_Config_HSI(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
240 void SystemClock_Config_HSE(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
241 void SYSCLKConfig_STOP_HSI(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
242 void SYSCLKConfig_STOP_HSE(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
243
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
244 void GPIO_new_DEBUG_Init(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
245 void GPIO_new_DEBUG_LOW(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
246 void GPIO_new_DEBUG_HIGH(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
247
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
248 #define REGULAR_RUN
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
249
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
250 int __io_putchar(int ch) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
251 ITM_SendChar(ch);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
252 return ch;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
253 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
254
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
255 /* Private functions ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
256
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
257 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
258 * @brief Main program
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
259 * @param None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
260 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
261 */
120
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
262 /* #define DEBUG_RUNTIME TRUE */
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
263 #ifdef DEBUG_RUNTIME
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
264 #define MEASURECNT 60 /* number of measuremets to be stored */
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
265 static uint32_t loopcnt[MEASURECNT];
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
266 extern RTC_HandleTypeDef RTCHandle;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
267 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
268
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
269 int main(void) {
120
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
270
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
271 #ifdef DEBUG_RUNTIME
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
272 RTC_TimeTypeDef Stime;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
273 uint8_t measurementindex = 0;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
274 uint8_t lastsecond = 0xFF;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
275 #endif
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
276
917
0d6c4b40fae4 Bugfix external interface power up after sleep:
Ideenmodellierer
parents: 909
diff changeset
277 uint8_t extInterfaceActive = 0;
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
278 uint32_t shutdownTick = 0;
917
0d6c4b40fae4 Bugfix external interface power up after sleep:
Ideenmodellierer
parents: 909
diff changeset
279
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
280 HAL_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
281 SystemClock_Config();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
282
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
283 HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
284 HAL_SYSTICK_CLKSourceConfig( SYSTICK_CLKSOURCE_HCLK);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
285 HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
286
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
287 MX_RTC_init();
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
288 GPIO_LEDs_VIBRATION_Init();
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
289 GPIO_GNSS_Init();
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
290 GPIO_new_DEBUG_Init(); // added 170322 hw
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
291 initGlobals();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
292
120
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
293 /* printf("CPU2-RTE running...\n"); */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
294
329
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
295 HAL_Delay(100);
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
296
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
297 MX_I2C1_Init();
329
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
298 if (global.I2C_SystemStatus != HAL_OK)
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
299 {
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
300 if (MX_I2C1_TestAndClear() == GPIO_PIN_RESET) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
301 MX_I2C1_TestAndClear(); // do it a second time
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
302 }
488
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
303 HAL_Delay(100);
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
304 I2C_DeInit();
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
305 HAL_Delay(100);
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
306 MX_I2C1_Init();
488
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
307 HAL_Delay(100);
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
308 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
309
329
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
310
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
311
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
312 //dangerous: TM_OTP_Write(0,0, 0x01);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
313 #ifdef REGULAR_RUN
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
314 global.sensorError[SENSOR_PRESSURE_ID] = init_pressure();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
315 global.I2C_SystemStatus = global.sensorError[SENSOR_PRESSURE_ID];
329
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
316 if (global.I2C_SystemStatus != HAL_OK)
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
317 {
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
318 if (MX_I2C1_TestAndClear() == GPIO_PIN_RESET) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
319 MX_I2C1_TestAndClear(); // do it a second time
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
320 }
488
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
321 HAL_Delay(100);
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
322 I2C_DeInit();
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
323 HAL_Delay(100);
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
324 MX_I2C1_Init();
488
9eeab3fead8f Added "I2C_DeInit();" in hardware detection routines. It's the recommended way
heinrichsweikamp
parents: 473
diff changeset
325 HAL_Delay(100);
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
326 global.sensorError[SENSOR_PRESSURE_ID] = init_pressure();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
327 global.I2C_SystemStatus = global.sensorError[SENSOR_PRESSURE_ID];
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
328 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
329
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
330 global.dataSendToMaster.sensorErrors =
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
331 global.sensorError[SENSOR_PRESSURE_ID];
329
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
332
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
333 if(is_init_pressure_done())
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
334 {
339
37f45300bc2e Apply averaging to pressure measurement: In pre versions calculated pressure value jittered +/-10hPa. Since we measure the pressure several time a second but only use one value a second, calc average including not used values
ideenmodellierer
parents: 334
diff changeset
335 init_surface_ring(0);
329
da5b91b1e20e Improved startup robustness
ideenmodellierer
parents: 324
diff changeset
336 }
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
337 init_battery_gas_gauge();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
338 HAL_Delay(10);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
339 battery_gas_gauge_get_data();
473
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
340
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
341 global.lifeData.battery_voltage = get_voltage();
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
342 global.lifeData.battery_charge = get_charge();
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
343 copyBatteryData();
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
344
473
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
345 MX_SPI3_Init();
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
346
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
347 if(coldstart != 0xA5) /* Not reading a 0xA5 means the memory cells has not been initialized before => cold start */
433
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
348 {
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
349 coldstart = 0xA5;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
350
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
351 set_charge_state(Charger_ColdStart);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
352
473
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
353 global.dataSendToMaster.power_on_reset = 1;
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
354 global.deviceDataSendToMaster.power_on_reset = 1;
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
355
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
356 if (!scheduleSetButtonResponsiveness())
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
357 {
763
aa6006975e76 increase HAL_Delay to 10ms for cold-start-button reset
heinrichsweikamp
parents: 762
diff changeset
358 HAL_Delay(10);
473
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
359 if (!scheduleSetButtonResponsiveness()) // send again, if problem it's not my problem here.
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
360 {
763
aa6006975e76 increase HAL_Delay to 10ms for cold-start-button reset
heinrichsweikamp
parents: 762
diff changeset
361 HAL_Delay(10);
473
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
362 scheduleSetButtonResponsiveness(); // init
763
aa6006975e76 increase HAL_Delay to 10ms for cold-start-button reset
heinrichsweikamp
parents: 762
diff changeset
363 HAL_Delay(10);
473
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
364 }
edfc1a464b42 Do not signal power on reset in case of a "warm" reset:
ideenmodellierer
parents: 439
diff changeset
365 }
433
aa286a4926c2 Detect startup after power off:
ideenmodellierer
parents: 417
diff changeset
366 }
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
367 else
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
368 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
369 set_charge_state(Charger_NotConnected);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
370 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
371
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
372 ADCx_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
373 GPIO_Power_MainCPU_Init();
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
374
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
375 externalInterface_InitPower33();
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
376
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
377 global.mode = MODE_POWERUP;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
378 #else
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
379 init_pressure();
339
37f45300bc2e Apply averaging to pressure measurement: In pre versions calculated pressure value jittered +/-10hPa. Since we measure the pressure several time a second but only use one value a second, calc average including not used values
ideenmodellierer
parents: 334
diff changeset
380 init_surface_ring(0);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
381
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
382 ADCx_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
383 GPIO_Power_MainCPU_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
384 global.mode = MODE_TEST;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
385 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
386 while (1) {
120
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
387 /* printf("Global mode = %d\n", global.mode); */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
388
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
389 switch (global.mode) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
390 case MODE_POWERUP:
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
391 case MODE_BOOT:
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
392 // ReInit_battery_charger_status_pins();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
393 compass_init(0, 7);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
394 accelerator_init();
554
3328189786e7 Added external ADC interface functionality (MCP3424):
Ideenmodellierer
parents: 533
diff changeset
395 externalInterface_Init();
181
331882a89421 Removed not suppoted wireless feature
ideenmodellierer
parents: 172
diff changeset
396
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
397 if (global.mode == MODE_BOOT) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
398 GPIO_Power_MainCPU_OFF();
922
7c996354b8ac Moved UART6 into a separate unit:
Ideenmodellierer
parents: 917
diff changeset
399 #ifdef ENABLE_GPIO_V2
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
400 GPIO_LED_GREEN_ON();
903
0f2e5a166d40 Disable GNSS operations using compile switch:
Ideenmodellierer
parents: 900
diff changeset
401 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
402 HAL_Delay(100); // for GPIO_Power_MainCPU_ON();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
403 GPIO_Power_MainCPU_ON();
922
7c996354b8ac Moved UART6 into a separate unit:
Ideenmodellierer
parents: 917
diff changeset
404 #ifdef ENABLE_GPIO_V2
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
405 GPIO_LED_GREEN_OFF();
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
406
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
407 GPIO_LED_RED_ON();
900
6a7701f66b16 minor: LED/Vibration behavior on wake-up
heinrichsweikamp
parents: 899
diff changeset
408 GPIO_VIBRATION_ON();
903
0f2e5a166d40 Disable GNSS operations using compile switch:
Ideenmodellierer
parents: 900
diff changeset
409 #endif
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
410 HAL_Delay(100);
922
7c996354b8ac Moved UART6 into a separate unit:
Ideenmodellierer
parents: 917
diff changeset
411 #ifdef ENABLE_GPIO_V2
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
412 GPIO_LED_RED_OFF();
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
413 GPIO_VIBRATION_OFF();
903
0f2e5a166d40 Disable GNSS operations using compile switch:
Ideenmodellierer
parents: 900
diff changeset
414 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
415 }
922
7c996354b8ac Moved UART6 into a separate unit:
Ideenmodellierer
parents: 917
diff changeset
416 #ifdef ENABLE_GPIO_V2
900
6a7701f66b16 minor: LED/Vibration behavior on wake-up
heinrichsweikamp
parents: 899
diff changeset
417 GPIO_LED_RED_OFF();
6a7701f66b16 minor: LED/Vibration behavior on wake-up
heinrichsweikamp
parents: 899
diff changeset
418 GPIO_LED_GREEN_OFF();
6a7701f66b16 minor: LED/Vibration behavior on wake-up
heinrichsweikamp
parents: 899
diff changeset
419 GPIO_VIBRATION_OFF();
903
0f2e5a166d40 Disable GNSS operations using compile switch:
Ideenmodellierer
parents: 900
diff changeset
420 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
421 SPI_synchronize_with_Master();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
422 MX_DMA_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
423 MX_SPI1_Init();
134
0586ae83a243 Removed cyclic (by timer) send on slave side
Ideenmodellierer
parents: 120
diff changeset
424 SPI_Start_single_TxRx_with_Master(); /* be prepared for the first data exchange */
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 183
diff changeset
425 Scheduler_Request_sync_with_SPI(SPI_SYNC_METHOD_HARD);
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
426
922
7c996354b8ac Moved UART6 into a separate unit:
Ideenmodellierer
parents: 917
diff changeset
427 #ifdef ENABLE_GPIO_V2
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
428 // GNSS tests
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
429 GNSS_IO_init();
900
6a7701f66b16 minor: LED/Vibration behavior on wake-up
heinrichsweikamp
parents: 899
diff changeset
430 GPIO_GPS_ON();
6a7701f66b16 minor: LED/Vibration behavior on wake-up
heinrichsweikamp
parents: 899
diff changeset
431 GPIO_GPS_BCKP_ON();
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
432 MX_USART6_UART_Init();
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 887
diff changeset
433 GNSS_Init(&GNSS_Handle, &huart6);
932
effadaa3a1f7 Cleanup Gnss UART implementation:
Ideenmodellierer
parents: 922
diff changeset
434 #else
effadaa3a1f7 Cleanup Gnss UART implementation:
Ideenmodellierer
parents: 922
diff changeset
435 #ifdef ENABLE_GNSS_SUPPORT
effadaa3a1f7 Cleanup Gnss UART implementation:
Ideenmodellierer
parents: 922
diff changeset
436 GNSS_Init(&GNSS_Handle, &huart1);
effadaa3a1f7 Cleanup Gnss UART implementation:
Ideenmodellierer
parents: 922
diff changeset
437 #endif
900
6a7701f66b16 minor: LED/Vibration behavior on wake-up
heinrichsweikamp
parents: 899
diff changeset
438 #endif
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 890
diff changeset
439
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
440 global.mode = MODE_SURFACE;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
441 break;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
442
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
443 case MODE_CALIB:
90
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
444 scheduleCompassCalibrationMode();
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
445 break;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
446
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
447 case MODE_SURFACE:
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
448 scheduleSurfaceMode();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
449 break;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
450
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
451 case MODE_TEST:
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
452 break;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
453
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
454 case MODE_DIVE:
90
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
455 backup.no_fly_time_minutes = global.no_fly_time_minutes;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
456 backup.seconds_since_last_dive = global.seconds_since_last_dive;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
457
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
458 vpm_init( &global.vpm, global.conservatism, global.repetitive_dive,
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
459 global.seconds_since_last_dive );
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
460 global.no_fly_time_minutes = 0;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
461 global.lifeData.dive_time_seconds = 0;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
462 global.lifeData.dive_time_seconds_without_surface_time = 0;
943
e7f87ade3037 Added missing compile switches
Ideenmodellierer
parents: 942
diff changeset
463 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2
942
06aaccaf2e02 Power down gnss module during dive:
Ideenmodellierer
parents: 940
diff changeset
464 uartGnss_ReqPowerDown(1);
943
e7f87ade3037 Added missing compile switches
Ideenmodellierer
parents: 942
diff changeset
465 #endif
90
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
466 scheduleDiveMode();
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
467 // done now in scheduler prior to change mode: global.seconds_since_last_dive = 1;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
468
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
469 if( global.lifeData.dive_time_seconds > 60 )
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
470 {
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
471 //No Fly time 60% of desaturationtime after dive
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
472 global.no_fly_time_minutes = decom_calc_desaturation_time(
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
473 global.lifeData.tissue_nitrogen_bar,
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
474 global.lifeData.tissue_helium_bar,
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
475 global.lifeData.pressure_surface_bar ) * 60 / 100;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
476 if( global.no_fly_time_minutes < (24 * 60) )
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
477 global.no_fly_time_minutes = 24 * 60;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
478 }
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
479 else
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
480 {
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
481 global.no_fly_time_minutes = backup.no_fly_time_minutes;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
482 global.seconds_since_last_dive = backup.seconds_since_last_dive;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
483 }
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
484
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
485 global.lifeData.dive_time_seconds = 0;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
486 global.lifeData.dive_time_seconds_without_surface_time = 0;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
487 global.lifeData.counterSecondsShallowDepth = 0;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
488
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
489 backup.no_fly_time_minutes = 0;
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
490 backup.seconds_since_last_dive = 0;
943
e7f87ade3037 Added missing compile switches
Ideenmodellierer
parents: 942
diff changeset
491 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2
942
06aaccaf2e02 Power down gnss module during dive:
Ideenmodellierer
parents: 940
diff changeset
492 uartGnss_ReqPowerDown(0);
943
e7f87ade3037 Added missing compile switches
Ideenmodellierer
parents: 942
diff changeset
493 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
494 break;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
495
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
496 case MODE_SHUTDOWN:
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
497 HAL_Delay(200);
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
498
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
499 MX_SPI3_Init();
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
500
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
501 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
502 if(shutdownTick == 0)
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
503 {
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
504 shutdownTick = HAL_GetTick();
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
505 uartGnss_ReqPowerDown(1);
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
506 }
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
507 #ifdef ENABLE_GNSS_SUPPORT
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
508 externalInterface_HandleUART();
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
509 #else
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
510 UART6_HandleUART();
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
511 #endif
940
4a406e873a95 GNSS improvments:
Ideenmodellierer
parents: 938
diff changeset
512 if((uartGnss_GetState() == UART_GNSS_INACTIVE) || (time_elapsed_ms(shutdownTick,HAL_GetTick()) > 3000))
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
513 {
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
514 global.mode = MODE_SLEEP;
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
515 uartGnss_ReqPowerDown(0); /* release power down request */
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
516 }
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
517 #else
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
518 global.mode = MODE_SLEEP;
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
519 #endif
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
520
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
521
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
522 break;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
523
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
524 case MODE_SLEEP:
917
0d6c4b40fae4 Bugfix external interface power up after sleep:
Ideenmodellierer
parents: 909
diff changeset
525 extInterfaceActive = externalInterface_isEnabledPower33();
839
061174d88af9 Code cleanup: UART protocol definitions
Ideenmodellierer
parents: 818
diff changeset
526 externalInterface_SwitchUART(EXT_INTERFACE_UART_OFF);
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
527 externalInterface_SwitchPower33(false);
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
528 if (hasExternalClock())
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
529 SystemClock_Config_HSI();
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
530 GPIO_LEDs_VIBRATION_Init();
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
531 sleep_prepare();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
532
940
4a406e873a95 GNSS improvments:
Ideenmodellierer
parents: 938
diff changeset
533 while(time_elapsed_ms(shutdownTick,HAL_GetTick()) < 1000 ) /* delay shutdown till shutdown animation is finished */
4a406e873a95 GNSS improvments:
Ideenmodellierer
parents: 938
diff changeset
534 {
4a406e873a95 GNSS improvments:
Ideenmodellierer
parents: 938
diff changeset
535 HAL_Delay(10);
4a406e873a95 GNSS improvments:
Ideenmodellierer
parents: 938
diff changeset
536 }
4a406e873a95 GNSS improvments:
Ideenmodellierer
parents: 938
diff changeset
537 shutdownTick = 0;
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
538 scheduleSleepMode();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
539 if (hasExternalClock())
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
540 SystemClock_Config_HSE();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
541 EXTI_Wakeup_Button_DeInit();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
542 ADCx_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
543 GPIO_Power_MainCPU_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
544 GPIO_Power_MainCPU_ON();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
545 compass_init(0, 7);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
546 accelerator_init();
148
ee744c7160ce Use SPI TX callback to synchronize to main CPU
Ideenmodellierer
parents: 134
diff changeset
547 SPI_synchronize_with_Master();
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
548 MX_DMA_Init();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
549 MX_SPI1_Init();
148
ee744c7160ce Use SPI TX callback to synchronize to main CPU
Ideenmodellierer
parents: 134
diff changeset
550 SPI_Start_single_TxRx_with_Master();
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
551
917
0d6c4b40fae4 Bugfix external interface power up after sleep:
Ideenmodellierer
parents: 909
diff changeset
552 if(extInterfaceActive)
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
553 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
554 externalInterface_SwitchPower33(true);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
555 }
738
30717de00f3a Added data init function for external interface:
Ideenmodellierer
parents: 728
diff changeset
556 externalInterface_InitDatastruct();
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
557 // EXTILine0_Button_DeInit(); not now, later after testing
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
558 break;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
559 }
120
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
560
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
561 #ifdef DEBUG_RUNTIME
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
562 HAL_RTC_GetTime(&RTCHandle, &Stime, RTC_FORMAT_BCD);
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
563
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
564 if(lastsecond == 0xFF)
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
565 {
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
566 measurementindex = 0;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
567 loopcnt[measurementindex] = 0;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
568 lastsecond = Stime.Seconds;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
569 }
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
570 loopcnt[measurementindex]++;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
571
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
572 if(lastsecond != Stime.Seconds)
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
573 {
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
574 measurementindex++;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
575 if (measurementindex == MEASURECNT) measurementindex = 0;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
576 loopcnt[measurementindex] = 0;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
577 lastsecond = Stime.Seconds;
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
578 if(measurementindex +1 < MEASURECNT) loopcnt[measurementindex +1] = 0xffff; /* helps to identify the latest value */
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
579 }
6347a86caa18 Cleanup warning and disable printf calls
Ideenmodellierer
parents: 105
diff changeset
580 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
581 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
582 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
583
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
584 /** @brief Button feedback - EXTI line detection callbacks
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
585 * @param GPIO_Pin: Specifies the pins connected EXTI line
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
586 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
587 */
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
588 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
589
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
590 if (GPIO_Pin == BUTTON_OSTC_GPIO_PIN) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
591 if (global.mode == MODE_SLEEP) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
592 global.mode = MODE_BOOT;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
593 }
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
594 }
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
595 else
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
596 {
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
597
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
598 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
599 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
600
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
601 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
602 * @brief System Clock Configuration
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
603 * The system Clock is configured as follow :
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
604 * System Clock source = PLL (HSI)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
605 * SYSCLK(Hz) = 100 MHz
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
606 * HCLK(Hz) = 100 MHz
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
607 * AHB Prescaler = 1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
608 * APB1 Prescaler = 2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
609 * APB2 Prescaler = 1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
610 * HSI Frequency(Hz) = 16 MHz
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
611 * PLL_M = 16
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
612 * PLL_N = 400
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
613 * PLL_P = 4
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
614 * PLL_Q = 7 // no USB
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
615 * VDD(V) = 3.3
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
616 * Main regulator output voltage = Scale1 mode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
617 * Flash Latency(WS) = 3
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
618 * @param None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
619 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
620 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
621
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
622 void SystemClock_Config(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
623 if (hasExternalClock())
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
624 SystemClock_Config_HSE();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
625 else
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
626 SystemClock_Config_HSI();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
627 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
628
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
629 void SYSCLKConfig_STOP(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
630 SYSCLKConfig_STOP_HSI();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
631 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
632
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
633 void SystemClock_Config_HSE(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
634 RCC_OscInitTypeDef RCC_OscInitStruct;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
635 RCC_ClkInitTypeDef RCC_ClkInitStruct;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
636 // RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
637
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
638 __PWR_CLK_ENABLE(); // is identical to __HAL_RCC_PWR_CLK_ENABLE();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
639
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
640 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
641
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
642 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; //|RCC_OSCILLATORTYPE_LSE;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
643 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
644 //RCC_OscInitStruct.LSEState = RCC_LSE_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
645 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
646 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
647 RCC_OscInitStruct.PLL.PLLM = 8;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
648 RCC_OscInitStruct.PLL.PLLN = 320;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
649 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
650 RCC_OscInitStruct.PLL.PLLQ = 4;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
651 HAL_RCC_OscConfig(&RCC_OscInitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
652
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
653 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
654 | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
655 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
656 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
657 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
658 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
659 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
660
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
661 // PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
662 // PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
663 // HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
664
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
665 // HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
666
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
667 // HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
668
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
669 /* SysTick_IRQn interrupt configuration */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
670 // HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
671 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
672
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
673 void SystemClock_Config_HSI(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
674 RCC_ClkInitTypeDef RCC_ClkInitStruct;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
675 RCC_OscInitTypeDef RCC_OscInitStruct;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
676
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
677 /* Enable Power Control clock */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
678 __HAL_RCC_PWR_CLK_ENABLE();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
679
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
680 /* The voltage scaling allows optimizing the power consumption when the device is
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
681 clocked below the maximum system frequency, to update the voltage scaling value
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
682 regarding system frequency refer to product datasheet. */
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
683 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
684
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
685 /* Enable HSI Oscillator and activate PLL with HSI as source */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
686 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
687 RCC_OscInitStruct.HSIState = RCC_HSI_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
688 RCC_OscInitStruct.HSICalibrationValue = 0x10;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
689 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
690 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
691 RCC_OscInitStruct.PLL.PLLM = 16;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
692 RCC_OscInitStruct.PLL.PLLN = 320;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
693 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
694 RCC_OscInitStruct.PLL.PLLQ = 4;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
695 HAL_RCC_OscConfig(&RCC_OscInitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
696
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
697 /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
698 clocks dividers */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
699 RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
700 | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
701 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
702 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
703 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
704 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
705 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
706 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
707
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
708
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
709 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
710 * @brief Configures system clock after wake-up from STOP: enable HSI, PLL
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
711 * and select PLL as system clock source.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
712 * @param None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
713 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
714 */
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
715 void SYSCLKConfig_STOP_HSE(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
716 RCC_ClkInitTypeDef RCC_ClkInitStruct;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
717 RCC_OscInitTypeDef RCC_OscInitStruct;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
718 uint32_t pFLatency = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
719
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
720 /* Get the Oscillators configuration according to the internal RCC registers */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
721 HAL_RCC_GetOscConfig(&RCC_OscInitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
722
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
723 /* After wake-up from STOP reconfigure the system clock: Enable HSI and PLL */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
724 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
725 RCC_OscInitStruct.HSIState = RCC_HSE_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
726 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
727 HAL_RCC_OscConfig(&RCC_OscInitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
728
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
729 /* Get the Clocks configuration according to the internal RCC registers */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
730 HAL_RCC_GetClockConfig(&RCC_ClkInitStruct, &pFLatency);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
731
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
732 /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
733 clocks dividers */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
734 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
735 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
736 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, pFLatency);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
737 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
738
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
739 void SYSCLKConfig_STOP_HSI(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
740 RCC_ClkInitTypeDef RCC_ClkInitStruct;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
741 RCC_OscInitTypeDef RCC_OscInitStruct;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
742 uint32_t pFLatency = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
743
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
744 /* Get the Oscillators configuration according to the internal RCC registers */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
745 HAL_RCC_GetOscConfig(&RCC_OscInitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
746
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
747 /* After wake-up from STOP reconfigure the system clock: Enable HSI and PLL */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
748 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
749 RCC_OscInitStruct.HSIState = RCC_HSI_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
750 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
751 RCC_OscInitStruct.HSICalibrationValue = 0x10;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
752 HAL_RCC_OscConfig(&RCC_OscInitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
753
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
754 /* Get the Clocks configuration according to the internal RCC registers */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
755 HAL_RCC_GetClockConfig(&RCC_ClkInitStruct, &pFLatency);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
756
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
757 /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
758 clocks dividers */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
759 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
760 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
761 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, pFLatency);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
762 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
763
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
764 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
765 * @brief SYSTICK callback
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
766 * @param None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
767 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
768 */
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
769 void HAL_SYSTICK_Callback(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
770 HAL_IncTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
771 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
772
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
773 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
774 * @brief Configures GPIO for LED
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
775 * Might move with STM32Cube usage
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
776 * @param None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
777 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
778 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
779 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
780 void GPIO_test_I2C_lines(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
781 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
782 GPIO_InitTypeDef GPIO_InitStructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
783 __GPIOB_CLK_ENABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
784 GPIO_InitStructure.Pin = GPIO_PIN_8;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
785 GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
786 GPIO_InitStructure.Pull = GPIO_PULLUP;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
787 GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
788 HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
789 GPIO_InitStructure.Pin = GPIO_PIN_9;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
790 HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
791
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
792 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
793 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
794 HAL_Delay(10);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
795 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
796 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
797 HAL_Delay(10);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
798 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
799 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
800
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
801 void GPIO_new_DEBUG_Init(void) {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
802 #ifdef DEBUG_PIN_ACTIVE
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
803 GPIO_InitTypeDef GPIO_InitStructure;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
804
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
805 __GPIOC_CLK_ENABLE();
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
806 GPIO_InitStructure.Pin = LED_CONTROL_PIN;
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
807 GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
808 GPIO_InitStructure.Pull = GPIO_PULLUP;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
809 GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
810 HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
811 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
812 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
813
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
814 void GPIO_new_DEBUG_LOW(void) {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
815 #ifdef DEBUG_PIN_ACTIVE
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
816 HAL_GPIO_WritePin(GPIOC,LED_CONTROL_PIN,GPIO_PIN_RESET);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
817 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
818 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
819
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
820 void GPIO_new_DEBUG_HIGH(void) {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
821 #ifdef DEBUG_PIN_ACTIVE
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
822 HAL_GPIO_WritePin(GPIOC,LED_CONTROL_PIN,GPIO_PIN_SET);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
823 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
824 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
825
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
826 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
827 * @brief Configures EXTI Line0 (connected to PA0 + PA1 pin) in interrupt mode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
828 * @param None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
829 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
830 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
831
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
832 static void EXTI_Wakeup_Button_Init(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
833 GPIO_InitTypeDef GPIO_InitStructure;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
834
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
835 __HAL_RCC_GPIOA_CLK_ENABLE();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
836 BUTTON_OSTC_HAL_RCC_GPIO_CLK_ENABLE();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
837 GPIO_InitStructure.Pin = BUTTON_OSTC_GPIO_PIN;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
838 GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
839 GPIO_InitStructure.Pull = GPIO_NOPULL;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
840 HAL_GPIO_Init( BUTTON_OSTC_GPIO_PORT, &GPIO_InitStructure);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
841
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
842 HAL_NVIC_SetPriority( BUTTON_OSTC_IRQn, 0x0F, 0);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
843 HAL_NVIC_EnableIRQ( BUTTON_OSTC_IRQn);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
844 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
845
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
846 static void EXTI_Wakeup_Button_DeInit(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
847 GPIO_InitTypeDef GPIO_InitStructure;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
848
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
849 GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
850 GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
851 GPIO_InitStructure.Pull = GPIO_NOPULL;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
852
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
853 GPIO_InitStructure.Pin = BUTTON_OSTC_GPIO_PIN;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
854 HAL_GPIO_Init( BUTTON_OSTC_GPIO_PORT, &GPIO_InitStructure);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
855 HAL_NVIC_DisableIRQ( BUTTON_OSTC_IRQn);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
856 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
857
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
858 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
859 * @brief Wake Up Timer callback
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
860 * @param hrtc: RTC handle
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
861 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
862 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
863
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
864 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
865 void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
866 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
867 static uint8_t uwCounter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
868 uwCounter = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
869 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
870 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
871
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
872 void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *I2cHandle) {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
873
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
874 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
875
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
876 void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *I2cHandle) {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
877
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
878 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
879
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
880 void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *I2cHandle) {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
881
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
882 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
883
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
884 void sleep_prepare(void) {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
885 EXTI_Wakeup_Button_Init();
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
886
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
887 compass_sleep();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
888 HAL_Delay(100);
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
889 accelerator_sleep();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
890 HAL_Delay(100);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
891
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
892 I2C_DeInit();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
893 MX_SPI_DeInit();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
894 MX_SPI3_DeInit();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
895 ADCx_DeInit();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
896
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
897 GPIO_InitTypeDef GPIO_InitStruct;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
898
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
899 __HAL_RCC_GPIOA_CLK_ENABLE();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
900 __HAL_RCC_GPIOB_CLK_ENABLE();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
901 __HAL_RCC_GPIOC_CLK_ENABLE();
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
902 __HAL_RCC_GPIOH_CLK_ENABLE();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
903
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
904 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
905 GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
906 GPIO_InitStruct.Pull = GPIO_NOPULL;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
907 GPIO_InitStruct.Pin = GPIO_PIN_All;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
908 HAL_GPIO_Init( GPIOH, &GPIO_InitStruct);
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
909 #ifdef ENABLE_SLEEP_DEBUG
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
910 GPIO_InitStruct.Pin = GPIO_PIN_All ^ ( GPIO_PIN_3 | GPIO_PIN_8 | GPIO_PIN_9); /* debug */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
911 #endif
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
912
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
913 /*
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
914 GPIO_InitStruct.Pin = GPIO_PIN_All ^ (GPS_POWER_CONTROL_PIN | GPS_BCKP_CONTROL_PIN);
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
915 HAL_GPIO_Init( GPIOB, &GPIO_InitStruct);
936
3029f0332f4f GNSS introduced power saving mode:
Ideenmodellierer
parents: 932
diff changeset
916 */
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
917 GPIO_InitStruct.Pin = GPIO_PIN_All ^ ( MAINCPU_CONTROL_PIN | CHARGE_OUT_PIN | EXT33V_CONTROL_PIN); /* power off & charger in & charge out & OSC32 & ext33Volt */
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 657
diff changeset
918
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
919 HAL_GPIO_Init( GPIOC, &GPIO_InitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
920
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
921 GPIO_InitStruct.Pin = GPIO_PIN_All ^ ( GPIO_PIN_0 | VIBRATION_CONTROL_PIN | LED_CONTROL_PIN_RED | LED_CONTROL_PIN_GREEN);
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
922 #ifdef ENABLE_SLEEP_DEBUG
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
923 GPIO_InitStruct.Pin = GPIO_PIN_All ^ ( GPIO_PIN_0 | GPIO_PIN_13 | GPIO_PIN_14); /* wake up button & debug */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
924 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
925 HAL_GPIO_Init( GPIOA, &GPIO_InitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
926
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
927 GPIO_InitStruct.Pin = GPIO_PIN_All;
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
928 HAL_GPIO_Init( GPIOH, &GPIO_InitStruct);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
929
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
930 GPIO_Power_MainCPU_OFF();
922
7c996354b8ac Moved UART6 into a separate unit:
Ideenmodellierer
parents: 917
diff changeset
931 #ifdef ENABLE_GPIO_V2
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
932 GPIO_LED_GREEN_OFF();
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
933 GPIO_LED_RED_OFF();
887
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
934 GPIO_VIBRATION_OFF();
17f02ac9da67 adding GNSS code
heinrichsweikamp
parents: 880
diff changeset
935 GPIO_GPS_BCKP_ON(); // mH : costs 100µA in sleep - beware
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
936 /* GPIO_GPS_OFF(); will be done in transition sleep => deep sleep */
880
f012fcd7f465 support for led and vibration
heinrichsweikamp
parents: 843
diff changeset
937
890
651d21777b61 cleanup and disable function for GNSS uart and DMA
heinrichsweikamp
parents: 889
diff changeset
938 MX_USART6_UART_DeInit();
903
0f2e5a166d40 Disable GNSS operations using compile switch:
Ideenmodellierer
parents: 900
diff changeset
939 #endif
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
940 #ifndef ENABLE_SLEEP_DEBUG
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
941 /*
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
942 __HAL_RCC_GPIOB_CLK_DISABLE();
938
df87dbfc9c21 Update GPIO:
Ideenmodellierer
parents: 936
diff changeset
943 */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
944 #endif
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
945 __HAL_RCC_GPIOH_CLK_DISABLE();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
946 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
947
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
948 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
949 void sleep_test(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
950 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
951 GPIO_InitTypeDef GPIO_InitStruct;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
952
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
953 __HAL_RCC_GPIOA_CLK_ENABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
954 __HAL_RCC_GPIOB_CLK_ENABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
955 __HAL_RCC_GPIOC_CLK_ENABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
956 __HAL_RCC_GPIOH_CLK_ENABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
957
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
958 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
959 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
960 GPIO_InitStruct.Pull = GPIO_NOPULL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
961 GPIO_InitStruct.Pin = GPIO_PIN_All;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
962 HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
963 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
964
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
965 GPIO_InitStruct.Pin = GPIO_PIN_All ^ ( GPIO_PIN_0 | GPIO_PIN_15 | GPIO_PIN_14);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
966 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
967
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
968 GPIO_InitStruct.Pin = GPIO_PIN_All ^ ( GPIO_PIN_0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
969 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
970
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
971 GPIO_Power_MainCPU_OFF();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
972
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
973 GPIO_InitStruct.Pull = GPIO_PULLUP;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
974 GPIO_InitStruct.Pin = GPIO_PIN_0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
975 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
976
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
977 // __HAL_RCC_GPIOA_CLK_DISABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
978 __HAL_RCC_GPIOB_CLK_DISABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
979 // __HAL_RCC_GPIOC_CLK_DISABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
980 __HAL_RCC_GPIOH_CLK_DISABLE();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
981
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
982
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
983 HAL_Delay(5000);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
984 while(1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
985 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
986 RTC_StopMode_2seconds();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
987 HAL_Delay(200);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
988 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
989 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
990 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
991
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
992 #ifdef USE_FULL_ASSERT
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
993
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
994 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
995 * @brief Reports the name of the source file and the source line number
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
996 * where the assert_param error has occurred.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
997 * @param file: pointer to the source file name
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
998 * @param line: assert_param error line source number
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
999 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1000 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1001 void assert_failed(uint8_t* file, uint32_t line)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1002 {
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
1003 /* User can add his own implementation to report the file name and line number,
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
1004 ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1005
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
1006 /* Infinite loop */
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
1007 while (1)
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
1008 {
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
1009 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1010 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1011 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1012
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1013 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1014 * @}
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1015 */
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1016 /**
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1017 * @brief This function handles SysTick Handler.
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1018 * @param None
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1019 * @retval None
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1020 */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1021
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1022 /*TxRx only here. Every 100 ms.*/
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1023 uint8_t ticks100ms=0;
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1024 void SysTick_Handler(void)
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1025 {
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1026 HAL_IncTick();
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1027 if(ticks100ms<100){
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1028 ticks100ms++;
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1029 }else
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1030 {
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1031 ticks100ms=0;
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1032 }
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 103
diff changeset
1033 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1034 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1035 * @}
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1036 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1037
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1038 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/