User Tag List

Показано с 1 по 10 из 280

Тема: Микроконтроллеры STM32, "с нуля".

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, вроде как разобрался с тактированием.
    По дефолту МК стартует с MSI-генератором, 2МГц.
    Этот режим включен в дефолтном system_stm32l1xx.c
    Это не всегда есть гуд, и мы можем переключиться на высокую частоту, пересобрав этот файлик под свои нужды, или применив команды настройки тактирования.
    Я поигрался с параметрами, запускал разные источники клока, менял коэффициенты делителей, менял делитель системного таймера...
    Собственно, мы запускаем нужный генератор, к примеру HSI (16Мгц)
    RCC->CR |= ((uint32_t)RCC_CR_HSION);
    Ждем, пока он стабилизуется -
    while ((RCC->CR & RCC_CR_HSIRDY) == 0);
    Подаем повышенное напряжение (1.8В) на цепи тактирования, дабы работала бОльшая частота -
    PWR->CR = PWR_CR_VOS_0;
    Ждем, пока оно устаканится -
    while((PWR->CSR & PWR_CSR_VOSF) != 0);
    Устанавливаем AHB-делитель в режим "не делить частоту", т.е. делитель равен 1 -
    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
    Устанавливаем делители на периферию с нужными коэффициентами, или вообще 1 -
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1;
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
    Сообщаем системе, что "Хачу HSI! Дай, да?" -
    RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_HSI;
    Ну и ждем, пока электронная буря от переключения успокоится... -
    while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI);
    Система к работе готова...
    Да, еще не мешало бы выставить системный таймер, вдруг пригодится -
    SysTick_Config(16000);
    Здесь 16000 - сколько тиков клока считать до отработки таймера. Поскольку мы только что установили системную частоту в 16000000 герц, то после установки таймера он будет срабатывать каждую миллисекунду. Подсчитывая эти "тики", легко строится функция задержки Delay, столь любимая упоротыми фанатами CodeVisionAVR
    Код:
    void SysTick_Handler(void) {    //хендлер, "ловящий" тики системного таймера
      msTicks++;
    }
    
    void Delay (uint32_t dlyTicks) {                                              
      uint32_t curTicks;
    
      curTicks = msTicks;
      while ((msTicks - curTicks) < dlyTicks);   // собственно, ждем dlyTicks тиков таймера
    }
    Воть, что я вынес из этой темы.
    Если есть неправильности - с благодарностью приму затрещины от гуру
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Если есть неправильности - с благодарностью приму затрещины от гуру
    Если ты имеешь в виду меня - то сам ты гуру .
    Я так же учусь/постигаю , и без меня гур хватает.

    А по делу - настройка тактирования весьма гибкая и тактирование во время работы можно менять и менять как нужно.
    И для уменьшения жручести и наоборот для скорострельности .
    Последний раз редактировалось dosikus; 28.04.2014 в 14:17.
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 19
    Последнее: 30.09.2011, 03:08
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Ответов: 18
    Последнее: 27.08.2008, 20:27
  5. Ответов: 6
    Последнее: 20.11.2007, 11:29

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •