Guten Morgen!
Ich arbeite mit dem STM32F103VDT6 und dem uVision von Keil.
Ich habe festgestellt, dass meine Funktion die Daten ins Flash speichert
doch nicht ganz funktioniert.
So sieht mein Struct aus:
1 | typedef struct {
|
2 | uint8_t CntCal;
|
3 | int ShttrueIdx[CNTSHT];
|
4 | uint8_t Nmbr_of_Shttr;
|
5 | uint8_t Nmbr_of_ShttrPart;
|
6 | uint8_t CntsofWings;
|
7 | int MotDir;
|
8 | int MotDistCntVal;
|
9 | int MotDistCal_PulsesMax;
|
10 | int MotDistShttrPoints[6];
|
11 | BOOL cal_OK;
|
12 | }
|
13 | tSetup2;
|
BOOL ist als unsigned int definiert!
So sieht meine Funktion aus:
1 | void set_in_Flash(tSetup2 *setup)
|
2 | {
|
3 | uint32_t *pData = (uint32_t *)setup;
|
4 | uint8_t i;
|
5 | int x = (sizeof(tSetup2) / sizeof(int));
|
6 |
|
7 | FLASH_Unlock();
|
8 | FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
|
9 | FLASH_ErasePage(FLSHBSEADRPG192);
|
10 | for(i=0;i<x;i++)
|
11 | {
|
12 | FLASH_ProgramWord(FLSHBSEADRPG192 + i*sizeof(uint32_t), pData[i]);
|
13 | }
|
14 | FLASH_Lock();
|
15 |
|
16 | }
|
Kann mir jemand diese Zeile erklären?:
1 | FLASH_ProgramWord(FLSHBSEADRPG192 + i*sizeof(uint32_t), pData[i]);
|
Warum pData[i] und nicht pData? bzw. pData ist ja ein Pointer der auf
die Adresse von setup zeigt.
Ich wüsste im Moment nicht, wo der Fehler sonst noch sein könnte?!
Vielen Dank und Grüsse
M.B.