Prusa-Firmware-MMU/src/main.cpp

51 lines
1.5 KiB
C++

#include "logic/mm_control.h"
#include "hal/gpio.h"
#include "hal/spi.h"
/// One-time setup of HW and SW components
/// Called before entering the loop() function
void setup(){
using namespace hal;
gpio::Init(gpio::GPIO_pin(GPIOB, 3), gpio::GPIO_InitTypeDef(gpio::Mode::input, gpio::Pull::none));
gpio::Init(gpio::GPIO_pin(GPIOB, 2), gpio::GPIO_InitTypeDef(gpio::Mode::output, gpio::Level::low));
gpio::Init(gpio::GPIO_pin(GPIOB, 1), gpio::GPIO_InitTypeDef(gpio::Mode::output, gpio::Level::low));
// gpio::Init(gpio::GPIO_pin(GPIOB, 0), gpio::GPIO_InitTypeDef(gpio::Mode::output, gpio::Level::low));
// spi::SPI_InitTypeDef spi_conf = {
// .prescaler = 2, //4mhz
// };
spi::Init(SPI0, 2);
}
/// Main loop of the firmware
/// Proposed architecture
/// checkMsgs();
/// if(msg is command){
/// activate command handling
/// } else if(msg is query){
/// format response to query
/// }
/// StepCurrentCommand();
/// StepMotors();
/// StepLED();
/// StepWhateverElseNeedsStepping();
/// The idea behind the Step* routines is to keep each automaton non-blocking allowing for some “concurrency”.
/// Some FW components will leverage ISR to do their stuff (UART, motor stepping?, etc.)
void loop(){
}
int main() {
setup();
for(;;){
using namespace hal::gpio;
WritePin(GPIO_pin(GPIOB, 5), Level::low);
TogglePin(GPIO_pin(GPIOB, 6));
if (hal::gpio::ReadPin(GPIO_pin(GPIOB, 7)) == hal::gpio::Level::low)
break;
loop();
}
return 0;
}