diff --git a/$ b/$ new file mode 100644 index 0000000..ec0daa0 --- /dev/null +++ b/$ @@ -0,0 +1,26 @@ +#include "bsl_nucleo_f042k6.hpp" + + +Nucleo_f042k6::Nucleo_f042k6(){} +Nucleo_f042k6::~Nucleo_f042k6(){} + +void Nucleo_f042k6::init() +{ + ledPin.init(); + ledPin.setMode(Pin::mode::output); + ledPin.setSpeed(Pin::speed::fast); + + pin_a0.init(); + pin_a0.setMode(Pin::mode::input); + pin_a0.setSpeed(Pin::speed::slow); + pin_a0.setPullUpDonw(Pin::pullUpDown::pullDown); +} + +void Nucleo_f042k6::running() +{ + ledPin.write(true); + delay.ms(200); + ledPin.write(false); + delay.ms(200); +} + diff --git a/bsl/csl/interfaces/pin.hpp b/bsl/csl/interfaces/pin.hpp index fbf4a49..bd1aaba 100644 --- a/bsl/csl/interfaces/pin.hpp +++ b/bsl/csl/interfaces/pin.hpp @@ -77,7 +77,7 @@ class Pin virtual void config(mode mode, state state, pullUpDown resistance, speed speed) = 0; virtual bool read() = 0; - virtual bool toggle() = 0; + virtual void toggle() = 0; virtual void write(bool state) = 0; virtual void init() = 0; diff --git a/bsl/csl/stm32f042/Inc/stm_pin.hpp b/bsl/csl/stm32f042/Inc/stm_pin.hpp index 7fa569a..eba4abc 100644 --- a/bsl/csl/stm32f042/Inc/stm_pin.hpp +++ b/bsl/csl/stm32f042/Inc/stm_pin.hpp @@ -66,7 +66,6 @@ enum Pin_no{ pin_15 }; - template class STM_Pin : Pin { @@ -170,7 +169,7 @@ class STM_Pin : Pin return (reinterpret_cast(port_base_address)->IDR & (1<> pin_no; } - bool toggle() override + void toggle() override { } diff --git a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp index 58a00ea..bb7dedc 100644 --- a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp +++ b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp @@ -1,42 +1,29 @@ #include "bsl_nucleo_f042k6.hpp" -int startBSL() + + +Nucleo_f042k6::Nucleo_f042k6() { stmStart(); - Delay delay; - - STM_Pin led; - STM_Pin pin_a0; +} +Nucleo_f042k6::~Nucleo_f042k6(){} - led.init(); - led.setMode(Pin::mode::output); - led.setSpeed(Pin::speed::fast); +void Nucleo_f042k6::init() +{ + ledPin.init(); + ledPin.setMode(Pin::mode::output); + ledPin.setSpeed(Pin::speed::fast); pin_a0.init(); pin_a0.setMode(Pin::mode::input); pin_a0.setSpeed(Pin::speed::slow); pin_a0.setPullUpDonw(Pin::pullUpDown::pullDown); +} - uint8_t i = 0; - - for(i = 0 ; i < 10 ; i++) - { - delay.ms(100); - led.write(true); - delay.ms(100); - led.write(false); - } - - while(1) - { - if(pin_a0.read()) - { - led.write(true); - } - else - { - led.write(false); - } - } - return 1; +void Nucleo_f042k6::running() +{ + ledPin.write(true); + delay.ms(200); + ledPin.write(false); + delay.ms(200); } diff --git a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp index fde38b6..ad00c00 100644 --- a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp +++ b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp @@ -5,6 +5,23 @@ #include "../csl/interfaces/delay.hpp" #include "../csl/stm32f042/Inc/stm_pin.hpp" #include "stm32f0xx_csl.h" -int startBSL(); + +class Nucleo_f042k6 +{ + public: + + Nucleo_f042k6(); + ~Nucleo_f042k6(); + + void init(); + void running(); + + private : + Delay delay; + + STM_Pin ledPin; + STM_Pin pin_a0; + +}; #endif /* BSL_NUCLEO_F042K6_H */ diff --git a/drivers/led/led.cpp b/drivers/led/led.cpp new file mode 100644 index 0000000..06d11ab --- /dev/null +++ b/drivers/led/led.cpp @@ -0,0 +1,18 @@ +#include "led.hpp" + + +void Pin::on() +{ + pin.write(true); +} + +void Pin::off() +{ + pin.write(false); +} + +void Pin::toggle() +{ + pin.toggle(); +} + diff --git a/drivers/led/led.hpp b/drivers/led/led.hpp new file mode 100644 index 0000000..cba5706 --- /dev/null +++ b/drivers/led/led.hpp @@ -0,0 +1,22 @@ +#ifndef __LED_HPP +#define __LED_HPP + +// TODO : Change Cmake to include "pin.hpp" +#include "../../bsl/csl/interfaces/pin.hpp" + +class Led +{ + public: + Led(Pin& pin); + ~Led(); + + void on(); + void off(); + void toggle(); + + private: + Pin& pin; +}; + + +#endif /* __LED_HPP */ diff --git a/main.cpp b/main.cpp index 1a9ad86..9f34db6 100644 --- a/main.cpp +++ b/main.cpp @@ -3,6 +3,15 @@ int main(int argc, char *argv[]) { - startBSL(); + Nucleo_f042k6 bsl; + + bsl.init(); + while(1) + { + bsl.running(); + } + return 1; } + +