Page MenuHomec4science

main.c
No OneTemporary

File Metadata

Created
Tue, Apr 23, 10:45
#include "main.h"
#include "communication.h"
#include "controller.h"
#include "drivers/adc.h"
#include "drivers/callback_timers.h"
#include "drivers/dac.h"
#include "drivers/debug_gpio.h"
#include "drivers/h_bridge.h"
#include "drivers/hall.h"
#include "drivers/incr_encoder.h"
#include "drivers/led.h"
#include "drivers/strain_gauge.h"
#include "drivers/tachometer.h"
#include "lib/utils.h"
extern volatile uint32_t ctrl_timestamp;
volatile uint32_t statusReg = 0x00000000; // Main state register.
/**
* @brief Main function, setups all the drivers and controllers.
*/
int main(void)
{
// Setup the GPIOs and the interrupts.
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB |
RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD |
RCC_AHB1Periph_GPIOE, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
//
cbt_Init(); // Setup the timers that will call the loops functions.
adc_Init(); // Setup the ADC.
comm_Init(); // Setup the communication module.
ctrl_Init(); // Setup the controllers.
enc_Init(); // Setup the incremental encoders.
hb_Init(); // Setup the H-bridge.
hb_Enable(); //
dac_Init(); // Setup the DAC.
led_Init(); // Setup the LEDs.
dio_Init();
// Delay to let the power electronics stabilize before calibrating the
// current sensor.
utils_DelayMs(200);
adc_CalibrateCurrentSens();
// Start the current loop.
ctrl_StartCurrentLoop();
// Init the external sensors drivers, connected to the ADC.
hall_Init(ANIN1);
//sg_Init(ANIN2);
//tac_Init(ANIN2);
// End of the initialization. Lock the SyncVar list, and notify the PC that
// the board has (re)started.
comm_LockSyncVarsList();
comm_NotifyReady();
// Endless loop. The low priority functions are called here.
while(1)
{
// Update the communication.
comm_Step();
}
}

Event Timeline