20.11.2014, 01:12
|
#11
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Прерывание по переполнению Т2
У меня поначалу ругалось на
Цитата:
|
TIM_TimeBaseInitTypeDef TIM_TimeInitStructure;
|
, пока от руки инит таймера не переписал. Перебирать 200 килобайт из SPL меня что-то сломало.
|
|
|
|
20.11.2014, 09:26
|
#12
|
Частый гость
Регистрация: 15.04.2008
Адрес: Йошкар-Ола
Сообщений: 39
Сказал спасибо: 47
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Прерывание по переполнению Т2
Сообщение от fox327
|
#include ‹stm32f10x.h›
#include ‹stm32f10x_conf.h›
#include ‹stm32f10x_rcc.h›
#include ‹stm32f10x_gpio.h›
#include ‹stm32f10x_tim.h›
int main(void)
{
RCC_DeInit();
RCC-›CFGR &= ~RCC_CFGR_PLLSRC; //Источником сигнала для PLL выбран HSI с делением на 2
RCC-›CR &= ~RCC_CR_PLLON; //Отключить генератор PLL
RCC-›CFGR &= ~RCC_CFGR_PLLMULL; //Очистить PLLMULL
RCC-›CFGR |= RCC_CFGR_PLLMULL6; //Коефициент умножения = 6
RCC-›CR |= RCC_CR_PLLON; //Включить генератор PLL
//Переключиться на тактирование от PLL
RCC-›CFGR &= ~RCC_CFGR_SW; //Очистка битов выбора источника тактового сигнала
RCC-›CFGR |= RCC_CFGR_SW_PLL; //Выбрать источником тактового сигнала PLL
while((RCC-›CFGR&RCC_CFGR_SWS)!=0x0 //Ожидание переключения на PLL
{}
GPIO_InitTypeDef GPIO_InitStructure ;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOB , &GPIO_InitStructure);
TIM_TimeBaseInitTypeDef TIM_TimeInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeInitStructure.TIM_Prescaler=8000;
TIM_TimeInitStructure.TIM_Period=1000;
TIM_TimeBaseInit(TIM2,&TIM_TimeInitStructure);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //прерывание по переполнению
TIM_Cmd(TIM2,ENABLE); //включение таймера
NVIC_SetPriority(TIM2_IRQn,1);
NVIC_EnableIRQ (TIM2_IRQn);
while(1)
{}
}
//прерывание по переполнению
void TIM2_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//очистка флага прерывания
GPIOB-›ODR^=GPIO_ODR_ODR1;
}
|
код рабочий, проверьте настройки проекта в кокосе
|
|
|
|
20.11.2014, 10:00
|
#13
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Прерывание по переполнению Т2
SPL, конечно, сильная вещь. У Вас написано следующее:
Код:
|
// Инициализация таймера меток времени
TIM3-›PSC = (APB1FCLK*2/1000000)-1; // Прескалер APB1FCLK МГц / 1000000 = 1 МГц = 1 мкс
TIM3-›ARR = 1000-1; // Прерывания 1 мс
TIM3-›DIER = TIM_DIER_UIE; // Разрешить прерывание 1 мс
TIM3-›CR1 = TIM_CR1_CEN | TIM_CR1_ARPE; // Включить таймер с перезагрузкой |
В прерывании примерно следующее
Код:
|
void TIM3_IRQHandler(void)
{
int32_t tblink;
TIM3-›SR = 0; // Сбросить все флаги
...
} |
|
|
|
|
20.11.2014, 10:01
|
#14
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,032
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Прерывание по переполнению Т2
Сообщение от fox327
|
Почему-то не входит в прерывание по переполнению. Светодиод горит
постоянно. Кто может-объясните в чём ошибка. МК-STM32F100,
среда CooCox.
}
|
Я не увидел глобального разрешения прерываний в вашей программе.
__enable_irq ();
|
|
|
Сказали "Спасибо" dgrishin
|
|
|
20.11.2014, 11:35
|
#15
|
Временная регистрация
Регистрация: 19.08.2010
Сообщений: 94
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
|
Re: Прерывание по переполнению Т2
__enable_irq ();-всё заработало. Самому приходила мысль о том, что ,наверное,
должно быть глобальное разрешение прерываний, но нигде прочитать об этом
не удалось. Всем спасибо.
|
|
|
|
20.11.2014, 22:32
|
#16
|
Временная регистрация
Регистрация: 19.08.2010
Сообщений: 94
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
|
Re: Прерывание по переполнению Т2
Рано радовался. Заработало С таймером 7 и 6 и без _enable irq().
А с таймером 2-и с _enable irq().-нет.
|
|
|
|
20.11.2014, 22:40
|
#17
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Прерывание по переполнению Т2
Сообщение от dgrishin
|
Я не увидел глобального разрешения прерываний в вашей программе.
__enable_irq ();
|
Позвольте узнать - вы веткой с AVR не спутали ?????
__________________
Осторожно , злой кот
|
|
|
|
20.11.2014, 22:41
|
#18
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Прерывание по переполнению Т2
Сообщение от fox327
|
А с таймером 2-и с _enable irq().-нет.
|
STM32VL дискавери ?
__________________
Осторожно , злой кот
|
|
|
|
20.11.2014, 22:43
|
#19
|
Временная регистрация
Регистрация: 19.08.2010
Сообщений: 94
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
|
Re: Прерывание по переполнению Т2
Нет, просто самопальная плата с МК.
|
|
|
|
20.11.2014, 22:51
|
#20
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Прерывание по переполнению Т2
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:46.
|
|