Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переход на F4discovery
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Legath
Пытаюсь запустить пример моргалки светодиодом (который работает на vl) , высчитал таймер чтобы прерывание было раз в секунду, на деле получаюраз в 4 секунды. подскажите где ошибся, под конец дня похоже не замечаю.
Таймер тактируется 84МГЦ если судить по примеру из либы.
CODE
void test_init(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
GPIO_SetBits(GPIOD, GPIO_Pin_12);

TIM_TimeBaseInitTypeDef tim1_init;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_DeInit(TIM2);
tim1_init.TIM_Prescaler=1399;
tim1_init.TIM_Period=60000;
tim1_init.TIM_ClockDivision=0;
tim1_init.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2,&tim1_init);
TIM_ARRPreloadConfig(TIM2,ENABLE);
TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);


NVIC_InitTypeDef InitTimIrq;
InitTimIrq.NVIC_IRQChannel=TIM2_IRQn;
InitTimIrq.NVIC_IRQChannelPreemptionPriority=1;
InitTimIrq.NVIC_IRQChannelSubPriority=1;
InitTimIrq.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&InitTimIrq);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2,ENABLE);


}
KnightIgor
Цитата(Legath @ May 18 2012, 14:35) *
Пытаюсь запустить пример моргалки светодиодом (который работает на vl) , высчитал таймер чтобы прерывание было раз в секунду, на деле получаюраз в 4 секунды. подскажите где ошибся, под конец дня похоже не замечаю.
Таймер тактируется 84МГЦ если судить по примеру из либы.

Видать, ядро на 1/4 частоты работает. Где-то символ частоты для связки проц-кварц неправильно определен, в результате чего PLL неверно настроилась. Глянуть system_smt32f***.c надо.
Legath
Из шаблона библиотеки

Добавлено: Кажется разобрался. ОС перебивает значения и там есть такой коммент Maximum allowed frequency of the low-speed APB1 domain is 30MHz.
То есть у меня максимально не 84, а 60.

Ан, нет. все таки не верно
kan35
Для F4 частота APB1 42МГц максимум.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.