Easyelectronics.ru

Электроника для всех
Текущее время: 16 апр 2021, 04:21

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: STM32 - прерывания.
СообщениеДобавлено: 18 мар 2011, 11:45 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Помогите разобраться как работать с прерываниями по таймеру.
Cреда - Keil.
Приведенный ниже код работать не хочет, не могу понять ошибку.


#include "stm32F10x.h"
int main(void)
{
SystemInit();
InitLed();

//Разрешить прохождение сигнала к таймеру Т17
RCC->APB2ENR |= RCC_APB2ENR_TIM17EN;

//Настроить предделитель
TIM17->PSC = 1000 - 1;

//Максимальное значение до которого будет считать таймер
TIM17->ARR = 8 - 1;

//Разрешить генерацию события по достижению макс. значения
TIM17->DIER |= TIM_DIER_UIE;

//разрешить работу таймера и его сброс по достижению макс. значения
TIM17->CR1 = TIM_CR1_CEN | TIM_CR1_ARPE;

//установить приоритет и разрешить прерывания
NVIC_SetPriority(TIM1_TRG_COM_TIM17_IRQn, 15);
NVIC_EnableIRQ(TIM1_TRG_COM_TIM17_IRQn);

while(1) {};
}


//**************************************************
// обработчик прерывания //
//**************************************************
u32 test_count;
__irq void TIMER17_IRQHandler(void)
{
if (TIM17->SR & TIM_SR_UIF)
{
TIM17->SR &= ~TIM_SR_UIF;
//управление светодиодом
if (test_count == 0) Led(1,0);
if (test_count == 1000) Led(1,1);
if (++test_count >2000) test_count = 0;
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 - прерывания.
СообщениеДобавлено: 18 мар 2011, 12:22 
Старожил
Аватара пользователя

Зарегистрирован: 11 мар 2010, 12:44
Сообщения: 1166
Откуда: Default city
Потому, что не сконфигурирован NVIC.
Не знаю, как это делают в кайле, в GCC это
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_####);

_________________
Не дай Бог увидеть нубский ЛУТ, бессмысленный и беспощадный
В МК "на порядок" - это "в два раза"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 - прерывания.
СообщениеДобавлено: 18 мар 2011, 12:43 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
dekar писал(а):
Потому, что не сконфигурирован NVIC.

А это не оно?
NVIC_SetPriority(TIM1_TRG_COM_TIM17_IRQn, 15)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 - прерывания.
СообщениеДобавлено: 18 мар 2011, 17:29 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Изменил название ф-ии обрабатывающей прерывание
на void TIM1_TRG_COM_TIM17_IRQHandler() и все заработало


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 - прерывания.
СообщениеДобавлено: 18 мар 2011, 17:30 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Может кто подскажет как определять названия этих функций?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 - прерывания.
СообщениеДобавлено: 18 мар 2011, 17:32 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Вроде понял как определять имя ф-ии обработчика прерывания.
Нужно открыть файл startup_stm32f10x_md_vl.
В нем указан список векторов прерываний.
Название ф-ии обработчика прерывания должно совпадать с именем соответствующего вектора.
Если не так - поправьте.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB