Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 18.11.2014, 22:32  
fox327
Временная регистрация
 
Регистрация: 19.08.2010
Сообщений: 94
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
fox327 на пути к лучшему
По умолчанию Прерывание по переполнению Т2

Здравствуйте. Наконец-то решил попробовать STM32. Лучше поздно,чем
никогда.Программка помигать светодиодом. Задержка с помощью таймера 2.
Почему-то не входит в прерывание по переполнению. Светодиод горит
постоянно. Кто может-объясните в чём ошибка. МК-STM32F100,
среда CooCox.

#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;

}
Реклама:
fox327 вне форума  
Непрочитано 19.11.2014, 06:52  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: прерывание по переполнению Т2

Сообщение от fox327 Посмотреть сообщение
Светодиод горит
постоянно. Кто может-объясните в чём ошибка. МК-STM32F100,
среда CooCox.
А период у таймера какой?
Bill вне форума  
Непрочитано 19.11.2014, 11:31  
fox327
Временная регистрация
 
Регистрация: 19.08.2010
Сообщений: 94
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
fox327 на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

Вроде бы 1000 миллисекунд
fox327 вне форума  
Непрочитано 19.11.2014, 11:43  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

Тогда
Цитата:
TIM_TimeInitStructure.TIM_Prescaler=8000;
должен быть 24000-1
omercury вне форума  
Непрочитано 19.11.2014, 17:37  
fox327
Временная регистрация
 
Регистрация: 19.08.2010
Сообщений: 94
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
fox327 на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

TIM_TimeInitStructure.TIM_Prescaler=23990;
Ничего не изменилось.
fox327 вне форума  
Непрочитано 19.11.2014, 23:10  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

Копайте свои структуры.
Всё работает.
PHP код:
void Timer2_init(void) {

  
RCC-›APB1ENR |= RCC_APB1ENR_TIM2EN;    //Тактирование Timer2
    
TIM2-›PSC 23999;                    //Настройка предделителя таймера
    
TIM2-›ARR 1000;                    //Загружаем число миллисекунд в регистр автоперезагрузки
    
TIM2-›DIER |= TIM_DIER_UIE;            //Разрешаем прерывание при переполнении счетчика
    
TIM2-›CR1 |= TIM_CR1_CEN;            //Запускаем счет

    
NVIC_SetPriority(TIM2_IRQn,1);
    
NVIC_EnableIRQ (TIM2_IRQn);

Миниатюры:
Нажмите на изображение для увеличения
Название: DSC_0392.JPG
Просмотров: 53
Размер:	262.3 Кб
ID:	71958  
omercury вне форума  
Непрочитано 20.11.2014, 00:12  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

Вариант нумер одЫн - проект в плюсах.

Да и код в первом посте оформите как положено ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 20.11.2014, 00:19  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

Сообщение от dosikus Посмотреть сообщение
Вариант нумер одЫн - проект в плюсах.
Весь main перед тобой (в первом посте), всё остальное в SPL.
omercury вне форума  
Непрочитано 20.11.2014, 00:23  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

omercury, Достаточно в менагере создать проект для С++ , и забыть обернуть хэндлеры прерываний. Хотя обычно плюсы выбирает от своей же тупости, так же как и кактус...

Ну и нумер два , хотя навряд ли, имя хэндлера с ошибкой или несуществующий...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 20.11.2014 в 00:25.
dosikus вне форума  
Непрочитано 20.11.2014, 01:09  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Прерывание по переполнению Т2

Какой-то глобальный осенний когнитивный диссонанс! Повсеместное несрабатывание прерываний и ошибки при передаче в УАРТ. "Весь мир сошёл с ума!"(С).
STM32F0 вне форума  
Сказали "Спасибо" STM32F0
dosikus (20.11.2014)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stm32 после старта TIM6 сразу прерывание kvark85 ARM 8 04.07.2013 11:22
Непонятное прерывание stm32 sosedi ARM 17 20.02.2013 22:38
Мега88 внешнее прерывание по низкому уровню E_C_C Proteus 0 06.09.2012 11:47
MEGA16 прерывания по переполнению TIMR1 tems-ya Proteus 3 01.04.2010 18:34
не обрабатывается прерывание от таймера во время АЦП rusakov_a Микроконтроллеры, АЦП, память и т.д 0 03.07.2008 01:33


Часовой пояс GMT +4, время: 09:06.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot