Миландр
http://forum.milandr.ru/

Может кто-нибудь помочь с кодом инициализации таймера?
http://forum.milandr.ru/viewtopic.php?f=17&t=3836
Страница 1 из 1

Автор:  st256 [ 2018-фев-26 21:20 ]
Заголовок сообщения:  Может кто-нибудь помочь с кодом инициализации таймера?

Для режима симуляции. Желательно, на ASM. А то что-то не получается с налету.
Спасибо.

Автор:  Vasiliy [ 2018-фев-28 17:42 ]
Заголовок сообщения:  Re: Может кто-нибудь помочь с кодом инициализации таймера?

В листинге пример инициализации таймера из нашего учебного курса. Если скомпилировать, то из дизассемблера затем можно взять ассемблерный код.

Открыть
Код:

void TMR_Initialize (void)
{
  TIMER_CntInitTypeDef TimerInitStruct;

  RST_CLK_PCLKcmd (RST_CLK_PCLK_TIMER1, ENABLE);

  // Деинициализация таймера TIMER1
  TIMER_DeInit (MDR_TIMER1);

  // Выбор предделителя тактовой частоты таймера TIMER1
  TIMER_BRGInit (MDR_TIMER1, TIMER_HCLKdiv1);

  // Конфигурация таймера TIMER1
  TIMER_CntStructInit (&TimerInitStruct);
  TimerInitStruct.TIMER_IniCounter       = 0;                          // Начальное значение таймера
  TimerInitStruct.TIMER_Prescaler        = 0xFFFF;                     // Предделитель частоты
  TimerInitStruct.TIMER_Period           = 0x4C4;                      // Период таймера
  TimerInitStruct.TIMER_CounterMode      = TIMER_CntMode_ClkFixedDir;  // Режим счета
  TimerInitStruct.TIMER_CounterDirection = TIMER_CntDir_Up;            // Направление счета

// Инициализация таймера TIMER1
  TIMER_CntInit (MDR_TIMER1, &TimerInitStruct);

  // Выбор источников прерываний
  TIMER_ITConfig (MDR_TIMER1, TIMER_STATUS_CNT_ARR, ENABLE);

  // Включение таймера TIMER1
  TIMER_Cmd (MDR_TIMER1, ENABLE);

  // Назначение приоритета аппаратных прерываний от таймера TIMER1
  NVIC_SetPriority (Timer1_IRQn, 1);

  // Включение аппаратных прерываний от таймера TIMER1
  NVIC_EnableIRQ (Timer1_IRQn);
}

// Обработчик аппаратных прерываний от таймера TIMER1
void Timer1_IRQHandler (void)
{
  // Сброс прерывания от таймера TIMER1
  TIMER_ClearITPendingBit (MDR_TIMER1, TIMER_STATUS_CNT_ARR);

  // Do something

}

Закрыть


Про симулятор не понял. Наша периферия в симуляторе не работает, нет ее там. Cимулировать можно поведение стандартного ядра Cortex Mx.

Автор:  st256 [ 2018-мар-01 17:48 ]
Заголовок сообщения:  Re: Может кто-нибудь помочь с кодом инициализации таймера?

Спасибо!

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/