×

Внимание

Форум находится в режиме только для чтения.

эмуляция eeprom в stm32

11 года 6 мес. назад #4454 от super_puper
super_puper ответил в теме Re: эмуляция eeprom в stm32
там не не только умножается но и делиться пример позаимствовал тут же у Ягова Дениса
void rcc_config(void){// настройка частоты 
 RCC_ClocksTypeDef RCC_ClockFreq;

// Сбрасываем клокинг в "0"
  RCC_DeInit();

// Включаем внешний кварц
  RCC_HSEConfig(RCC_HSE_ON);

// Ждём пока устанавливается внешний ВЧ тактовый сигнал
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus != ERROR)
  {
    // Внешний тактовый сигнал появился, стабильный
    // разрешаем использование буфера команд
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    //
    // итак
    //Внешний кварц 25МГц
    //Тактовая частота ядра: 72МГц
    // частота шины PCLK2=72МГц
    // частота шины PCLK1=36МГц
    //

    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);
    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);
    /*  ADCCLK = PCLK2/4 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);

// Выставляем делители / множители частоты тактирования
    RCC_PREDIV2Config(RCC_PREDIV2_Div5);
    RCC_PLL2Config(RCC_PLL2Mul_8);

//Разрешаем PLL2
    RCC_PLL2Cmd(ENABLE);

// Ждём пока устаканится PLL2
    while (RCC_GetFlagStatus(RCC_FLAG_PLL2RDY) == RESET)
    {}

// PLL2 - устаканился    
// конфигурируем PLL1
    RCC_PREDIV1Config(RCC_PREDIV1_Source_PLL2, RCC_PREDIV1_Div5);
    RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_9);

// Разрешаем PLL
    RCC_PLLCmd(ENABLE);

// Ждём готовности PLL
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {}

// Выбираем PLL как источник тактирования системы
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

// Ждём пока PLL не станет клокингом системы
    while (RCC_GetSYSCLKSource() != 0x08)
    {}
  }

  RCC_GetClocksFreq(&RCC_ClockFreq);

// Тактирование портов АЦП и USB
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC |
                         RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO | RCC_APB2Periph_ADC1, ENABLE );

  // Выбираем тактирование для USB
  RCC_OTGFSCLKConfig(RCC_OTGFSCLKSource_PLLVCO_Div3);

  // Подключаем выбранное тактирование
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE) ;
}
11 года 6 мес. назад #4455 от LineAir
LineAir ответил в теме Re: эмуляция eeprom в stm32
Понятно, почему виснет не знаю(
11 года 6 мес. назад #4456 от k000858
k000858 ответил в теме Re: эмуляция eeprom в stm32
наверное, потому что перед работой с флэш памятью необходимо разблокировать интерфейс
FLASH_Unlock();
11 года 6 мес. назад #4457 от LineAir
LineAir ответил в теме Re: эмуляция eeprom в stm32
У super_puper разблокировка есть:
 FLASH->KEYR = FLASH_KEY1;
 FLASH->KEYR = FLASH_KEY2;
11 года 5 мес. назад #4461 от super_puper
super_puper ответил в теме Re: эмуляция eeprom в stm32
а где взять файлы eeprom.h и eeprom.c которые описываются в AN2594  Application note  EEPROM emulation  in STM32F10x microcontrollers
11 года 5 мес. назад #4465 от Денис Ягов
Денис Ягов ответил в теме Re: эмуляция eeprom в stm32
Пример эмуляции во вложении  8)
Время создания страницы: 0.037 секунд
Работает на Kunena форум