You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Feb 4, 2023. It is now read-only.
### Major Releases v1.2.0
1. Fix `multiple-definitions` linker error.
2. Add example [multiFileProject](examples/multiFileProject) to demo for multiple-file project.
*[The content of the FlashStorage is erased each time a new sketch is uploaded?](#the-content-of-the-flashstorage-is-erased-each-time-a-new-sketch-is-uploaded)
67
67
*[Do you recommend to use FLASH instead of EEPROM?](#do-you-recommend-to-use-flash-instead-of-eeprom)
68
68
*[Troubleshooting](#troubleshooting)
69
-
*[Releases](#releases)
70
69
*[Issues](#issues)
71
70
*[TO DO](#to-do)
72
71
*[DONE](#done)
@@ -78,6 +77,13 @@
78
77
---
79
78
---
80
79
80
+
### Important Change from v1.2.0
81
+
82
+
Please have a look at [HOWTO Fix `Multiple Definitions` Linker Error](#howto-fix-multiple-definitions-linker-error)
83
+
84
+
---
85
+
---
86
+
81
87
### Why do we need this [FlashStorage_STM32 library](https://github.com/khoih-prog/FlashStorage_STM32)
82
88
83
89
### Features
@@ -86,7 +92,7 @@ The FlashStorage_STM32 library, inspired by [Cristian Maglie's FlashStorage](htt
86
92
87
93
The flash memory, generally used to store the firmware code, can also be used to store / retrieve more user's data and faster than from EEPROM. Thanks to the **buffered data writing and reading**, the flash access time is greatly reduced to **increase the life of the flash**.
88
94
89
-
Currently, the library supports both new [**STM32 core v2.0.0**](https://github.com/stm32duino/Arduino_Core_STM32/releases/tag/2.0.0) and previous [**STM32 core v1.9.0**](https://github.com/stm32duino/Arduino_Core_STM32/releases/tag/1.9.0)
95
+
Currently, the library supports both new [**STM32 core v2.0.0+**](https://github.com/stm32duino/Arduino_Core_STM32/releases/tag/2.2.0) and previous [**STM32 core v1.9.0-**](https://github.com/stm32duino/Arduino_Core_STM32/releases/tag/1.9.0)
90
96
91
97
---
92
98
@@ -109,32 +115,13 @@ Currently, the library supports both new [**STM32 core v2.0.0**](https://github.
109
115
- Generic Flight Controllers
110
116
- Midatronics boards
111
117
112
-
---
113
-
---
114
-
115
-
## Changelog
116
-
117
-
### Major Releases v1.1.0
118
-
119
-
1. Add support to new [**STM32 core v2.0.0**](https://github.com/stm32duino/Arduino_Core_STM32/releases/tag/2.0.0)
120
-
2. Add support to new STM32 L5 and many new STM32F/L/H/G/WB/MP1 boards
121
-
122
-
### Releases v1.0.1
123
-
124
-
1. Fix compiler warnings.
125
-
126
-
### Releases v1.0.0
127
-
128
-
1. Initial release to support STM32F/L/H/G/WB/MP1 board with / without integrated EEPROM
129
-
130
-
131
118
---
132
119
---
133
120
134
121
## Prerequisites
135
122
136
-
1.[`Arduino IDE 1.8.15+` for Arduino](https://www.arduino.cc/en/Main/Software)
137
-
2.[`Arduino Core for STM32 v2.0.0+`](https://github.com/stm32duino/Arduino_Core_STM32) for STM32 boards. [](https://github.com/stm32duino/Arduino_Core_STM32/releases/latest)
123
+
1.[`Arduino IDE 1.8.19+` for Arduino](https://www.arduino.cc/en/Main/Software)
124
+
2.[`Arduino Core for STM32 v2.2.0+`](https://github.com/stm32duino/Arduino_Core_STM32) for STM32 boards. [](https://github.com/stm32duino/Arduino_Core_STM32/releases/latest)
138
125
139
126
---
140
127
@@ -169,7 +156,7 @@ Another way to install is to:
169
156
170
157
#### 1. For STM32 boards to use LAN8720
171
158
172
-
Already updated and tested with latest **STM32 core v2.0.0**
159
+
Already updated and tested with latest **STM32 core v2.2.0**
173
160
174
161
To use LAN8720 on some STM32 boards
175
162
@@ -179,10 +166,10 @@ To use LAN8720 on some STM32 boards
179
166
180
167
you have to copy the files [stm32f4xx_hal_conf_default.h](Packages_Patches/STM32/hardware/stm32/x.yy.zz/system/STM32F4xx) and [stm32f7xx_hal_conf_default.h](Packages_Patches/STM32/hardware/stm32/x.yy.zz/system/STM32F7xx) into STM32 stm32 directory (~/.arduino15/packages/STM32/hardware/stm32/x.yy.zz/system) to overwrite the old files.
181
168
182
-
Supposing the STM32 stm32 core version is 2.0.0. These files must be copied into the directory:
169
+
Supposing the STM32 stm32 core version is 2.2.0. These files must be copied into the directory:
183
170
184
-
-`~/.arduino15/packages/STM32/hardware/stm32/2.0.0/system/STM32F4xx/stm32f4xx_hal_conf_default.h` for STM32F4.
185
-
-`~/.arduino15/packages/STM32/hardware/stm32/2.o.0/system/STM32F7xx/stm32f7xx_hal_conf_default.h` for Nucleo-144 STM32F7.
171
+
-`~/.arduino15/packages/STM32/hardware/stm32/2.2.0/system/STM32F4xx/stm32f4xx_hal_conf_default.h` for STM32F4.
172
+
-`~/.arduino15/packages/STM32/hardware/stm32/2.2.0/system/STM32F7xx/stm32f7xx_hal_conf_default.h` for Nucleo-144 STM32F7.
186
173
187
174
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz,
188
175
theses files must be copied into the corresponding directory:
@@ -193,12 +180,12 @@ theses files must be copied into the corresponding directory:
193
180
194
181
#### 2. For STM32 boards to use Serial1
195
182
196
-
**To use Serial1 on some STM32 boards without Serial1 definition (Nucleo-144 NUCLEO_F767ZI, Nucleo-64 NUCLEO_L053R8, etc.) boards**, you have to copy the files [STM32 variant.h](Packages_Patches/STM32/hardware/stm32/1.9.0) into STM32 stm32 directory (~/.arduino15/packages/STM32/hardware/stm32/1.9.0). You have to modify the files corresponding to your boards, this is just an illustration how to do.
183
+
**To use Serial1 on some STM32 boards without Serial1 definition (Nucleo-144 NUCLEO_F767ZI, Nucleo-64 NUCLEO_L053R8, etc.) boards**, you have to copy the files [STM32 variant.h](Packages_Patches/STM32/hardware/stm32/2.2.0) into STM32 stm32 directory (~/.arduino15/packages/STM32/hardware/stm32/2.2.0). You have to modify the files corresponding to your boards, this is just an illustration how to do.
197
184
198
-
Supposing the STM32 stm32 core version is 1.9.0. These files must be copied into the directory:
185
+
Supposing the STM32 stm32 core version is 2.2.0. These files must be copied into the directory:
199
186
200
-
-`~/.arduino15/packages/STM32/hardware/stm32/1.9.0/variants/NUCLEO_F767ZI/variant.h` for Nucleo-144 NUCLEO_F767ZI.
201
-
-`~/.arduino15/packages/STM32/hardware/stm32/1.9.0/variants/NUCLEO_L053R8/variant.h` for Nucleo-64 NUCLEO_L053R8.
187
+
-`~/.arduino15/packages/STM32/hardware/stm32/2.2.0/variants/NUCLEO_F767ZI/variant.h` for Nucleo-144 NUCLEO_F767ZI.
188
+
-`~/.arduino15/packages/STM32/hardware/stm32/2.2.0/variants/NUCLEO_L053R8/variant.h` for Nucleo-64 NUCLEO_L053R8.
202
189
203
190
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz,
204
191
theses files must be copied into the corresponding directory:
@@ -209,6 +196,31 @@ theses files must be copied into the corresponding directory:
209
196
---
210
197
---
211
198
199
+
### HOWTO Fix `Multiple Definitions` Linker Error
200
+
201
+
The current library implementation, using `xyz-Impl.h` instead of standard `xyz.cpp`, possibly creates certain `Multiple Definitions` Linker error in certain use cases.
202
+
203
+
You can include this `.hpp` file
204
+
205
+
```
206
+
// Can be included as many times as necessary, without `Multiple Definitions` Linker Error
in many files. But be sure to use the following `.h` file **in just 1 `.h`, `.cpp` or `.ino` file**, which must **not be included in any other file**, to avoid `Multiple Definitions` Linker Error
211
+
212
+
```
213
+
// To be included only in main(), .ino with setup() to avoid `Multiple Definitions` Linker Error
Check the new [**multiFileProject** example](examples/multiFileProject) for a `HOWTO` demo.
218
+
219
+
Have a look at the discussion in [Different behaviour using the src_cpp or src_h lib #80](https://github.com/khoih-prog/ESPAsync_WiFiManager/discussions/80)
220
+
221
+
---
222
+
---
223
+
212
224
## Limited number of writes
213
225
214
226
The flash memory has a limited amount of write cycles. Typical flash memories can perform about 10000 writes cycles to the same flash block before starting to "wear out" and begin to lose the ability to retain data.
@@ -250,6 +262,8 @@ The API is very similar to the well known Arduino EEPROM.h API but with 4 additi
0 commit comments