Size: a a a

2021 March 16

h

hold3r in Embedded Group
Evgen
что порекомендуете про M0 почитать
чтоб быть в курсе таких кляузов
Писать код, без этого просто чтенье не поможет )
источник

LZ

Leonid Zaliubovskii in Embedded Group
hold3r
Писать код, без этого просто чтенье не поможет )
одно второму не мешает.
источник

E

Evgen in Embedded Group
hold3r
Писать код, без этого просто чтенье не поможет )
ну очистил страницу, записал 10 байт, и по кругу )
когда команда прилетает
источник

LZ

Leonid Zaliubovskii in Embedded Group
эта книжка дает базис
источник

A

Aleksej_Radio in Embedded Group
Andrey Spirin
пиздосики
там много схем
источник

AK

Andrew K in Embedded Group
а я нихрена не понял, ну отложились прерывания, разрешили их и погнала обработка
источник

LZ

Leonid Zaliubovskii in Embedded Group
Evgen
ну очистил страницу, записал 10 байт, и по кругу )
когда команда прилетает
а зачем чистить после 10 байт?
источник

LZ

Leonid Zaliubovskii in Embedded Group
можно же писать, пока не заполнишь страницу. Если запись фиксированная - то просто ищешь последнее значение и пишеш после него
источник

LZ

Leonid Zaliubovskii in Embedded Group
или всегда нужно в одно и тоже место хранить?
источник

h

hold3r in Embedded Group
Evgen
ну очистил страницу, записал 10 байт, и по кругу )
когда команда прилетает
А можно строчку  записи посмотреть?))
источник

E

Evgen in Embedded Group
Leonid Zaliubovskii
можно же писать, пока не заполнишь страницу. Если запись фиксированная - то просто ищешь последнее значение и пишеш после него
да есть такой алгоритм
просто памяти прям в тютельку и остается буквально байты, чтоб не вылезти на эту 16 страницу и навернуть
поэтому сделал грубо говоря гвоздями
источник

E

Evgen in Embedded Group
hold3r
А можно строчку  записи посмотреть?))
как запись происходит?
источник

E

Evgen in Embedded Group
hold3r
А можно строчку  записи посмотреть?))
void FLASH_Write(uint32_t Address, uint16_t Data)
{

 FLASH->CR |= FLASH_CR_PG; //Разрешаем программирование флеша
 while ((FLASH->SR&FLASH_SR_BSY)); //Ожидаем готовности флеша к записи
 *(__IO uint16_t*)Address = Data; //Пишем младшие 2 бата
 while ((FLASH->SR&FLASH_SR_BSY)); //Ожидаем окончания записи во флеш
 while (!(FLASH->SR & FLASH_SR_EOP));
 FLASH->SR = FLASH_SR_EOP;

 FLASH->CR &= ~(FLASH_CR_PG); //Запрещаем программирование флеша
}
источник

h

hold3r in Embedded Group
Evgen
void FLASH_Write(uint32_t Address, uint16_t Data)
{

 FLASH->CR |= FLASH_CR_PG; //Разрешаем программирование флеша
 while ((FLASH->SR&FLASH_SR_BSY)); //Ожидаем готовности флеша к записи
 *(__IO uint16_t*)Address = Data; //Пишем младшие 2 бата
 while ((FLASH->SR&FLASH_SR_BSY)); //Ожидаем окончания записи во флеш
 while (!(FLASH->SR & FLASH_SR_EOP));
 FLASH->SR = FLASH_SR_EOP;

 FLASH->CR &= ~(FLASH_CR_PG); //Запрещаем программирование флеша
}
Это функция, а непосредственно запись с использованием этой функции?
источник

E

Evgen in Embedded Group
hold3r
Это функция, а непосредственно запись с использованием этой функции?
void FlashWriteParams(uint8_t Address, float Cref, float ConstDelta)
{

 memcpy(&byte[0],&ConstDelta,4);
 parametrs[0]=(uint16_t)Address;
 parametrs[1]=((byte[2]&0xFF)|((byte[3]&0xFF)<<8));
 parametrs[2]=((byte[0]&0xFF)|((byte[1]&0xFF)<<8));
 parametrs[3]=(uint16_t)(Cref*1000);

 FLASH_Unlock();


 FlashErase(0x8003C00);
 FLASH_Write(0x8003C00, parametrs[0]);

 FLASH_Write(0x8003C10, parametrs[1]);

 FLASH_Write(0x8003C20, parametrs[2]);

 FLASH_Write(0x8003C30, parametrs[3]);

 FLASH_Lock();
}

                  Адреса разбросаны, знаю
источник

h

hold3r in Embedded Group
Evgen
void FlashWriteParams(uint8_t Address, float Cref, float ConstDelta)
{

 memcpy(&byte[0],&ConstDelta,4);
 parametrs[0]=(uint16_t)Address;
 parametrs[1]=((byte[2]&0xFF)|((byte[3]&0xFF)<<8));
 parametrs[2]=((byte[0]&0xFF)|((byte[1]&0xFF)<<8));
 parametrs[3]=(uint16_t)(Cref*1000);

 FLASH_Unlock();


 FlashErase(0x8003C00);
 FLASH_Write(0x8003C00, parametrs[0]);

 FLASH_Write(0x8003C10, parametrs[1]);

 FLASH_Write(0x8003C20, parametrs[2]);

 FLASH_Write(0x8003C30, parametrs[3]);

 FLASH_Lock();
}

                  Адреса разбросаны, знаю
Во, спасибо. Леонид возможно как то прокоментирует, а я спать )
источник

LZ

Leonid Zaliubovskii in Embedded Group
float можно в union объединить с uint32_t и писать сразу. Единственное, сча по этому времени я уже не помню можно ли дворд писать. Вроде как да. Это не нужно будет тут с флагами играться
источник

E

Evgen in Embedded Group
Leonid Zaliubovskii
float можно в union объединить с uint32_t и писать сразу. Единственное, сча по этому времени я уже не помню можно ли дворд писать. Вроде как да. Это не нужно будет тут с флагами играться
он пишет только по 2 байта за раз
источник

LZ

Leonid Zaliubovskii in Embedded Group
ок, сделай массив из двух uint16_t
источник

LZ

Leonid Zaliubovskii in Embedded Group
проще будет
источник