Size: a a a

2020 September 16

R

Roman Shepilov in Embedded Group
Anton Kirilenko
зато удобно и быстро писать ПО %)
На счет "удобно" я бы поспорил )
источник

СС

Сиие Сууие in Embedded Group
Nikita Nazarenko
А что, компиляторы это не инлайнят нормально?
Да инлайнят наверн, просто смысл этих оберток над обертками
источник

AK

Anton Kirilenko in Embedded Group
Roman Shepilov
На счет "удобно" я бы поспорил )
это с их точки зрения. тем более пипл же хавает.
источник

СС

Сиие Сууие in Embedded Group
Особенно забавно когда на верхнем уровне оно просит 4 параметра, потом ряд обнрток и уже остаётся только два
источник

СС

Сиие Сууие in Embedded Group
вот вам пример функции среднего уровня
PLIB_INT_SourceFlagClear(INT_ID_0, INT_SOURCE_EXTERNAL_2);

дальше обёртка а вот функция нижнего уровня
PLIB_TEMPLATE void INT_SourceFlagClear_Default( INT_MODULE_ID index , INT_SOURCE source )
{
   volatile uint32_t *IFSx = (volatile uint32_t *) (&IFS0 + ((0x10 * (source / 32)) / 4));
   volatile uint32_t *IFSxCLR = (volatile uint32_t *)(IFSx + 1);

   *IFSxCLR = 1 << (source & 0x1f);
}
источник

СС

Сиие Сууие in Embedded Group
что такое INT_MODULE_ID index , и где он используется НЕПОНЯТНО
источник

СС

Сиие Сууие in Embedded Group
может это конечно под каким-то другим камнев внутри другая функция где оно используется, но что-то я сомневаюсь
источник

СС

Сиие Сууие in Embedded Group
еще перл:
    /* Setup the channel modes */
   /* Basic mode, nothing specifically needs to be set */
   if(SYS_DMA_CHANNEL_OP_MODE_BASIC & modeEnable)
   {
       /* Do nothing */
       ;
   }
источник

СС

Сиие Сууие in Embedded Group
так, вы меня подожгли, пойду искать асбестовый стул и работать
источник

NN

Nikita Nazarenko in Embedded Group
🧯
источник

A

Alexander in Embedded Group
Сиие Сууие
еще перл:
    /* Setup the channel modes */
   /* Basic mode, nothing specifically needs to be set */
   if(SYS_DMA_CHANNEL_OP_MODE_BASIC & modeEnable)
   {
       /* Do nothing */
       ;
   }
Ну это заглушки.
Часто оставляют, когда менеджерота гонит с релизом.
источник

СС

Сиие Сууие in Embedded Group
Alexander
Ну это заглушки.
Часто оставляют, когда менеджерота гонит с релизом.
ок, а в чём суть вот такого
SYS_DMA_ERROR SYS_DMA_ChannelErrorGet(SYS_DMA_CHANNEL_HANDLE handle)
{
   SYS_DMA_CHANNEL_OBJECT *chanObj;

   chanObj = (SYS_DMA_CHANNEL_OBJECT *) handle;
   return chanObj->errorInfo;
}
источник

A

Alexander in Embedded Group
Сиие Сууие
ок, а в чём суть вот такого
SYS_DMA_ERROR SYS_DMA_ChannelErrorGet(SYS_DMA_CHANNEL_HANDLE handle)
{
   SYS_DMA_CHANNEL_OBJECT *chanObj;

   chanObj = (SYS_DMA_CHANNEL_OBJECT *) handle;
   return chanObj->errorInfo;
}
Удобно если ты будешь обработчик в коллбэках использовать.
источник

СС

Сиие Сууие in Embedded Group
почему не написать одной строкой
return handle.errorInfo;
источник

I

Ilya 🇧🇾 in Embedded Group
Сиие Сууие
еще перл:
    /* Setup the channel modes */
   /* Basic mode, nothing specifically needs to be set */
   if(SYS_DMA_CHANNEL_OP_MODE_BASIC & modeEnable)
   {
       /* Do nothing */
       ;
   }
Рискну предположить что это базовый класс. При наследовании от него эта заглушка переписывается. Такого полно в ООП и это качественный код.
источник

NN

Nikita Nazarenko in Embedded Group
Ilya 🇧🇾
Рискну предположить что это базовый класс. При наследовании от него эта заглушка переписывается. Такого полно в ООП и это качественный код.
ГАЧЕСТВО
источник

СС

Сиие Сууие in Embedded Group
хотите ещё узнать как выключаются прерывания?
источник

A

Alexander in Embedded Group
Сиие Сууие
хотите ещё узнать как выключаются прерывания?
Го )
источник

СС

Сиие Сууие in Embedded Group
bool SYS_INT_SourceDisable ( INT_SOURCE source )
{
   bool intSrcStatus;
   SYS_INT_PROCESSOR_STATUS processorStatus;

   /* Save the processor status and then Disable the global interrupt */
   processorStatus = ( SYS_INT_PROCESSOR_STATUS )__builtin_disable_interrupts();
   
   /* get the interrupt status of this source before disable is called */
   intSrcStatus = PLIB_INT_SourceIsEnabled (INT_ID_0 , source);

   /* disable the interrupts */
   PLIB_INT_SourceDisable (INT_ID_0 , source);

   /* restore the state of CP0 Status register before the disable occurred*/
   __builtin_mtc0(12, 0, processorStatus);

   /* return the source status */
   return intSrcStatus;
}
источник

СС

Сиие Сууие in Embedded Group
перед тем как его выключить нам надо ПРОВЕРИТЬ БЫЛО ЛИ ОНО ВКЛЮЧЕНО
источник