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

 
 
> Проблема компиляции обработчика прерывания. (STM+GCC)
Real_Bastard
сообщение Nov 28 2012, 11:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 7-11-06
Из: Санкт-Петербург
Пользователь №: 22 041



Контроллер STM32L151 компилятор GCC (Sourcery G++).
Есть обработчик прерывания по таймеру.
CODE
// Обработчик прерывания TIM6_DAC
void TIM6_IRQHandler(void){
if (k==0){
k=1;
GPIO_SetBit(GPIOA,1);
} else {
GPIO_ResetBit(GPIOA,1);
k=0;
}
TIM6->SR &= ~TIM_SR_UIF; //Сбрасываем флаг UIF
}
Все отлично работает.
А вот если сброс флага вынести в отдельную функцию-начинаются проблемы.
CODE
// Обработчик прерывания TIM6_DAC
void clear_flag(void){
TIM6->SR &= ~TIM_SR_UIF; //Сбрасываем флаг UIF
}
void TIM6_IRQHandler(void){
if (k==0){
k=1;
GPIO_SetBit(GPIOA,1);
} else {
GPIO_ResetBit(GPIOA,1);
k=0;
}
clear_flag();
}

Флаг сбрасывается через раз. Естественно, зависит от оптимизации (при отключенной все хорошо).
тут у народа были похожие проблемы...
Прошу совета....

Сообщение отредактировал Real_Bastard - Nov 28 2012, 12:07
Go to the top of the page
 
+Quote Post



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

 


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


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