2015-05-08 11 views
1

Теперь я разрабатываю свой собственный порт для PIC32, и мне нужно использовать библиотеку libpic30.h. Я читал об этом и искал одну и ту же библиотеку для PIC32 (стартовый комплект III PIC32MX450/470 MCU), и я думаю, что этого не существует. Это верно? Если это замечательно!Использование libpic30.h с PIC32

код libpic30.h: https://code.google.com/p/uavfirmware/source/browse/UAVFirmware/include/libpic30.h?r=1db3ec8e9015efb837b0d684c98204317ea2efd5

В этом случае libpic30.h не comptabible с PIC32 правом? Я не знаю, очень хорошо, как лучший способ сделать этот порт в этом случае? ... Я очень потерян!

Спасибо за знание! ;)

+1

Действительно. «30» там относится к серии pic30, первой из 16-разрядных. Но этот вопрос является способом общего, так как этот заголовок представляет собой смесь всех видов вещей. Некоторые могут иметь прямые эквиваленты, некоторые - нет. Что вы точно используете из этого заголовка? –

+0

__delay32 называть самое главное. – vincenzorochetta

+0

@MarcovandeVoort Я нашел ваш комментарий, выполнив поиск о том, почему я использую библиотеку для dsPIC33, которую я использую, называется pic30 - теперь это имеет смысл! После того, как вы нашли свой комментарий, я попытался найти в Интернете pic30 и не могу найти ничего, это древний чип? – w1res

ответ

1

Да, сначала вы не можете использовать libpic30.h. Компилятор не должен позволять вам легко использовать его. Вы захотите использовать xc.h и проделать это для своего подходящего устройства PIC32. Я не уверен, где находится функция задержки, но там есть где-то там, где вы хотите. Если вы не можете его найти. Посмотрите в Tick.c для устаревших библиотек TCP/IP, там есть письменная задержка для 32-разрядных устройств.

void SSTDelay10us(U32 tenMicroSecondCounter) 
{ 
    volatile S32 cyclesRequiredForEntireDelay; 
    int clock; 
    clock = 80000000; 

    if (clock <= 500000) //for all FCY speeds under 500KHz (FOSC <= 1MHz) 
    { 
     //10 cycles burned through this path (includes return to caller). 
     //For FOSC == 1MHZ, it takes 5us. 
     //For FOSC == 4MHZ, it takes 0.5us 
     //For FOSC == 8MHZ, it takes 0.25us. 
     //For FOSC == 10MHZ, it takes 0.2us. 
    } 
    else 
    { 
     //7 cycles burned to this point. 
     //We want to pre-calculate number of cycles required to delay 10us * 
     // tenMicroSecondCounter using a 1 cycle granule. 
     cyclesRequiredForEntireDelay = (S32)(clock/100000) * tenMicroSecondCounter; 
     //We subtract all the cycles used up until we reach the 
     //while loop below, where each loop cycle count is subtracted. 
     //Also we subtract the 5 cycle function return. 
     cyclesRequiredForEntireDelay -= 24; //(19 + 5) 
     if (cyclesRequiredForEntireDelay <= 0) 
     { 
      // If we have exceeded the cycle count already, bail! 
     } 
     else 
     { 
      while (cyclesRequiredForEntireDelay > 0) //19 cycles used to this point. 
      { 
       cyclesRequiredForEntireDelay -= 8; //Subtract cycles burned while doing each delay stage, 8 in this case. 
      } 
     } 
    } 

}

+0

Привет, blsmit5728, я попытался найти функцию задержки в Tick.c, но ее не существует. Какой у вас файл? – vincenzorochetta

 Смежные вопросы

  • Нет связанных вопросов^_^