This commit is contained in:
andrea
2026-04-29 23:10:16 +02:00
parent 35716fcfb1
commit a9e6c6c640
34 changed files with 62560 additions and 31122 deletions

259
timeline.py Normal file
View File

@@ -0,0 +1,259 @@
import matplotlib.pyplot as plt
import numpy as np
# =========================
# CONFIGURAZIONE
# =========================
m1pwmap =40
m1pwmch=60
m2pwmap=70
m2pwmch= 70
m3pwmap= 35
m3pwmch= 40
m4pwmap= 40
m4pwmch= 40
m1rampstart= 20
m2rampstart= 20
m3rampstart= 20
m4rampstart= 20
t1ap= 280
t2ap= 4
t3ap= 10
t4ap= 40
twap= 1
t1ch= 27
t2ch= 10
t3ch= 30
t4ch= 1
twch= 1
# 0,
# 0,
# 0,
tramp1= 100
m1pwmMan= 60
m2pwmMan= 70
m3pwmMan= 40
m4pwmMan= 40
trampman= 50
tramp= 100
# Ogni fase è:
# (tempo_inizio, tempo_fine, velocita_iniziale, velocita_finale)
motori = {
"Motore1": [
(0, 300, 0, 80), # rampa salita
(300, 700, 80, 80), # mantenimento
(700, 900, 80, 0) # rampa discesa
],
"Motore2": [
(20, 20+tramp, m2rampstart, m2pwmap),
(20+tramp, 20+tramp+t1ap, m2pwmap, m2pwmap),
(20+tramp+t1ap, 20+tramp+t1ap+tramp, m2pwmap, 0)
],
"Motore3": [
(1800, 2100, 0, 100),
(2100, 2600, 100, 100),
(2600, 2900, 100, 0)
],
"Motore4": [
(2900, 3200, 0, 50),
(3200, 3600, 50, 50),
(3600, 3900, 50, 0)
]
}
# Buzzer ON/OFF: (inizio, fine)
buzzer = [
(20, 21),
(22, 23),
(24, 25),
(26, 27),
(28, 29),
(30, 31),
(32, 33),
(34, 35),
(36, 37),
(38, 39),
(40, 41),
(42, 43),
(44, 45),
(46, 47),
(48, 49),
(50, 55),
(60, 65),
(70, 75),
(80, 85),
(90, 95),
(100, 105),
(110, 115),
(120, 125),
(130, 135),
(140, 145),
(150, 155),
(160, 165),
(170, 175),
(180, 185),
(190, 195),
(200, 205),
(210, 215),
(220, 225),
(230, 235),
(240, 245),
(250, 255),
(260, 265),
(270, 275),
(280, 285),
(290, 295),
(300, 305),
(310, 315),
(320, 325),
(330, 335),
(340, 345),
(350, 355),
(360, 365),
(370, 375),
(380, 385),
(390, 395),
(400, 405),
(410, 415),
(420, 425),
(430, 435),
(440, 445),
(450, 455),
(460, 465),
(470, 475),
(480, 485),
(490, 495),
(500, 505),
(510, 515),
(520, 525),
(530, 535),
(540, 545),
(550, 555),
(560, 565),
(570, 575),
(580, 585),
(590, 595),
(600, 605),
(610, 615),
(620, 625),
(630, 635),
(640, 645),
(650, 655),
(660, 665),
(670, 675),
(680, 685),
(690, 695),
(700, 705),
(710, 715),
(720, 725),
(730, 735),
(740, 745),
(750, 755),
(760, 765),
(770, 775),
(780, 785),
(790, 795),
(800, 805),
(810, 815),
(820, 825),
(830, 835),
(840, 845),
(850, 855),
(860, 865),
(870, 875),
(880, 885),
(890, 895),
(900, 905),
(910, 915),
(920, 925),
(930, 935),
(940, 945),
(950, 955),
(960, 965),
(970, 975),
(980, 985),
(990, 995),
]
tasto = [
(0, 30),
]
# =========================
# CREAZIONE GRAFICO
# =========================
fig, ax = plt.subplots(figsize=(13, 6))
# Motori: linee di velocità
for nome, fasi in motori.items():
tempi = []
velocita = []
for start, end, v0, v1 in fasi:
t = np.linspace(start, end, 50)
v = np.linspace(v0, v1, 50)
tempi.extend(t)
velocita.extend(v)
ax.plot(tempi, velocita, marker="o", markersize=2, label=nome)
# Buzzer: riga separata in basso
y_buzzer = -15
for start, end in buzzer:
ax.broken_barh(
[(start, end - start)],
(y_buzzer, 8),
facecolors="red",
alpha=0.7
)
# Scritta "Buzzer"
ax.text(
-120,
y_buzzer + 4,
"Buzzer",
va="center",
ha="right"
)
# tasto: riga separata in basso
y_tasto = -35
for start, end in tasto:
ax.broken_barh(
[(start, end - start)],
(y_tasto, 8),
facecolors="yellow",
alpha=0.7
)
# Scritta "tasto"
ax.text(
-120,
y_tasto + 4,
"Tasto",
va="center",
ha="right"
)
# =========================
# FORMATTAZIONE
# =========================
ax.set_xlabel("Tempo (ms)")
ax.set_ylabel("Velocità motore (%)")
ax.set_title("Timeline motori con rampe + buzzer")
ax.set_ylim(-50, 110)
ax.grid(True)
ax.legend()
# Salva immagine
plt.savefig("timeline_completa.png", dpi=300, bbox_inches="tight")
plt.show()

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -26,3 +26,4 @@
*** SESSION apr 23, 2026 22:22:44.442 ------------------------------------------
*** SESSION apr 27, 2026 18:08:05.110 ------------------------------------------
*** SESSION apr 28, 2026 17:49:36.231 ------------------------------------------
*** SESSION apr 28, 2026 22:13:13.508 ------------------------------------------

View File

@@ -1,10 +1,19 @@
19:18:10 **** Incremental Build of configuration Debug for project AUTOM10 ****
22:27:58 **** Incremental Build of configuration Debug for project AUTOM10 ****
make -j12 all
arm-none-eabi-gcc "../Core/Src/cdc_int.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/cdc_int.d" -MT"Core/Src/cdc_int.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/cdc_int.o"
arm-none-eabi-gcc "../Core/Src/eeprom.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/eeprom.d" -MT"Core/Src/eeprom.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/eeprom.o"
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/main.o"
arm-none-eabi-gcc -o "AUTOM10.elf" @"objects.list" -mcpu=cortex-m3 -T"C:\progetti\AUTOM\workspace\AUTOM10\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AUTOM10.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
Finished building target: AUTOM10.elf
arm-none-eabi-size AUTOM10.elf
arm-none-eabi-objdump -h -S AUTOM10.elf > "AUTOM10.list"
text data bss dec hex filename
57524 468 7336 65328 ff30 AUTOM10.elf
57620 468 7336 65424 ff90 AUTOM10.elf
Finished building: default.size.stdout
Finished building: AUTOM10.list
19:18:10 Build Finished. 0 errors, 0 warnings. (took 434ms)
22:28:00 Build Finished. 0 errors, 0 warnings. (took 2s.613ms)

View File

@@ -1,5 +1,6 @@
19:16:01 **** Incremental Build of configuration Debug for project AUTOM10 ****
22:27:58 **** Incremental Build of configuration Debug for project AUTOM10 ****
make -j12 all
arm-none-eabi-gcc "../Core/Src/cdc_int.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/cdc_int.d" -MT"Core/Src/cdc_int.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/cdc_int.o"
arm-none-eabi-gcc "../Core/Src/eeprom.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/eeprom.d" -MT"Core/Src/eeprom.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/eeprom.o"
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/main.o"
arm-none-eabi-gcc -o "AUTOM10.elf" @"objects.list" -mcpu=cortex-m3 -T"C:\progetti\AUTOM\workspace\AUTOM10\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AUTOM10.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
@@ -8,15 +9,8 @@ Finished building target: AUTOM10.elf
arm-none-eabi-size AUTOM10.elf
arm-none-eabi-objdump -h -S AUTOM10.elf > "AUTOM10.list"
text data bss dec hex filename
57524 468 7336 65328 ff30 AUTOM10.elf
57620 468 7336 65424 ff90 AUTOM10.elf
Finished building: default.size.stdout
Finished building: AUTOM10.list
19:18:10 **** Incremental Build of configuration Debug for project AUTOM10 ****
make -j12 all
arm-none-eabi-size AUTOM10.elf
text data bss dec hex filename
57524 468 7336 65328 ff30 AUTOM10.elf
Finished building: default.size.stdout

View File

