Перейти к содержанию
    

Прерывания в С++

Необходимо вставить в свой проект программу, написанную на 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:

Если этот же файл переименовать в main.cpp (проект на С++), работает до первого прерывания (10 мс), потом виснет :crying: Т.е. на выводе P0.24 импульсы в течении 10 мс, потом видимо наступает прерывание и импульсы пропадают.

Может как-то нужно изменить синтаксис, все же в С++ есть отличия от С?

Среда программирования - Keil, микроконтроллер LPC1768.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

extern "C" { ... описание функции и собственно она сама ... } не помогает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...