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

 
 
> Прерывания в С++, Не работают...
afad
сообщение Feb 16 2011, 11:50
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 26-08-04
Пользователь №: 545



Необходимо вставить в свой проект программу, написанную на C++. Раньше никогда не сталкивался с С++, всегда писал на С. Пытаюсь запустить простейшую программу - виснет в прерываниях. Вот текст:
Код
#include "lpc17xx.h"

int main(void)
{SystemInit();

GPIO0 -> FIODIR = 1<<24 | 1<<25; //P0.24, P0.25 - выходы

TIM1 -> MR0 = 18000000/100 - 1; //Period = 10 ms
TIM1 -> MCR = 3;                //Interrupt and Reset on MR1
NVIC_EnableIRQ(TIMER1_IRQn);
TIM1 -> TCR = 1;                //Timer 1 enable

while(1)
  {
   if((GPIO0->FIOPIN)&(1<<24)){GPIO0->FIOCLR=1<<24;} //Инвертируем P0.24
                          else{GPIO0->FIOSET=1<<24;}
  }
}

void TIMER1_IRQHandler(void)
{TIM1 -> IR = 1;  //Clear interrupt flag

   if((GPIO0->FIOPIN)&(1<<25)){GPIO0->FIOCLR=1<<25;} //Инвертируем Р0.25
                          else{GPIO0->FIOSET=1<<25;}
}
В программе на выводе P0.24 - меандр в основном цикле, на выводе P0.25 - меандр из программы прерываний - период 20 мс.
Если файл называется main.c (значит проект на C), все работает rolleyes.gif
Если этот же файл переименовать в main.cpp (проект на С++), работает до первого прерывания (10 мс), потом виснет crying.gif Т.е. на выводе P0.24 импульсы в течении 10 мс, потом видимо наступает прерывание и импульсы пропадают.
Может как-то нужно изменить синтаксис, все же в С++ есть отличия от С?
Среда программирования - Keil, микроконтроллер LPC1768.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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