@@ -0,0 +1,390 @@
#include "eeprom.h"
/*
* Record format (4 bytes):
* [0] VirtAddress (uint16_t)
* [2] Data (uint16_t)
*
* Page layout:
* [0] PageStatus (uint16_t)
* [2..] Records...
*/
extern uint16_t m1pwmap;
extern uint16_t m1pwmch;
extern uint16_t m2pwmap;
extern uint16_t m2pwmch;
extern uint16_t m3pwmap;
extern uint16_t m3pwmch;
extern uint16_t m4pwmap;
extern uint16_t m4pwmch;
extern uint16_t t1ap;
extern uint16_t t2ap;
extern uint16_t t3ap;
extern uint16_t t4ap;
extern uint16_t twap;
extern uint16_t tramp;
extern uint16_t t1ch;
extern uint16_t t2ch;
extern uint16_t t3ch;
extern uint16_t t4ch;
extern uint16_t twch;
extern uint16_t tramp1;
extern uint16_t trampman;
extern uint16_t m1pwmMan;
extern uint16_t m2pwmMan;
extern uint16_t m3pwmMan;
extern uint16_t m4pwmMan;
const uint8_t deftab[32]={
40, //m1pwmap
60, //m1pwmch
70, //m2pwmap
70, //m2pwmch
35, //m3pwmap
40, //m3pwmch
40, //m4pwmap
40, //m4pwmch
20, //m1rampstart
20, //m2rampstart
20, //m3rampstart
20, //m4rampstart
28, //t1ap
4, //t2ap
10, //t3ap
40, //t4ap
1, //twap
27, //t1ch
10, //t2ch
30, //t3ch
1, //t4ch
1, //twch
0,
0,
0,
100, //tramp1
60, //m1pwmMan
70, //m2pwmMan
40, //m3pwmMan
40, //m4pwmMan
50, //trampman
10, //tramp
};
typedef struct
{
uint16_t VirtAddress;
uint16_t Data;
} EE_Record_t;
/* Active page base address (runtime selected in EE_Init) */
static uint32_t EE_ActivePageBase = EE_PAGE0_BASE;
/* 32 sequential virtual addresses */
const uint16_t EE_VirtAddrs[EE_NUM_VIRTUAL_ADDR] =
{
0x0001, 0x0002, 0x0003, 0x0004,
0x0005, 0x0006, 0x0007, 0x0008,
0x0009, 0x000A, 0x000B, 0x000C,
0x000D, 0x000E, 0x000F, 0x0010,
0x0011, 0x0012, 0x0013, 0x0014,
0x0015, 0x0016, 0x0017, 0x0018,
0x0019, 0x001A, 0x001B, 0x001C,
0x001D, 0x001E, 0x001F, 0x0020
};
/* ========================================================================= */
/* --- Internal helpers ---------------------------------------------------- */
static uint16_t EE_GetPageStatus(uint32_t pageBase)
{
return *(__IO uint16_t *)pageBase;
}
static HAL_StatusTypeDef EE_FlashProgramHalfWord(uint32_t Address, uint16_t Data)
{
HAL_StatusTypeDef status;
HAL_FLASH_Unlock();
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, Address, Data);
HAL_FLASH_Lock();
return status;
}
static HAL_StatusTypeDef EE_FlashErasePage(uint32_t PageAddress)
{
HAL_StatusTypeDef status;
FLASH_EraseInitTypeDef EraseInit;
uint32_t PageError = 0;
HAL_FLASH_Unlock();
EraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
EraseInit.PageAddress = PageAddress;
EraseInit.NbPages = 1;
status = HAL_FLASHEx_Erase(&EraseInit, &PageError);
HAL_FLASH_Lock();
return status;
}
/* Find first free record address in given page (returns 0 if full) */
static uint32_t EE_FindFreeAddress(uint32_t pageBase)
{
uint32_t addr = pageBase + 2U; /* Skip status word */
uint32_t pageEnd = pageBase + EE_PAGE_SIZE;
while (addr < (pageEnd - sizeof(EE_Record_t) + 1U))
{
uint16_t vaddr = *(__IO uint16_t *)addr;
if (vaddr == 0xFFFFU)
{
/* Empty slot */
return addr;
}
addr += sizeof(EE_Record_t);
}
return 0U; /* No space */
}
/* Find latest value of VirtAddress in a specific page (internal, uses EE_Status) */
/* Find latest value of VirtAddress in a specific page (scan forward) */
static EE_Status EE_FindInPage(uint32_t pageBase, uint16_t VirtAddress, uint16_t *Data)
{
uint32_t addr = pageBase + 2U; // skip status halfword
uint32_t pageEnd = pageBase + EE_PAGE_SIZE;
EE_Status result = EE_NOT_FOUND;
uint16_t lastVal = 0;
if (Data == NULL)
return EE_ERROR;
while (addr <= (pageEnd - sizeof(EE_Record_t)))
{
uint16_t vaddr = *(__IO uint16_t *)addr;
if (vaddr == 0xFFFFU)
{
// First empty slot => no more records in this page
break;
}
uint16_t value = *(__IO uint16_t *)(addr + 2U);
if (vaddr == VirtAddress)
{
lastVal = value; // keep most recent
result = EE_OK;
}
addr += sizeof(EE_Record_t); // move 4 bytes forward
}
if (result == EE_OK)
*Data = lastVal;
return result;
}
/* Format both pages: erase and set PAGE0 as VALID */
static EE_Status EE_Format(void)
{
if (EE_FlashErasePage(EE_PAGE0_BASE) != HAL_OK)
return EE_STATUS_ERROR;
if (EE_FlashErasePage(EE_PAGE1_BASE) != HAL_OK)
return EE_STATUS_ERROR;
if (EE_FlashProgramHalfWord(EE_PAGE0_BASE, EE_PAGE_STATUS_VALID) != HAL_OK)
return EE_STATUS_ERROR;
/* PAGE1 will remain erased (status = 0xFFFF) */
EE_ActivePageBase = EE_PAGE0_BASE;
return EE_STATUS_OK;
}
/* Get the base of the other page */
static uint32_t EE_GetOtherPageBase(uint32_t pageBase)
{
return (pageBase == EE_PAGE0_BASE) ? EE_PAGE1_BASE : EE_PAGE0_BASE;
}
/* Page transfer (garbage collection + new write) */
static EE_Status EE_PageTransfer(uint16_t VirtAddress, uint16_t Data)
{
uint32_t oldBase = EE_ActivePageBase;
uint32_t newBase = EE_GetOtherPageBase(oldBase);
uint32_t addr;
uint16_t value;
EE_Status st;
/* Erase new page */
if (EE_FlashErasePage(newBase) != HAL_OK)
return EE_STATUS_ERROR;
/* Mark new page as RECEIVE */
if (EE_FlashProgramHalfWord(newBase, EE_PAGE_STATUS_RECEIVE) != HAL_OK)
return EE_STATUS_ERROR;
/* Start writing records just after status */
addr = newBase + 2U;
/* For each known virtual variable */
for (uint16_t i = 0; i < EE_NUM_VIRTUAL_ADDR; i++)
{
uint16_t vaddr = EE_VirtAddrs[i];
if (vaddr == VirtAddress)
{
/* Use the new data passed into PageTransfer */
value = Data;
}
else
{
/* Read latest value from old active page */
st = EE_FindInPage(oldBase, vaddr, &value);
if (st != EE_STATUS_OK)
{
/* Variable never written -> skip */
continue;
}
}
/* Write record to new page */
if (EE_FlashProgramHalfWord(addr, vaddr) != HAL_OK)
return EE_STATUS_ERROR;
if (EE_FlashProgramHalfWord(addr + 2U, value) != HAL_OK)
return EE_STATUS_ERROR;
addr += sizeof(EE_Record_t);
if (addr >= (newBase + EE_PAGE_SIZE))
return EE_STATUS_NO_SPACE;
}
/* Erase old page */
if (EE_FlashErasePage(oldBase) != HAL_OK)
return EE_STATUS_ERROR;
/* Mark new page as VALID */
if (EE_FlashProgramHalfWord(newBase, EE_PAGE_STATUS_VALID) != HAL_OK)
return EE_STATUS_ERROR;
/* Update active page */
EE_ActivePageBase = newBase;
return EE_STATUS_OK;
}
/* --- Public API ----------------------------------------------------------- */
/*
* Initialize the EEPROM emulation.
* - Checks page statuses and chooses the active page.
* - If inconsistent or blank, formats pages.
* PUBLIC RETURN TYPE: uint16_t (EE_OK / EE_ERROR / ...)
*/
uint16_t EE_Init(void)
{
uint16_t status0 = EE_GetPageStatus(EE_PAGE0_BASE);
uint16_t status1 = EE_GetPageStatus(EE_PAGE1_BASE);
if ((status0 == EE_PAGE_STATUS_ERASED) && (status1 == EE_PAGE_STATUS_ERASED))
{
/* Fresh device -> format */
return (uint16_t)EE_Format();
}
else if ((status0 == EE_PAGE_STATUS_VALID) && (status1 == EE_PAGE_STATUS_ERASED))
{
EE_ActivePageBase = EE_PAGE0_BASE;
return EE_OK;
}
else if ((status1 == EE_PAGE_STATUS_VALID) && (status0 == EE_PAGE_STATUS_ERASED))
{
EE_ActivePageBase = EE_PAGE1_BASE;
return EE_OK;
}
else
{
/* Any weird or inconsistent state -> reformat */
return (uint16_t)EE_Format();
}
}
/*
* Read a 16-bit variable by its virtual address.
* PUBLIC RETURN: EE_OK / EE_NOT_FOUND / EE_ERROR (as uint16_t)
*/
uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t *Data)
{
EE_Status st;
if (Data == NULL)
return EE_ERROR;
st = EE_FindInPage(EE_ActivePageBase, VirtAddress, Data);
return (uint16_t)st;
}
/*
* Write (append) a 16-bit variable.
* - Writes a new record in the active page.
* - If the page is full, triggers a page transfer (GC).
* PUBLIC RETURN: EE_OK / EE_ERROR / EE_NO_SPACE (as uint16_t)
*/
uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data)
{
uint32_t freeAddr;
EE_Status st;
/* Find free space in active page */
freeAddr = EE_FindFreeAddress(EE_ActivePageBase);
if (freeAddr != 0U)
{
/* Write new record */
if (EE_FlashProgramHalfWord(freeAddr, VirtAddress) != HAL_OK)
return EE_ERROR;
if (EE_FlashProgramHalfWord(freeAddr + 2U, Data) != HAL_OK)
return EE_ERROR;
return EE_OK;
}
/* No space -> page transfer */
st = EE_PageTransfer(VirtAddress, Data);
return (uint16_t)st;
}
void loadEE(void){
EEW_Read(M1PWMAP, &m1pwmap);
EEW_Read(M1PWMCH, &m1pwmch);
EEW_Read(M2PWMAP, &m2pwmap);
EEW_Read(M2PWMCH, &m2pwmch);
EEW_Read(M3PWMAP, &m3pwmap);
EEW_Read(M3PWMCH, &m3pwmch);
EEW_Read(M4PWMAP, &m4pwmap);
EEW_Read(M4PWMCH, &m4pwmch);
EEW_Read(T1AP, &t1ap);
EEW_Read(T2AP, &t2ap);
EEW_Read(T3AP, &t3ap);
EEW_Read(T4AP, &t4ap);
EEW_Read(TWAP, &twap);
EEW_Read(T1CH, &t1ch);
EEW_Read(T2CH, &t2ch);
EEW_Read(T3CH, &t3ch);
EEW_Read(T4CH, &t4ch);
EEW_Read(TWCH, &twch);
EEW_Read(TRAMP1, &tramp1);
EEW_Read(M1PWMMAN, &m1pwmMan);
EEW_Read(M2PWMMAN, &m2pwmMan);
EEW_Read(M3PWMMAN, &m3pwmMan);
EEW_Read(M4PWMMAN, &m4pwmMan);
EEW_Read(TRAMPMAN, &trampman);
EEW_Read(TRAMP, &tramp);
}

