afad 0 16 февраля, 2011 Опубликовано 16 февраля, 2011 · Жалоба Необходимо вставить в свой проект программу, написанную на 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 16 февраля, 2011 Опубликовано 16 февраля, 2011 · Жалоба напишите extern "C" void TIMER1_IRQHandler(void) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 16 февраля, 2011 Опубликовано 16 февраля, 2011 · Жалоба Необходимо вставить в свой проект программу, написанную на C++. Раньше никогда не сталкивался с С++, всегда писал на С. Пытаюсь запустить простейшую программу - виснет в прерываниях. Вот текст: extern "C" { ... описание функции и собственно она сама ... } не помогает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
afad 0 16 февраля, 2011 Опубликовано 16 февраля, 2011 · Жалоба Шайтан, заработало! Спасибо AHTOXA! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться