コード例 #1
0
ファイル: rtclock.hpp プロジェクト: jaqueza/libstm32pp
int main()
{
	RTCtime_t time;
	RTCdate_t date;

  clk::initialize();

  initializeGpio();

  initializePeripheral();

  initializeSystemTimer();

  time.hour = 18;
  time.min = 0;
  time.sec = 0;
  RTC::setTime(time);

  date.year = 13;
  date.month = rtcmonth::OCTOBER;
  date.mday = rtcday::MONDAY;
  RTC::setDate(date);

  while (true) {

    RTC::getTime(&time);
    RTC::getDate(&date);

		printf("Time is: %2d:%2d:%2d\n\r",time.hour, time.min, time.sec);
		printf("Date is: 20%d:%2d:%2d\n\r",date.year, date.month, date.mday);

    loop();
  }
}
コード例 #2
0
ファイル: BMS.c プロジェクト: doumdi/ProjetVUE_VUE32
/*
 * State Machine Processing
 */
void ImplBMS(void)
{
    //------------------------------------
    // Gestion du fonctionnement de la machine a État
    switch (m_state) {
        case InitPeripheral:
        {
            statusCmp = 0;
            bufferMoy = 0;
            initializePeripheral();
            setState(InitBQ);
            break;
        }
        case InitBQ:
        {
            initBranchData(&branch0, 0); // Met les valeurs à zéro
            assignAddress(&branch0); // Assigne les address au device
            status(&branch0); // Mise à jour des registres de status des devices
            setInitialConfig(&branch0); // Assigne la configuration initiale
            resetBranchFault(&branch0); // Reset des fautes
            resetBranchAlert(&branch0); // Reset des alertes
            status(&branch0); // Mise à jour des status

            /*LP_PARAMS newLongPolling;
            HDW_MAPPING *gVUE32_Ress;

            gVUE32_Ress = gHardwareMapBMS[INDEX_BMS];

            newLongPolling.ucSizeData = gVUE32_Ress[i].ucDataSize
            newLongPolling.hasLifeTime = LONG_POLLING_WITHOUT_LIFE_TIME;
            newLongPolling.ucDestinataire = 0;
            newLongPolling.ucResourceId = E_ID_BMS_BOARD_TEMP;
            newLongPolling.unDelay = 100;
            newLongPolling.ucMsgType = VUE32_TYPE_SETVALUE;*/
            
            setState(Monitor);
            
            //Enables the core to handle any pending interrupt requests
            asm volatile ("ei");

            // Everything is ok so light the yellow LEDS for 1 sec
            unsigned char io_ctrl;
            readRegister(branch0.id,branch0.deviceTable[0].address,IO_CONTROL,1,&io_ctrl);
            io_ctrl = (io_ctrl | 0x40);
            writeRegister(branch0.id,BROADCAST_ADDRESS,IO_CONTROL,io_ctrl);

            unsigned int unSmallDelay = uiTimeStamp + 1000;
            while ( unSmallDelay > uiTimeStamp);
            io_ctrl = (io_ctrl & 0xBF);
            writeRegister(branch0.id,BROADCAST_ADDRESS,IO_CONTROL,io_ctrl);

            break;
        }
        case Monitor:
        {
            EVERY_X_MS(2000)
                    LED1 ^= 1;
                    monitor();
            END_OF_EVERY
            break;
        }
        case Balance:
        {
            EVERY_X_MS(500)
                LED1 ^= 1;
                balance();
            END_OF_EVERY
            break;
        }
        case InitSleep:
        {
            sleepBranch(&branch0); //Met les BQ dans le mode sleep
            setState(Sleep);
            break;
        }
        case Sleep:
        {
            break;
        }
        case WakeUp:
        {
            wakeUpBranch(&branch0); //Réinitialise les BQ après le mode sleep
            setState(InitBQ);
            break;
        }
        case Sieste:
        {
            break;
        }
        case WaitStabiliseTension:
        {
            if (waitStabiliseTension() == 1)
                setState(Balance);
            break;
        }
        case ProblemDetected:
        {
            if (problemDetected() == 1)
                setState(Monitor);
            break;
        }
        case WaitStabiliseTemp:
        {
            if (waitStabiliseTemp() == 1)
                setState(Balance);
            break;
        }
        case Test:
        {
            openCloseAllIO();
            break;
        }
        default:
            break;
    }

    if ( m_state == ProblemDetected)
    {
    EVERY_X_MS(2000)
        unsigned char io_ctrl;
        readRegister(branch0.id,branch0.deviceTable[0].address,IO_CONTROL,1,&io_ctrl);
        if ( io_ctrl & 0x40 )
            io_ctrl = (io_ctrl & 0xBF);
        else
            io_ctrl = (io_ctrl | 0x40);
        writeRegister(branch0.id,BROADCAST_ADDRESS,IO_CONTROL,io_ctrl);
    END_OF_EVERY
    }