реклама на сайте
подробности

 
 
> Переход на F4discovery, не пойму в чем грабли
Legath
сообщение May 18 2012, 12:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Пытаюсь запустить пример моргалки светодиодом (который работает на 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);


}


Сообщение отредактировал IgorKossak - May 18 2012, 13:38
Причина редактирования: [codebox] для длинного кода!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KnightIgor
сообщение May 18 2012, 13:12
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



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

Видать, ядро на 1/4 частоты работает. Где-то символ частоты для связки проц-кварц неправильно определен, в результате чего PLL неверно настроилась. Глянуть system_smt32f***.c надо.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01297 секунд с 7
ELECTRONIX ©2004-2016