Сообщение от sdsrem
|
Кто может разьяснить, почему программа (для светодиода) работает по разному.
Если компелировать в Keil то светодиод моргает раза в три четыре быстрей, но ежели в LPCXpresso то гораздо медленее.
|
А что, варианты программы скомпилированные разными компиляторами должны совпадать?
Очевидно, что код, сгенерированный Keil-ом работает в несколько раз быстрее (при прочих равных условиях).
Проверьте настройки оптимизации у компиляторов.
А лучше переделайте программу так, чтобы задержка формировалась от надёжного источника частоты. Например, используйте прерывание/флаг срабатывания какаго-либо таймера или перенесите алгоритм в прерывание:
Код:
|
unsigned short MillisecondCounter;
void SysTick_Handler(void)
{
MillisecondCounter++;
switch (MillisecondCounter) {
case 0:
led_1;
break;
case 50:
led_0
break;
case 100:
led_1
break;
case 150:
led_0
break;
case 200:
led_1
break;
case 250:
led_0
break;
case 300:
led_0
break;
case 800:
led_1;
MillisecondCounter=0;
break;
}
}
int main (void) {
/* Basic chip initialization is taken care of in SystemInit() called
* from the startup code. SystemInit() and chip settings are defined
* in the CMSIS system_‹part family›.c file.
*/
/* Called for system library in core_cmx.h(x=0 or 3). */
SysTick_Config( SystemCoreClock/1000);
/* Set port 0_7 - LED2 on LPCXpresso board to output */
SetGPIOOut( LED_PORT, LED_BIT );
while (1) {
}
} |