View File

@@ -0,0 +1,124 @@
/*
* eeprom.h
*
* Created on: Dec 7, 2025
* Author: user
*/
#ifndef __EEPROM_H
#define __EEPROM_H
#ifdef __cplusplus
extern "C" {
#endif
#include "stm32f1xx_hal.h"
/*
* Simple EEPROM emulation for STM32F103C8T6 (medium density).
* - Uses 2 Flash pages (1 kB each) at the end of Flash.
* - Stores variables as 16-bit values identified by 16-bit "virtual addresses".
*
* You must define the list of virtual addresses in eeprom.c: EE_VirtAddrs[].
*/
typedef enum
{
EE_STATUS_OK = 0,
EE_STATUS_ERROR,
EE_STATUS_NOT_FOUND,
EE_STATUS_NO_SPACE
} EE_Status;
/* For compatibility with ST style uint16_t return codes */
#define EE_OK ((uint16_t)EE_STATUS_OK)
#define EE_ERROR ((uint16_t)EE_STATUS_ERROR)
#define EE_NOT_FOUND ((uint16_t)EE_STATUS_NOT_FOUND)
#define EE_NO_SPACE ((uint16_t)EE_STATUS_NO_SPACE)
/* Flash parameters for STM32F103C8T6 */
#define EE_FLASH_BASE_ADDR 0x08000000U
#define EE_PAGE_SIZE 0x400U /* 1 kB pages */
/*
* Here we assume a 64 kB Flash device (STM32F103C8T6):
* Flash range: 0x0800 0000 - 0x0800 FFFF
* Pages: 0..63 (64 pages)
* We use the last 2 pages for EEPROM:
* - Page 62: 0x0800 F800
* - Page 63: 0x0800 FC00
*/
#define EE_PAGE0_BASE (EE_FLASH_BASE_ADDR + (62U * EE_PAGE_SIZE))
#define EE_PAGE1_BASE (EE_FLASH_BASE_ADDR + (63U * EE_PAGE_SIZE))
/* Page status markers (stored in the first halfword of each page) */
#define EE_PAGE_STATUS_ERASED 0xFFFFU
#define EE_PAGE_STATUS_VALID 0xAAAAU
#define EE_PAGE_STATUS_RECEIVE 0x5555U
/*
* Configure how many virtual variables you have.
* Example: bytes, words, and array elements mapped to 16-bit variables.
* Set EE_NUM_VIRTUAL_ADDR and define EE_VirtAddrs[] in eeprom.c.
*/
/* 32 virtual variables, sequential addresses */
#define EE_NUM_VIRTUAL_ADDR 32U
#define EEW_ADDR(i) (uint16_t)(0x0001 + (i)) // i = 0..31
#define M1PWMAP 0 //m1pwmap
#define M1PWMCH 1 //m1pwmch
#define M2PWMAP 2 //m2pwmap
#define M2PWMCH 3 //m2pwmch
#define M3PWMAP 4 //m3pwmap
#define M3PWMCH 5 //m3pwmch
#define M4PWMAP 6 //m4pwmap
#define M4PWMCH 7 //m4pwmch
#define M1RAMPSTART 8 //m1rampstart
#define M2RAMPSTART 9 //m2rampstart
#define M3RAMPSTART 10 //m3rampstart
#define M4RAMPSTART 11 //m4rampstart
#define T1AP 12 //t1ap
#define T2AP 13 //t2ap
#define T3AP 14 //t3ap
#define T4AP 15 //t4ap
#define TWAP 16 //twap
#define T1CH 17 //t1ch
#define T2CH 18 //t2ch
#define T3CH 19 //t3ch
#define T4CH 20 //t4ch
#define TWCH 21 //twch
#define TRAMP1 25 //tramp1
#define M1PWMMAN 26 //m1pwmMan
#define M2PWMMAN 27 //m2pwmMan
#define M3PWMMAN 28 //m3pwmMan
#define M4PWMMAN 29 //m4pwmMan
#define TRAMPMAN 30 //trampman
#define TRAMP 31 //tramp
/* Virtual address table (defined in eeprom.c, can be customized) */
extern const uint16_t EE_VirtAddrs[EE_NUM_VIRTUAL_ADDR];
/* Public API now using uint16_t like ST examples */
uint16_t EE_Init(void);
uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t *Data);
uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data);
void loadEE(void);
/* Pseudo-array accessor EEW[idx] */
static inline uint16_t EEW_Read(uint8_t idx, uint16_t *value)
{
return EE_ReadVariable(EEW_ADDR(idx), value);
}
static inline uint16_t EEW_Write(uint8_t idx, uint16_t value)
{
return EE_WriteVariable(EEW_ADDR(idx), value);
}
#ifdef __cplusplus
}
#endif
#endif /* __EEPROM_H */

View File

@@ -0,0 +1,431 @@
#include "eeprom.h"
/*
* Record format (4 bytes):
* [0] VirtAddress (uint16_t)
* [2] Data (uint16_t)
*
* Page layout:
* [0] PageStatus (uint16_t)
* [2..] Records...
*/
extern uint16_t m1pwmap;
extern uint16_t m1pwmch;
extern uint16_t m2pwmap;
extern uint16_t m2pwmch;
extern uint16_t m3pwmap;
extern uint16_t m3pwmch;
extern uint16_t m4pwmap;
extern uint16_t m4pwmch;
extern uint16_t t1ap;
extern uint16_t t2ap;
extern uint16_t t3ap;
extern uint16_t t4ap;
extern uint16_t twap;
extern uint16_t tramp;
extern uint16_t t1ch;
extern uint16_t t2ch;
extern uint16_t t3ch;
extern uint16_t t4ch;
extern uint16_t twch;
extern uint16_t tramp1;
extern uint16_t trampman;
extern uint16_t m1pwmMan;
extern uint16_t m2pwmMan;
extern uint16_t m3pwmMan;
extern uint16_t m4pwmMan;
const uint8_t deftab[32]={
40, //m1pwmap
60, //m1pwmch
70, //m2pwmap
70, //m2pwmch
35, //m3pwmap
40, //m3pwmch
40, //m4pwmap
40, //m4pwmch
20, //m1rampstart
20, //m2rampstart
20, //m3rampstart
20, //m4rampstart
28, //t1ap
4, //t2ap
10, //t3ap
40, //t4ap
1, //twap
27, //t1ch
10, //t2ch
30, //t3ch
1, //t4ch
1, //twch
0,
0,
0,
100, //tramp1
60, //m1pwmMan
70, //m2pwmMan
40, //m3pwmMan
40, //m4pwmMan
50, //trampman
10, //tramp
40,
60,
70,
70,
35,
40,
40,
40,
20,
20,
20,
20,
28,
4,
10,
40,
1,
27,
10,
30,
1,
1,
0,
0,
0,
100,
60,
70,
40,
40,
50,
10,
};
typedef struct
{
uint16_t VirtAddress;
uint16_t Data;
} EE_Record_t;
/* Active page base address (runtime selected in EE_Init) */
static uint32_t EE_ActivePageBase = EE_PAGE0_BASE;
/* 32 sequential virtual addresses */
const uint16_t EE_VirtAddrs[EE_NUM_VIRTUAL_ADDR] =
{
0x0001, 0x0002, 0x0003, 0x0004,
0x0005, 0x0006, 0x0007, 0x0008,
0x0009, 0x000A, 0x000B, 0x000C,
0x000D, 0x000E, 0x000F, 0x0010,
0x0011, 0x0012, 0x0013, 0x0014,
0x0015, 0x0016, 0x0017, 0x0018,
0x0019, 0x001A, 0x001B, 0x001C,
0x001D, 0x001E, 0x001F, 0x0020,
0x0021, 0x0022, 0x0023, 0x0024,
0x0025, 0x0026, 0x0027, 0x0028,
0x0029, 0x002A, 0x002B, 0x002C,
0x002D, 0x002E, 0x002F, 0x0030,
0x0031, 0x0032, 0x0033, 0x0034,
0x0035, 0x0036, 0x0037, 0x0038,
0x0039, 0x003A, 0x003B, 0x003C,
0x003D, 0x003E, 0x003F, 0x0040
};
/* ========================================================================= */
/* --- Internal helpers ---------------------------------------------------- */
static uint16_t EE_GetPageStatus(uint32_t pageBase)
{
return *(__IO uint16_t *)pageBase;
}
static HAL_StatusTypeDef EE_FlashProgramHalfWord(uint32_t Address, uint16_t Data)
{
HAL_StatusTypeDef status;
HAL_FLASH_Unlock();
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, Address, Data);
HAL_FLASH_Lock();
return status;
}
static HAL_StatusTypeDef EE_FlashErasePage(uint32_t PageAddress)
{
HAL_StatusTypeDef status;
FLASH_EraseInitTypeDef EraseInit;
uint32_t PageError = 0;
HAL_FLASH_Unlock();
EraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
EraseInit.PageAddress = PageAddress;
EraseInit.NbPages = 1;
status = HAL_FLASHEx_Erase(&EraseInit, &PageError);
HAL_FLASH_Lock();
return status;
}
/* Find first free record address in given page (returns 0 if full) */
static uint32_t EE_FindFreeAddress(uint32_t pageBase)
{
uint32_t addr = pageBase + 2U; /* Skip status word */
uint32_t pageEnd = pageBase + EE_PAGE_SIZE;
while (addr < (pageEnd - sizeof(EE_Record_t) + 1U))
{
uint16_t vaddr = *(__IO uint16_t *)addr;
if (vaddr == 0xFFFFU)
{
/* Empty slot */
return addr;
}
addr += sizeof(EE_Record_t);
}
return 0U; /* No space */
}
/* Find latest value of VirtAddress in a specific page (internal, uses EE_Status) */
/* Find latest value of VirtAddress in a specific page (scan forward) */
static EE_Status EE_FindInPage(uint32_t pageBase, uint16_t VirtAddress, uint16_t *Data)
{
uint32_t addr = pageBase + 2U; // skip status halfword
uint32_t pageEnd = pageBase + EE_PAGE_SIZE;
EE_Status result = EE_NOT_FOUND;
uint16_t lastVal = 0;
if (Data == NULL)
return EE_ERROR;
while (addr <= (pageEnd - sizeof(EE_Record_t)))
{
uint16_t vaddr = *(__IO uint16_t *)addr;
if (vaddr == 0xFFFFU)
{
// First empty slot => no more records in this page
break;
}
uint16_t value = *(__IO uint16_t *)(addr + 2U);
if (vaddr == VirtAddress)
{
lastVal = value; // keep most recent
result = EE_OK;
}
addr += sizeof(EE_Record_t); // move 4 bytes forward
}
if (result == EE_OK)
*Data = lastVal;
return result;
}
/* Format both pages: erase and set PAGE0 as VALID */
static EE_Status EE_Format(void)
{
if (EE_FlashErasePage(EE_PAGE0_BASE) != HAL_OK)
return EE_STATUS_ERROR;
if (EE_FlashErasePage(EE_PAGE1_BASE) != HAL_OK)
return EE_STATUS_ERROR;
if (EE_FlashProgramHalfWord(EE_PAGE0_BASE, EE_PAGE_STATUS_VALID) != HAL_OK)
return EE_STATUS_ERROR;
/* PAGE1 will remain erased (status = 0xFFFF) */
EE_ActivePageBase = EE_PAGE0_BASE;
return EE_STATUS_OK;
}
/* Get the base of the other page */
static uint32_t EE_GetOtherPageBase(uint32_t pageBase)
{
return (pageBase == EE_PAGE0_BASE) ? EE_PAGE1_BASE : EE_PAGE0_BASE;
}
/* Page transfer (garbage collection + new write) */
static EE_Status EE_PageTransfer(uint16_t VirtAddress, uint16_t Data)
{
uint32_t oldBase = EE_ActivePageBase;
uint32_t newBase = EE_GetOtherPageBase(oldBase);
uint32_t addr;
uint16_t value;
EE_Status st;
/* Erase new page */
if (EE_FlashErasePage(newBase) != HAL_OK)
return EE_STATUS_ERROR;
/* Mark new page as RECEIVE */
if (EE_FlashProgramHalfWord(newBase, EE_PAGE_STATUS_RECEIVE) != HAL_OK)
return EE_STATUS_ERROR;
/* Start writing records just after status */
addr = newBase + 2U;
/* For each known virtual variable */
for (uint16_t i = 0; i < EE_NUM_VIRTUAL_ADDR; i++)
{
uint16_t vaddr = EE_VirtAddrs[i];
if (vaddr == VirtAddress)
{
/* Use the new data passed into PageTransfer */
value = Data;
}
else
{
/* Read latest value from old active page */
st = EE_FindInPage(oldBase, vaddr, &value);
if (st != EE_STATUS_OK)
{
/* Variable never written -> skip */
continue;
}
}
/* Write record to new page */
if (EE_FlashProgramHalfWord(addr, vaddr) != HAL_OK)
return EE_STATUS_ERROR;
if (EE_FlashProgramHalfWord(addr + 2U, value) != HAL_OK)
return EE_STATUS_ERROR;
addr += sizeof(EE_Record_t);
if (addr >= (newBase + EE_PAGE_SIZE))
return EE_STATUS_NO_SPACE;
}
/* Erase old page */
if (EE_FlashErasePage(oldBase) != HAL_OK)
return EE_STATUS_ERROR;
/* Mark new page as VALID */
if (EE_FlashProgramHalfWord(newBase, EE_PAGE_STATUS_VALID) != HAL_OK)
return EE_STATUS_ERROR;
/* Update active page */
EE_ActivePageBase = newBase;
return EE_STATUS_OK;
}
/* --- Public API ----------------------------------------------------------- */
/*
* Initialize the EEPROM emulation.
* - Checks page statuses and chooses the active page.
* - If inconsistent or blank, formats pages.
* PUBLIC RETURN TYPE: uint16_t (EE_OK / EE_ERROR / ...)
*/
uint16_t EE_Init(void)
{
uint16_t status0 = EE_GetPageStatus(EE_PAGE0_BASE);
uint16_t status1 = EE_GetPageStatus(EE_PAGE1_BASE);
if ((status0 == EE_PAGE_STATUS_ERASED) && (status1 == EE_PAGE_STATUS_ERASED))
{
/* Fresh device -> format */
return (uint16_t)EE_Format();
}
else if ((status0 == EE_PAGE_STATUS_VALID) && (status1 == EE_PAGE_STATUS_ERASED))
{
EE_ActivePageBase = EE_PAGE0_BASE;
return EE_OK;
}
else if ((status1 == EE_PAGE_STATUS_VALID) && (status0 == EE_PAGE_STATUS_ERASED))
{
EE_ActivePageBase = EE_PAGE1_BASE;
return EE_OK;
}
else
{
/* Any weird or inconsistent state -> reformat */
return (uint16_t)EE_Format();
}
}
/*
* Read a 16-bit variable by its virtual address.
* PUBLIC RETURN: EE_OK / EE_NOT_FOUND / EE_ERROR (as uint16_t)
*/
uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t *Data)
{
EE_Status st;
if (Data == NULL)
return EE_ERROR;
st = EE_FindInPage(EE_ActivePageBase, VirtAddress, Data);
return (uint16_t)st;
}
/*
* Write (append) a 16-bit variable.
* - Writes a new record in the active page.
* - If the page is full, triggers a page transfer (GC).
* PUBLIC RETURN: EE_OK / EE_ERROR / EE_NO_SPACE (as uint16_t)
*/
uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data)
{
uint32_t freeAddr;
EE_Status st;
/* Find free space in active page */
freeAddr = EE_FindFreeAddress(EE_ActivePageBase);
if (freeAddr != 0U)
{
/* Write new record */
if (EE_FlashProgramHalfWord(freeAddr, VirtAddress) != HAL_OK)
return EE_ERROR;
if (EE_FlashProgramHalfWord(freeAddr + 2U, Data) != HAL_OK)
return EE_ERROR;
return EE_OK;
}
/* No space -> page transfer */
st = EE_PageTransfer(VirtAddress, Data);
return (uint16_t)st;
}
void loadEE(void){
EEW_Read(M1PWMAP, &m1pwmap);
EEW_Read(M1PWMCH, &m1pwmch);
EEW_Read(M2PWMAP, &m2pwmap);
EEW_Read(M2PWMCH, &m2pwmch);
EEW_Read(M3PWMAP, &m3pwmap);
EEW_Read(M3PWMCH, &m3pwmch);
EEW_Read(M4PWMAP, &m4pwmap);
EEW_Read(M4PWMCH, &m4pwmch);
EEW_Read(T1AP, &t1ap);
EEW_Read(T2AP, &t2ap);
EEW_Read(T3AP, &t3ap);
EEW_Read(T4AP, &t4ap);
EEW_Read(TWAP, &twap);
EEW_Read(T1CH, &t1ch);
EEW_Read(T2CH, &t2ch);
EEW_Read(T3CH, &t3ch);
EEW_Read(T4CH, &t4ch);
EEW_Read(TWCH, &twch);
EEW_Read(TRAMP1, &tramp1);
EEW_Read(M1PWMMAN, &m1pwmMan);
EEW_Read(M2PWMMAN, &m2pwmMan);
EEW_Read(M3PWMMAN, &m3pwmMan);
EEW_Read(M4PWMMAN, &m4pwmMan);
EEW_Read(TRAMPMAN, &trampman);
EEW_Read(TRAMP, &tramp);
}

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
#Tue Apr 28 17:49:33 CEST 2026
#Wed Apr 29 20:10:45 CEST 2026
org.eclipse.core.runtime=2
org.eclipse.platform=4.33.0.v20240903-0240

View File

@@ -36,7 +36,7 @@ extern uint16_t m2pwmMan;
extern uint16_t m3pwmMan;
extern uint16_t m4pwmMan;
const uint8_t deftab[32]={
const uint8_t deftab[EE_NUM_VIRTUAL_ADDR]={
40, //m1pwmap
60, //m1pwmch
70, //m2pwmap
@@ -69,6 +69,38 @@ const uint8_t deftab[32]={
40, //m4pwmMan
50, //trampman
10, //tramp
40,
60,
70,
70,
35,
40,
40,
40,
20,
20,
20,
20,
28,
4,
10,
40,
1,
27,
10,
30,
1,
1,
0,
0,
0,
100,
60,
70,
40,
40,
50,
10,
};
typedef struct
@@ -83,14 +115,23 @@ static uint32_t EE_ActivePageBase = EE_PAGE0_BASE;
/* 32 sequential virtual addresses */
const uint16_t EE_VirtAddrs[EE_NUM_VIRTUAL_ADDR] =
{
0x0001, 0x0002, 0x0003, 0x0004,
0x0005, 0x0006, 0x0007, 0x0008,
0x0009, 0x000A, 0x000B, 0x000C,
0x000D, 0x000E, 0x000F, 0x0010,
0x0011, 0x0012, 0x0013, 0x0014,
0x0015, 0x0016, 0x0017, 0x0018,
0x0019, 0x001A, 0x001B, 0x001C,
0x001D, 0x001E, 0x001F, 0x0020
0x0001, 0x0002, 0x0003, 0x0004,
0x0005, 0x0006, 0x0007, 0x0008,
0x0009, 0x000A, 0x000B, 0x000C,
0x000D, 0x000E, 0x000F, 0x0010,
0x0011, 0x0012, 0x0013, 0x0014,
0x0015, 0x0016, 0x0017, 0x0018,
0x0019, 0x001A, 0x001B, 0x001C,
0x001D, 0x001E, 0x001F, 0x0020,
0x0021, 0x0022, 0x0023, 0x0024,
0x0025, 0x0026, 0x0027, 0x0028,
0x0029, 0x002A, 0x002B, 0x002C,
0x002D, 0x002E, 0x002F, 0x0030,
0x0031, 0x0032, 0x0033, 0x0034,
0x0035, 0x0036, 0x0037, 0x0038,
0x0039, 0x003A, 0x003B, 0x003C,
0x003D, 0x003E, 0x003F, 0x0040
};
/* ========================================================================= */

View File

@@ -62,8 +62,8 @@ typedef enum
* Set EE_NUM_VIRTUAL_ADDR and define EE_VirtAddrs[] in eeprom.c.
*/
/* 32 virtual variables, sequential addresses */
#define EE_NUM_VIRTUAL_ADDR 32U
#define EEW_ADDR(i) (uint16_t)(0x0001 + (i)) // i = 0..31
#define EE_NUM_VIRTUAL_ADDR 64U
#define EEW_ADDR(i) ((uint16_t)(0x0001U + (uint16_t)(i))) // i = 0..63
#define M1PWMAP 0 //m1pwmap

Binary file not shown.

View File

@@ -7,45 +7,45 @@ Idx Name Size VMA LMA File off Algn
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .text 0000dc60 0800010c 0800010c 0000110c 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .rodata 00000338 0800dd6c 0800dd6c 0000ed6c 2**2
2 .rodata 00000398 0800dd6c 0800dd6c 0000ed6c 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .ARM.extab 00000000 0800e0a4 0800e0a4 000101d4 2**0
3 .ARM.extab 00000000 0800e104 0800e104 000101d4 2**0
CONTENTS, READONLY
4 .ARM 00000008 0800e0a4 0800e0a4 0000f0a4 2**2
4 .ARM 00000008 0800e104 0800e104 0000f104 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
5 .preinit_array 00000000 0800e0ac 0800e0ac 000101d4 2**0
5 .preinit_array 00000000 0800e10c 0800e10c 000101d4 2**0
CONTENTS, ALLOC, LOAD, DATA
6 .init_array 00000004 0800e0ac 0800e0ac 0000f0ac 2**2
6 .init_array 00000004 0800e10c 0800e10c 0000f10c 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
7 .fini_array 00000004 0800e0b0 0800e0b0 0000f0b0 2**2
7 .fini_array 00000004 0800e110 0800e110 0000f110 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
8 .data 000001d4 20000000 0800e0b4 00010000 2**2
8 .data 000001d4 20000000 0800e114 00010000 2**2
CONTENTS, ALLOC, LOAD, DATA
9 .bss 000016a4 200001d8 0800e288 000101d8 2**3
9 .bss 000016a4 200001d8 0800e2e8 000101d8 2**3
ALLOC
10 ._user_heap_stack 00000604 2000187c 0800e288 0001087c 2**0
10 ._user_heap_stack 00000604 2000187c 0800e2e8 0001087c 2**0
ALLOC
11 .ARM.attributes 00000029 00000000 00000000 000101d4 2**0
CONTENTS, READONLY
12 .debug_info 00019565 00000000 00000000 000101fd 2**0
12 .debug_info 00019571 00000000 00000000 000101fd 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
13 .debug_abbrev 00004732 00000000 00000000 00029762 2**0
13 .debug_abbrev 0000473a 00000000 00000000 0002976e 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
14 .debug_aranges 00001648 00000000 00000000 0002de98 2**3
14 .debug_aranges 00001648 00000000 00000000 0002dea8 2**3
CONTENTS, READONLY, DEBUGGING, OCTETS
15 .debug_rnglists 00001116 00000000 00000000 0002f4e0 2**0
15 .debug_rnglists 00001116 00000000 00000000 0002f4f0 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
16 .debug_macro 0001ccac 00000000 00000000 000305f6 2**0
16 .debug_macro 0001ccac 00000000 00000000 00030606 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
17 .debug_line 0001e1c6 00000000 00000000 0004d2a2 2**0
17 .debug_line 0001e1c6 00000000 00000000 0004d2b2 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
18 .debug_str 00095d23 00000000 00000000 0006b468 2**0
18 .debug_str 00095d30 00000000 00000000 0006b478 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
19 .comment 00000043 00000000 00000000 0010118b 2**0
19 .comment 00000043 00000000 00000000 001011a8 2**0
CONTENTS, READONLY
20 .debug_frame 00006010 00000000 00000000 001011d0 2**2
20 .debug_frame 00006010 00000000 00000000 001011ec 2**2
CONTENTS, READONLY, DEBUGGING, OCTETS
21 .debug_line_str 00000052 00000000 00000000 001071e0 2**0
21 .debug_line_str 00000052 00000000 00000000 001071fc 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
Disassembly of section .text:
@@ -2301,7 +2301,7 @@ static EE_Status EE_PageTransfer(uint16_t VirtAddress, uint16_t Data)
8001170: 3301 adds r3, #1
8001172: 837b strh r3, [r7, #26]
8001174: 8b7b ldrh r3, [r7, #26]
8001176: 2b1f cmp r3, #31
8001176: 2b3f cmp r3, #63 @ 0x3f
8001178: d9bf bls.n 80010fa <EE_PageTransfer+0x4e>
}
@@ -2343,7 +2343,7 @@ static EE_Status EE_PageTransfer(uint16_t VirtAddress, uint16_t Data)
80011ac: bd80 pop {r7, pc}
80011ae: bf00 nop
80011b0: 20000000 .word 0x20000000
80011b4: 0800e004 .word 0x0800e004
80011b4: 0800e024 .word 0x0800e024
080011b8 <EE_Init>:
* - Checks page statuses and chooses the active page.
@@ -9240,7 +9240,7 @@ LoopFillZerobss:
ldr r1, =_edata
800403c: 200001d4 .word 0x200001d4
ldr r2, =_sidata
8004040: 0800e0b4 .word 0x0800e0b4
8004040: 0800e114 .word 0x0800e114
ldr r2, =_sbss
8004044: 200001d8 .word 0x200001d8
ldr r4, =_ebss
@@ -18520,7 +18520,7 @@ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK
80077ca: bf00 nop
80077cc: 40022000 .word 0x40022000
80077d0: 40021000 .word 0x40021000
80077d4: 0800e044 .word 0x0800e044
80077d4: 0800e0a4 .word 0x0800e0a4
80077d8: 20000008 .word 0x20000008
80077dc: 2000000c .word 0x2000000c
@@ -18655,8 +18655,8 @@ uint32_t HAL_RCC_GetSysClockFreq(void)
8007872: bf00 nop
8007874: 40021000 .word 0x40021000
8007878: 00b71b00 .word 0x00b71b00
800787c: 0800e05c .word 0x0800e05c
8007880: 0800e06c .word 0x0800e06c
800787c: 0800e0bc .word 0x0800e0bc
8007880: 0800e0cc .word 0x0800e0cc
8007884: 003d0900 .word 0x003d0900
8007888: 007a1200 .word 0x007a1200
@@ -18703,7 +18703,7 @@ uint32_t HAL_RCC_GetPCLK1Freq(void)
80078bc: 4618 mov r0, r3
80078be: bd80 pop {r7, pc}
80078c0: 40021000 .word 0x40021000
80078c4: 0800e054 .word 0x0800e054
80078c4: 0800e0b4 .word 0x0800e0b4
080078c8 <HAL_RCC_GetPCLK2Freq>:
* @note Each time PCLK2 changes, this function must be called to update the
@@ -18729,7 +18729,7 @@ uint32_t HAL_RCC_GetPCLK2Freq(void)
80078e4: 4618 mov r0, r3
80078e6: bd80 pop {r7, pc}
80078e8: 40021000 .word 0x40021000
80078ec: 0800e054 .word 0x0800e054
80078ec: 0800e0b4 .word 0x0800e0b4
080078f0 <RCC_Delay>:
* @brief This function provides delay (in milliseconds) based on CPU cycles method.
@@ -32772,10 +32772,10 @@ USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status)
800d486: 4798 blx r3
800d488: 3601 adds r6, #1
800d48a: e7f2 b.n 800d472 <__libc_init_array+0x1e>
800d48c: 0800e0ac .word 0x0800e0ac
800d490: 0800e0ac .word 0x0800e0ac
800d494: 0800e0ac .word 0x0800e0ac
800d498: 0800e0b0 .word 0x0800e0b0
800d48c: 0800e10c .word 0x0800e10c
800d490: 0800e10c .word 0x0800e10c
800d494: 0800e10c .word 0x0800e10c
800d498: 0800e110 .word 0x0800e110
0800d49c <__retarget_lock_acquire_recursive>:
800d49c: 4770 bx lr
@@ -33279,9 +33279,9 @@ USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status)
800d920: a904 add r1, sp, #16
800d922: f000 f87d bl 800da20 <_printf_i>
800d926: e7ed b.n 800d904 <_svfiprintf_r+0x1c0>
800d928: 0800e06e .word 0x0800e06e
800d92c: 0800e074 .word 0x0800e074
800d930: 0800e078 .word 0x0800e078
800d928: 0800e0ce .word 0x0800e0ce
800d92c: 0800e0d4 .word 0x0800e0d4
800d930: 0800e0d8 .word 0x0800e0d8
800d934: 00000000 .word 0x00000000
800d938: 0800d68d .word 0x0800d68d
@@ -33613,8 +33613,8 @@ USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status)
800dc4c: 2500 movs r5, #0
800dc4e: f104 0619 add.w r6, r4, #25
800dc52: e7f5 b.n 800dc40 <_printf_i+0x220>
800dc54: 0800e07f .word 0x0800e07f
800dc58: 0800e090 .word 0x0800e090
800dc54: 0800e0df .word 0x0800e0df
800dc58: 0800e0f0 .word 0x0800e0f0
0800dc5c <memmove>:
800dc5c: 4288 cmp r0, r1

View File

@@ -5784,7 +5784,7 @@ LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
.iplt 0x0800dd6c 0x0
.iplt 0x0800dd6c 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
.rodata 0x0800dd6c 0x338
.rodata 0x0800dd6c 0x398
0x0800dd6c . = ALIGN (0x4)
*(.rodata)
.rodata 0x0800dd6c 0x203 ./Core/Src/cdc_int.o
@@ -5794,72 +5794,72 @@ LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
*(.rodata*)
*fill* 0x0800dfe2 0x2
.rodata.deftab
0x0800dfe4 0x20 ./Core/Src/eeprom.o
0x0800dfe4 0x40 ./Core/Src/eeprom.o
0x0800dfe4 deftab
.rodata.EE_VirtAddrs
0x0800e004 0x40 ./Core/Src/eeprom.o
0x0800e004 EE_VirtAddrs
0x0800e024 0x80 ./Core/Src/eeprom.o
0x0800e024 EE_VirtAddrs
.rodata.AHBPrescTable
0x0800e044 0x10 ./Core/Src/system_stm32f1xx.o
0x0800e044 AHBPrescTable
0x0800e0a4 0x10 ./Core/Src/system_stm32f1xx.o
0x0800e0a4 AHBPrescTable
.rodata.APBPrescTable
0x0800e054 0x8 ./Core/Src/system_stm32f1xx.o
0x0800e054 APBPrescTable
0x0800e0b4 0x8 ./Core/Src/system_stm32f1xx.o
0x0800e0b4 APBPrescTable
.rodata.aPLLMULFactorTable.1
0x0800e05c 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
0x0800e0bc 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.rodata.aPredivFactorTable.0
0x0800e06c 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
0x0800e0cc 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.rodata._svfprintf_r.str1.1
0x0800e06e 0x33 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o)
0x0800e0ce 0x33 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o)
0x11 (size before relaxing)
.rodata._printf_i.str1.1
0x0800e0a1 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o)
0x0800e0c4 . = ALIGN (0x4)
*fill* 0x0800e0a1 0x3
0x0800e101 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o)
0x0800e124 . = ALIGN (0x4)
*fill* 0x0800e101 0x3
.ARM.extab 0x0800e0a4 0x0
0x0800e0a4 . = ALIGN (0x4)
.ARM.extab 0x0800e104 0x0
0x0800e104 . = ALIGN (0x4)
*(.ARM.extab* .gnu.linkonce.armextab.*)
0x0800e0a4 . = ALIGN (0x4)
0x0800e104 . = ALIGN (0x4)
.ARM 0x0800e0a4 0x8
0x0800e0a4 . = ALIGN (0x4)
0x0800e0a4 __exidx_start = .
.ARM 0x0800e104 0x8
0x0800e104 . = ALIGN (0x4)
0x0800e104 __exidx_start = .
*(.ARM.exidx*)
.ARM.exidx 0x0800e0a4 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-strlen.o)
0x0800e0ac __exidx_end = .
0x0800e0ac . = ALIGN (0x4)
.ARM.exidx 0x0800e104 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-strlen.o)
0x0800e10c __exidx_end = .
0x0800e10c . = ALIGN (0x4)
.preinit_array 0x0800e0ac 0x0
0x0800e0ac . = ALIGN (0x4)
0x0800e0ac PROVIDE (__preinit_array_start = .)
.preinit_array 0x0800e10c 0x0
0x0800e10c . = ALIGN (0x4)
0x0800e10c PROVIDE (__preinit_array_start = .)
*(.preinit_array*)
0x0800e0ac PROVIDE (__preinit_array_end = .)
0x0800e0ac . = ALIGN (0x4)
0x0800e10c PROVIDE (__preinit_array_end = .)
0x0800e10c . = ALIGN (0x4)
.init_array 0x0800e0ac 0x4
0x0800e0ac . = ALIGN (0x4)
0x0800e0ac PROVIDE (__init_array_start = .)
.init_array 0x0800e10c 0x4
0x0800e10c . = ALIGN (0x4)
0x0800e10c PROVIDE (__init_array_start = .)
*(SORT_BY_NAME(.init_array.*))
*(.init_array*)
.init_array 0x0800e0ac 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
0x0800e0b0 PROVIDE (__init_array_end = .)
0x0800e0b0 . = ALIGN (0x4)
.init_array 0x0800e10c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
0x0800e110 PROVIDE (__init_array_end = .)
0x0800e110 . = ALIGN (0x4)
.fini_array 0x0800e0b0 0x4
0x0800e0b0 . = ALIGN (0x4)
.fini_array 0x0800e110 0x4
0x0800e110 . = ALIGN (0x4)
[!provide] PROVIDE (__fini_array_start = .)
*(SORT_BY_NAME(.fini_array.*))
*(.fini_array*)
.fini_array 0x0800e0b0 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
.fini_array 0x0800e110 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
[!provide] PROVIDE (__fini_array_end = .)
0x0800e0b4 . = ALIGN (0x4)
0x0800e0b4 _sidata = LOADADDR (.data)
0x0800e114 . = ALIGN (0x4)
0x0800e114 _sidata = LOADADDR (.data)
.rel.dyn 0x0800e0b4 0x0
.rel.iplt 0x0800e0b4 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
.rel.dyn 0x0800e114 0x0
.rel.iplt 0x0800e114 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
.data 0x20000000 0x1d4 load address 0x0800e0b4
.data 0x20000000 0x1d4 load address 0x0800e114
0x20000000 . = ALIGN (0x4)
0x20000000 _sdata = .
*(.data)
@@ -5928,11 +5928,11 @@ LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
0x200001d4 . = ALIGN (0x4)
0x200001d4 _edata = .
.igot.plt 0x200001d4 0x0 load address 0x0800e288
.igot.plt 0x200001d4 0x0 load address 0x0800e2e8
.igot.plt 0x200001d4 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o
0x200001d4 . = ALIGN (0x4)
.bss 0x200001d8 0x16a4 load address 0x0800e288
.bss 0x200001d8 0x16a4 load address 0x0800e2e8
0x200001d8 _sbss = .
0x200001d8 __bss_start__ = _sbss
*(.bss)
@@ -6107,7 +6107,7 @@ LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
0x2000187c __bss_end__ = _ebss
._user_heap_stack
0x2000187c 0x604 load address 0x0800e288
0x2000187c 0x604 load address 0x0800e2e8
0x20001880 . = ALIGN (0x8)
*fill* 0x2000187c 0x4
[!provide] PROVIDE (end = .)
@@ -6246,77 +6246,77 @@ LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a
LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a
.debug_info 0x00000000 0x19565
.debug_info 0x00000000 0x19571
.debug_info 0x00000000 0x1e9 ./Core/Src/adc.o
.debug_info 0x000001e9 0xb05 ./Core/Src/cdc_int.o
.debug_info 0x00000cee 0x7a6 ./Core/Src/debug.o
.debug_info 0x00001494 0x737 ./Core/Src/eeprom.o
.debug_info 0x00001bcb 0x1a23 ./Core/Src/main.o
.debug_info 0x000035ee 0x9c0 ./Core/Src/pwm.o
.debug_info 0x00003fae 0xf58 ./Core/Src/stm32f1xx_hal_msp.o
.debug_info 0x00004f06 0x81d ./Core/Src/stm32f1xx_it.o
.debug_info 0x00005723 0x168 ./Core/Src/sysmem.o
.debug_info 0x0000588b 0x222 ./Core/Src/system_stm32f1xx.o
.debug_info 0x00005aad 0x30 ./Core/Startup/startup_stm32f103c8tx.o
.debug_info 0x00005add 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
.debug_info 0x000061e1 0xc50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o
.debug_info 0x00006e31 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
.debug_info 0x000078b8 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
.debug_info 0x00007f8a 0x4f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
.debug_info 0x00008482 0x777 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
.debug_info 0x00008bf9 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
.debug_info 0x000091a4 0x16dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o
.debug_info 0x0000a880 0x6c3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o
.debug_info 0x0000af43 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.debug_info 0x0000b718 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
.debug_info 0x0000bad8 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
.debug_info 0x0000e431 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o
.debug_info 0x0000f8cc 0x2eed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o
.debug_info 0x000127b9 0x17ae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
.debug_info 0x00013f67 0x1043 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o
.debug_info 0x00014faa 0xa52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_info 0x000159fc 0x91c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_info 0x00016318 0x6a0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_info 0x000169b8 0x63d ./USB_DEVICE/App/usb_device.o
.debug_info 0x00016ff5 0x8c2 ./USB_DEVICE/App/usbd_cdc_if.o
.debug_info 0x000178b7 0x44a ./USB_DEVICE/App/usbd_desc.o
.debug_info 0x00017d01 0x1864 ./USB_DEVICE/Target/usbd_conf.o
.debug_info 0x00001494 0x743 ./Core/Src/eeprom.o
.debug_info 0x00001bd7 0x1a23 ./Core/Src/main.o
.debug_info 0x000035fa 0x9c0 ./Core/Src/pwm.o
.debug_info 0x00003fba 0xf58 ./Core/Src/stm32f1xx_hal_msp.o
.debug_info 0x00004f12 0x81d ./Core/Src/stm32f1xx_it.o
.debug_info 0x0000572f 0x168 ./Core/Src/sysmem.o
.debug_info 0x00005897 0x222 ./Core/Src/system_stm32f1xx.o
.debug_info 0x00005ab9 0x30 ./Core/Startup/startup_stm32f103c8tx.o
.debug_info 0x00005ae9 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
.debug_info 0x000061ed 0xc50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o
.debug_info 0x00006e3d 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
.debug_info 0x000078c4 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
.debug_info 0x00007f96 0x4f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
.debug_info 0x0000848e 0x777 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
.debug_info 0x00008c05 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
.debug_info 0x000091b0 0x16dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o
.debug_info 0x0000a88c 0x6c3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o
.debug_info 0x0000af4f 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.debug_info 0x0000b724 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
.debug_info 0x0000bae4 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
.debug_info 0x0000e43d 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o
.debug_info 0x0000f8d8 0x2eed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o
.debug_info 0x000127c5 0x17ae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
.debug_info 0x00013f73 0x1043 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o
.debug_info 0x00014fb6 0xa52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_info 0x00015a08 0x91c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_info 0x00016324 0x6a0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_info 0x000169c4 0x63d ./USB_DEVICE/App/usb_device.o
.debug_info 0x00017001 0x8c2 ./USB_DEVICE/App/usbd_cdc_if.o
.debug_info 0x000178c3 0x44a ./USB_DEVICE/App/usbd_desc.o
.debug_info 0x00017d0d 0x1864 ./USB_DEVICE/Target/usbd_conf.o
.debug_abbrev 0x00000000 0x4732
.debug_abbrev 0x00000000 0x473a
.debug_abbrev 0x00000000 0xeb ./Core/Src/adc.o
.debug_abbrev 0x000000eb 0x269 ./Core/Src/cdc_int.o
.debug_abbrev 0x00000354 0x199 ./Core/Src/debug.o
.debug_abbrev 0x000004ed 0x23a ./Core/Src/eeprom.o
.debug_abbrev 0x00000727 0x340 ./Core/Src/main.o
.debug_abbrev 0x00000a67 0x1f4 ./Core/Src/pwm.o
.debug_abbrev 0x00000c5b 0x274 ./Core/Src/stm32f1xx_hal_msp.o
.debug_abbrev 0x00000ecf 0x1b5 ./Core/Src/stm32f1xx_it.o
.debug_abbrev 0x00001084 0xbc ./Core/Src/sysmem.o
.debug_abbrev 0x00001140 0x13f ./Core/Src/system_stm32f1xx.o
.debug_abbrev 0x0000127f 0x24 ./Core/Startup/startup_stm32f103c8tx.o
.debug_abbrev 0x000012a3 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
.debug_abbrev 0x000014a4 0x225 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o
.debug_abbrev 0x000016c9 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
.debug_abbrev 0x000019c1 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
.debug_abbrev 0x00001bcc 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
.debug_abbrev 0x00001e1c 0x247 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
.debug_abbrev 0x00002063 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
.debug_abbrev 0x0000222d 0x2d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o
.debug_abbrev 0x00002503 0x189 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o
.debug_abbrev 0x0000268c 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.debug_abbrev 0x0000293f 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
.debug_abbrev 0x00002ac7 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
.debug_abbrev 0x00002d3e 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o
.debug_abbrev 0x00002fc0 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o
.debug_abbrev 0x000032b8 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
.debug_abbrev 0x00003496 0x2d3 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o
.debug_abbrev 0x00003769 0x24a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_abbrev 0x000039b3 0x26b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_abbrev 0x00003c1e 0x192 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_abbrev 0x00003db0 0x18d ./USB_DEVICE/App/usb_device.o
.debug_abbrev 0x00003f3d 0x2e0 ./USB_DEVICE/App/usbd_cdc_if.o
.debug_abbrev 0x0000421d 0x1ff ./USB_DEVICE/App/usbd_desc.o
.debug_abbrev 0x0000441c 0x316 ./USB_DEVICE/Target/usbd_conf.o
.debug_abbrev 0x000004ed 0x242 ./Core/Src/eeprom.o
.debug_abbrev 0x0000072f 0x340 ./Core/Src/main.o
.debug_abbrev 0x00000a6f 0x1f4 ./Core/Src/pwm.o
.debug_abbrev 0x00000c63 0x274 ./Core/Src/stm32f1xx_hal_msp.o
.debug_abbrev 0x00000ed7 0x1b5 ./Core/Src/stm32f1xx_it.o
.debug_abbrev 0x0000108c 0xbc ./Core/Src/sysmem.o
.debug_abbrev 0x00001148 0x13f ./Core/Src/system_stm32f1xx.o
.debug_abbrev 0x00001287 0x24 ./Core/Startup/startup_stm32f103c8tx.o
.debug_abbrev 0x000012ab 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
.debug_abbrev 0x000014ac 0x225 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o
.debug_abbrev 0x000016d1 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
.debug_abbrev 0x000019c9 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
.debug_abbrev 0x00001bd4 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
.debug_abbrev 0x00001e24 0x247 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
.debug_abbrev 0x0000206b 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
.debug_abbrev 0x00002235 0x2d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o
.debug_abbrev 0x0000250b 0x189 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o
.debug_abbrev 0x00002694 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.debug_abbrev 0x00002947 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
.debug_abbrev 0x00002acf 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
.debug_abbrev 0x00002d46 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o
.debug_abbrev 0x00002fc8 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o
.debug_abbrev 0x000032c0 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
.debug_abbrev 0x0000349e 0x2d3 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o
.debug_abbrev 0x00003771 0x24a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_abbrev 0x000039bb 0x26b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_abbrev 0x00003c26 0x192 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_abbrev 0x00003db8 0x18d ./USB_DEVICE/App/usb_device.o
.debug_abbrev 0x00003f45 0x2e0 ./USB_DEVICE/App/usbd_cdc_if.o
.debug_abbrev 0x00004225 0x1ff ./USB_DEVICE/App/usbd_desc.o
.debug_abbrev 0x00004424 0x316 ./USB_DEVICE/Target/usbd_conf.o
.debug_aranges 0x00000000 0x1648
.debug_aranges
@@ -6621,42 +6621,42 @@ LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
.debug_line 0x0001c891 0xb01 ./USB_DEVICE/App/usbd_desc.o
.debug_line 0x0001d392 0xe34 ./USB_DEVICE/Target/usbd_conf.o
.debug_str 0x00000000 0x95d23
.debug_str 0x00000000 0x95d23 ./Core/Src/adc.o
.debug_str 0x00000000 0x95d30
.debug_str 0x00000000 0x95d30 ./Core/Src/adc.o
0x8ab52 (size before relaxing)
.debug_str 0x00095d23 0x9029b ./Core/Src/cdc_int.o
.debug_str 0x00095d23 0x8eea7 ./Core/Src/debug.o
.debug_str 0x00095d23 0x8b126 ./Core/Src/eeprom.o
.debug_str 0x00095d23 0x9101f ./Core/Src/main.o
.debug_str 0x00095d23 0x8b781 ./Core/Src/pwm.o
.debug_str 0x00095d23 0x8b9ce ./Core/Src/stm32f1xx_hal_msp.o
.debug_str 0x00095d23 0x8b615 ./Core/Src/stm32f1xx_it.o
.debug_str 0x00095d23 0x7714 ./Core/Src/sysmem.o
.debug_str 0x00095d23 0x8ab75 ./Core/Src/system_stm32f1xx.o
.debug_str 0x00095d23 0x6e ./Core/Startup/startup_stm32f103c8tx.o
.debug_str 0x00095d23 0x8b2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
.debug_str 0x00095d23 0x8b259 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o
.debug_str 0x00095d23 0x8b1f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
.debug_str 0x00095d23 0x8af1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
.debug_str 0x00095d23 0x8ae50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
.debug_str 0x00095d23 0x8affe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
.debug_str 0x00095d23 0x8aefb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
.debug_str 0x00095d23 0x8b492 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o
.debug_str 0x00095d23 0x8aff4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o
.debug_str 0x00095d23 0x8afa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.debug_str 0x00095d23 0x8acf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
.debug_str 0x00095d23 0x8bfa6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
.debug_str 0x00095d23 0x8b7b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o
.debug_str 0x00095d23 0x8b615 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o
.debug_str 0x00095d23 0x8b046 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
.debug_str 0x00095d23 0x8fff4 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o
.debug_str 0x00095d23 0x8f924 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_str 0x00095d23 0x8f83e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_str 0x00095d23 0x8f76b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_str 0x00095d23 0x8faf6 ./USB_DEVICE/App/usb_device.o
.debug_str 0x00095d23 0x8fb6d ./USB_DEVICE/App/usbd_cdc_if.o
.debug_str 0x00095d23 0x8f6a7 ./USB_DEVICE/App/usbd_desc.o
.debug_str 0x00095d23 0x90581 ./USB_DEVICE/Target/usbd_conf.o
.debug_str 0x00095d30 0x902a8 ./Core/Src/cdc_int.o
.debug_str 0x00095d30 0x8eea7 ./Core/Src/debug.o
.debug_str 0x00095d30 0x8b133 ./Core/Src/eeprom.o
.debug_str 0x00095d30 0x9102c ./Core/Src/main.o
.debug_str 0x00095d30 0x8b781 ./Core/Src/pwm.o
.debug_str 0x00095d30 0x8b9ce ./Core/Src/stm32f1xx_hal_msp.o
.debug_str 0x00095d30 0x8b615 ./Core/Src/stm32f1xx_it.o
.debug_str 0x00095d30 0x7714 ./Core/Src/sysmem.o
.debug_str 0x00095d30 0x8ab75 ./Core/Src/system_stm32f1xx.o
.debug_str 0x00095d30 0x6e ./Core/Startup/startup_stm32f103c8tx.o
.debug_str 0x00095d30 0x8b2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
.debug_str 0x00095d30 0x8b259 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o
.debug_str 0x00095d30 0x8b1f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
.debug_str 0x00095d30 0x8af1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
.debug_str 0x00095d30 0x8ae50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
.debug_str 0x00095d30 0x8affe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
.debug_str 0x00095d30 0x8aefb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
.debug_str 0x00095d30 0x8b492 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o
.debug_str 0x00095d30 0x8aff4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o
.debug_str 0x00095d30 0x8afa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
.debug_str 0x00095d30 0x8acf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
.debug_str 0x00095d30 0x8bfa6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o
.debug_str 0x00095d30 0x8b7b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o
.debug_str 0x00095d30 0x8b615 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o
.debug_str 0x00095d30 0x8b046 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
.debug_str 0x00095d30 0x8fff4 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o
.debug_str 0x00095d30 0x8f924 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_str 0x00095d30 0x8f83e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_str 0x00095d30 0x8f76b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_str 0x00095d30 0x8faf6 ./USB_DEVICE/App/usb_device.o
.debug_str 0x00095d30 0x8fb6d ./USB_DEVICE/App/usbd_cdc_if.o
.debug_str 0x00095d30 0x8f6a7 ./USB_DEVICE/App/usbd_desc.o
.debug_str 0x00095d30 0x90581 ./USB_DEVICE/Target/usbd_conf.o
.comment 0x00000000 0x43
.comment 0x00000000 0x43 ./Core/Src/adc.o

View File

@@ -1,13 +1,13 @@
../Core/Src/eeprom.h:110:24:EEW_Read 1
../Core/Src/eeprom.c:99:17:EE_GetPageStatus 1
../Core/Src/eeprom.c:104:26:EE_FlashProgramHalfWord 1
../Core/Src/eeprom.c:115:26:EE_FlashErasePage 1
../Core/Src/eeprom.c:134:17:EE_FindFreeAddress 3
../Core/Src/eeprom.c:156:18:EE_FindInPage 6
../Core/Src/eeprom.c:196:18:EE_Format 4
../Core/Src/eeprom.c:214:17:EE_GetOtherPageBase 2
../Core/Src/eeprom.c:220:18:EE_PageTransfer 11
../Core/Src/eeprom.c:293:10:EE_Init 7
../Core/Src/eeprom.c:324:10:EE_ReadVariable 2
../Core/Src/eeprom.c:341:10:EE_WriteVariable 4
../Core/Src/eeprom.c:364:6:loadEE 1
../Core/Src/eeprom.c:140:17:EE_GetPageStatus 1
../Core/Src/eeprom.c:145:26:EE_FlashProgramHalfWord 1
../Core/Src/eeprom.c:156:26:EE_FlashErasePage 1
../Core/Src/eeprom.c:175:17:EE_FindFreeAddress 3
../Core/Src/eeprom.c:197:18:EE_FindInPage 6
../Core/Src/eeprom.c:237:18:EE_Format 4
../Core/Src/eeprom.c:255:17:EE_GetOtherPageBase 2
../Core/Src/eeprom.c:261:18:EE_PageTransfer 11
../Core/Src/eeprom.c:334:10:EE_Init 7
../Core/Src/eeprom.c:365:10:EE_ReadVariable 2
../Core/Src/eeprom.c:382:10:EE_WriteVariable 4
../Core/Src/eeprom.c:405:6:loadEE 1

View File

@@ -1,13 +1,13 @@
../Core/Src/eeprom.h:110:24:EEW_Read 16 static
../Core/Src/eeprom.c:99:17:EE_GetPageStatus 16 static
../Core/Src/eeprom.c:104:26:EE_FlashProgramHalfWord 32 static
../Core/Src/eeprom.c:115:26:EE_FlashErasePage 40 static
../Core/Src/eeprom.c:134:17:EE_FindFreeAddress 32 static
../Core/Src/eeprom.c:156:18:EE_FindInPage 40 static
../Core/Src/eeprom.c:196:18:EE_Format 8 static
../Core/Src/eeprom.c:214:17:EE_GetOtherPageBase 16 static
../Core/Src/eeprom.c:220:18:EE_PageTransfer 40 static
../Core/Src/eeprom.c:293:10:EE_Init 16 static
../Core/Src/eeprom.c:324:10:EE_ReadVariable 24 static
../Core/Src/eeprom.c:341:10:EE_WriteVariable 24 static
../Core/Src/eeprom.c:364:6:loadEE 8 static
../Core/Src/eeprom.c:140:17:EE_GetPageStatus 16 static
../Core/Src/eeprom.c:145:26:EE_FlashProgramHalfWord 32 static
../Core/Src/eeprom.c:156:26:EE_FlashErasePage 40 static
../Core/Src/eeprom.c:175:17:EE_FindFreeAddress 32 static
../Core/Src/eeprom.c:197:18:EE_FindInPage 40 static
../Core/Src/eeprom.c:237:18:EE_Format 8 static
../Core/Src/eeprom.c:255:17:EE_GetOtherPageBase 16 static
../Core/Src/eeprom.c:261:18:EE_PageTransfer 40 static
../Core/Src/eeprom.c:334:10:EE_Init 16 static
../Core/Src/eeprom.c:365:10:EE_ReadVariable 24 static
../Core/Src/eeprom.c:382:10:EE_WriteVariable 24 static
../Core/Src/eeprom.c:405:6:loadEE 8 static