/** * Main function */ int main (void) { osKernelInitialize(); /* initialize CMSIS-RTOS */ HAL_Init(); /* Initialize the HAL Library */ SystemClock_Config(); /* Configure the System Clock */ /* User codes goes here*/ // initializeLED_IO(); /* Initialize LED GPIO Buttons */ // start_Thread_LED(); /* Create LED thread */ init_acc_kstate(0.01f, 0.1f, 0.0f, 0.1f, 0.0f); init_temp_kstate(0.005f, 0.05f, 0.0f, 5.0f, 0.0f); MAIL_CONTROLLER_init_mailboxes(); ConfigureADC(); accelerometer_init(); LED_init_io(); KP_init(); TIM3_init(); TIM4_init(); MAIL_CONTROLLER_start_thread(); LED_start_thread(); temperature_start_thread(); accelerometer_start_thread(); KEYPAD_start_thread(); /* User codes ends here*/ osKernelStart(); /* start thread execution */ }
int main(void) { InitializeHardware(); //set up ports, timers, interrupts ConfigureADC(); //get ADC set up to start reading values BlinkLEDs(); myCalibrationState = XMaxState; //change to init later? StartCalibration(myCalibrationState, &gPushButton); //InitGame(); //initialize AFTER configuration so get random number based off of time to calibrate //after calibration finished, need user to press button to indicate they are ready to begin game BlinkLEDs(); //METHOD HERE TO WAIT FOR BUTTON PRESS TO START GAME //startGame(); //NEED TO PUSH BUTTON TO START while(1) { update(); //calls all different states of game } return 0; }
/** * @brief Main program. * @param None * @retval None */ int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f072xb.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f0xx.c file PLL is set to x12 with a PREDIV /2 so the system clock SYSCLK = 48MHz */ ConfigureGPIO(); ConfigureExternalIT(); RCC->APB2ENR = RCC_APB2ENR_ADC1EN; /* Enable the peripheral clock of the ADC */ RCC->CFGR |= RCC_CFGR_PPRE_2; /* Set peripheral prescaler to /2 so PCLK = HCLK/2 = 24MHz */ CalibrateADC(); EnableADC(); ConfigureADC(); ConfigureDMA(); ADC1->CR |= ADC_CR_ADSTART; /* Start the ADC conversions */ while (error < ERROR_UNEXPECTED_DMA_IT) /* loop till no unrecoverable error */ { __WFI(); } DisableADC(); SysTick_Config(48000); /* 1ms config */ while (1) /* Infinite loop */ { } }
/** * @brief Main program. * @param None * @retval None */ int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f072xb.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f0xx.c file PLL is set to x12 with a PREDIV /2 so the system clock SYSCLK = 48MHz */ ConfigureGPIO(); SetClockForADC(); CalibrateADC(); ConfigureGPIOforADC(); EnableADC(); ConfigureADC(); ConfigureDMA(); ADC1->CR |= ADC_CR_ADSTART; /* start the ADC conversions */ GPIOC->BSRR = (1<<9); /* switch on the green led */ __WFI(); /* No interrupt should occur, as only error could trigger an interrupt */ GPIOC->BRR = (1<<9); /* switch off the green led */ DisableADC(); SysTick_Config(48000); /* 1ms config */ while (1) /* Infinite loop */ { } }
/** * @brief Main program. * @param None * @retval None */ int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f072xb.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f0xx.c file PLL is set to x12 with a PREDIV /2 so the system clock SYSCLK = 48MHz */ ConfigureGPIO(); ConfigureExternalIT(); SetClockForADC(); CalibrateADC(); ConfigureGPIOforADC(); EnableADC(); ConfigureADC(); CurrentChannel = 0; /* Initializes the CurrentChannel */ ADC1->CR |= ADC_CR_ADSTART; /* start the ADC conversions */ while (error == 0) /* loop till no unrecoverable error, should never be exited */ { __WFI(); } DisableADC(); SysTick_Config(48000); /* 1ms config */ while (1) /* Infinite loop */ { } }
void main(void){ InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.TIMER0_INT = &cpu_timer0_isr; EDIS; // This is needed to disable write to EALLOW protected registers InitCpuTimers(); // For this example, only initialize the Cpu Timers // 100MHz CPU Freq, 50 microsecond Period (in uSeconds) 20,000 Hz ConfigCpuTimer(&CpuTimer0, CPU_CLOCK_100, INT_PERIOD_uS); CpuTimer0Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0 // Configure GPIO12 (LED rojo) as a GPIO output pin EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0; // declare GPIO GpioCtrlRegs.GPADIR.bit.GPIO12 = 1; // decalre as output EDIS; // Enable CPU INT1 which is connected to CPU-Timer 0: IER |= M_INT1; // Enable TINT0 in the PIE: Group 1 __interrupt 7 PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //Configure the ADCs and power them up ConfigureADC(); //Setup the ADCs for software conversions SetupADCSoftware(); // Enable DACOUTA EALLOW; //Use VDAC as the reference for DAC DaccRegs.DACCTL.bit.DACREFSEL = REFERENCE_VDAC; //Enable DAC output DaccRegs.DACOUTEN.bit.DACOUTEN = 1; EDIS; // iniciar buffers de datos init_buffer(); // Enable global Interrupts and higher priority real-time debug events: EINT; // Enable Global __interrupt INTM ERTM; // Enable Global realtime __interrupt DBGM // Step 6. IDLE loop. Just sit and loop forever (optional): for(;;); }
/** * @brief Main program. * @param None * @retval None */ int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f072xb.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f0xx.c file PLL is set to x12 with a PREDIV /2 so the system clock SYSCLK = 48MHz */ /* defines the upper limit 15% above the factory value the value is adapted according to the application power supply versus the factory calibration power supply */ uint16_t vrefint_high = (*VREFINT_CAL_ADDR)* VDD_CALIB / VDD_APPLI * 115 / 100; /* defines the lower limit 15% below the factory value the value is adapted according to the application power supply versus the factory calibration power supply */ uint16_t vrefint_low = (*VREFINT_CAL_ADDR) * VDD_CALIB / VDD_APPLI * 85 / 100; ConfigureGPIO(); SetClockForADC(); CalibrateADC(); EnableADC(); ConfigureADC(); ConfigureTIM15(); ADC1->CR |= ADC_CR_ADSTART; /* start the ADC conversion */ while (error == 0) /* Loop till the measure is in the range */ { while ((ADC1->ISR & ADC_ISR_EOC) == 0); /* wait end of conversion */ if ((ADC1->DR > vrefint_high) && (ADC1->DR > vrefint_low)) { error |= WARNING_MEASURE; /* report a warning, the measure being out of range due to VDD shift */ } GPIOC->ODR ^= (1<<9); /* Toggle green led on PC9 */ } DisableADC(); SysTick_Config(48000); /* 1ms config */ while(1) { } }
void main(void) { // // Step 1. Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the F2837xS_SysCtrl.c file. // InitSysCtrl(); // // Step 2. Initialize GPIO: // This example function is found in the F2837xS_Gpio.c file and // illustrates how to set the GPIO to it's default state. // InitGpio(); // Skipped for this example // // Step 3. Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts // DINT; // // Initialize the PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. // This function is found in the F2837xS_PieCtrl.c file. // InitPieCtrl(); // // Disable CPU interrupts and clear all CPU interrupt flags: // IER = 0x0000; IFR = 0x0000; // // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // This will populate the entire table, even if the interrupt // is not used in this example. This is useful for debug purposes. // The shell ISR routines are found in F2837xS_DefaultIsr.c. // This function is found in F2837xS_PieVect.c. // InitPieVectTable(); // // Map ISR functions // EALLOW; PieVectTable.ADCA1_INT = &adca1_isr; //function for ADCA interrupt 1 EDIS; // // Configure the ADC and power it up // ConfigureADC(); // // Configure the ePWM // ConfigureEPWM(); // // Setup the ADC for ePWM triggered conversions on channel 0 // SetupADCEpwm(0); // // Enable global Interrupts and higher priority real-time debug events: // IER |= M_INT1; //Enable group 1 interrupts EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM // // Initialize results buffer // for(resultsIndex = 0; resultsIndex < RESULTS_BUFFER_SIZE; resultsIndex++) { AdcaResults[resultsIndex] = 0; } resultsIndex = 0; bufferFull = 0; // // enable PIE interrupt // PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // // sync ePWM // EALLOW; CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1; // //take conversions indefinitely in loop // do { // //start ePWM // EPwm2Regs.ETSEL.bit.SOCAEN = 1; //enable SOCA EPwm2Regs.TBCTL.bit.CTRMODE = 0; //unfreeze, and enter up count mode // //wait while ePWM causes ADC conversions, which then cause interrupts, //which fill the results buffer, eventually setting the bufferFull //flag // while(!bufferFull); bufferFull = 0; //clear the buffer full flag // //stop ePWM // EPwm2Regs.ETSEL.bit.SOCAEN = 0; //disable SOCA EPwm2Regs.TBCTL.bit.CTRMODE = 3; //freeze counter // //at this point, AdcaResults[] contains a sequence of conversions //from the selected channel // // //software breakpoint, hit run again to get updated conversions // // asm(" ESTOP0"); }while(1); }
void main(void) { // // Step 1. Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the F2837xS_SysCtrl.c file. // InitSysCtrl(); // // Step 2. Initialize GPIO: // This example function is found in the F2837xS_Gpio.c file and // illustrates how to set the GPIO to it's default state. // InitGpio(); // Skipped for this example // // Step 3. Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts // DINT; // // Initialize the PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. // This function is found in the F2837xS_PieCtrl.c file. // InitPieCtrl(); // // Disable CPU interrupts and clear all CPU interrupt flags: // IER = 0x0000; IFR = 0x0000; // // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // This will populate the entire table, even if the interrupt // is not used in this example. This is useful for debug purposes. // The shell ISR routines are found in F2837xS_DefaultIsr.c. // This function is found in F2837xS_PieVect.c. // InitPieVectTable(); // // Map ISR functions // EALLOW; PieVectTable.ADCA1_INT = &adca1_isr; //function for ADCA interrupt 1 EDIS; // // Configure the ADC and power it up // ConfigureADC(); // // Initialize the temperature sensor // Note: The argument needs to change if using a VREFHI voltage other than 3.0V // InitTempSensor(3.0); // // Configure the ePWM // ConfigureEPWM(); // // Setup the ADC for ePWM triggered conversions on temperature sensor // SetupADCEpwm(); // // Enable global Interrupts and higher priority real-time debug events: // IER |= M_INT1; //Enable group 1 interrupts EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM // // enable PIE interrupt // PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // // sync ePWM // EALLOW; CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1; // // start ePWM // EPwm1Regs.ETSEL.bit.SOCAEN = 1; //enable SOCA EPwm1Regs.TBCTL.bit.CTRMODE = 0; //unfreeze, and enter up count mode // // take conversions indefinitely in loop // while(1); }