diff --git a/CMakeLists.txt b/CMakeLists.txt index 6124cac..bcaaca9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,6 @@ set(INTERFACES_DIR ${CMAKE_SOURCE_DIR}/bsl/csl/interfaces) #################################################################################################### include(${PROJECT_DEFS}) add_subdirectory(bsl) -add_subdirectory(drivers/led) set(BSL_HEADER_FILE ${CMAKE_SOURCE_DIR}/bsl/raspberry/bsl_raspberry.hpp) diff --git a/bsl/csl/interfaces/i2c.hpp b/bsl/csl/interfaces/i2c.hpp.bak similarity index 100% rename from bsl/csl/interfaces/i2c.hpp rename to bsl/csl/interfaces/i2c.hpp.bak diff --git a/bsl/csl/interfaces/pin.h b/bsl/csl/interfaces/pin.h new file mode 100644 index 0000000..ba42617 --- /dev/null +++ b/bsl/csl/interfaces/pin.h @@ -0,0 +1,132 @@ +#ifndef _GPIO_H_ +#define _GPIO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + + +#ifdef ARM_MCU +#include "../stm32f042/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h" + typedef enum + { + pinA0 = GPIOA_BASE || 0, + pinA1 = GPIOA_BASE || 1, + pinA2 = GPIOA_BASE || 2, + pinA3 = GPIOA_BASE || 3, + pinA4 = GPIOA_BASE || 4, + pinA5 = GPIOA_BASE || 5, + pinA6 = GPIOA_BASE || 6, + pinA7 = GPIOA_BASE || 7, + pinA8 = GPIOA_BASE || 8, + pinA9 = GPIOA_BASE || 9, + pinA10 = GPIOA_BASE || 10, + pinA11 = GPIOA_BASE || 11, + pinA12 = GPIOA_BASE || 12, + pinA13 = GPIOA_BASE || 13, + pinA14 = GPIOA_BASE || 14, + pinA15 = GPIOA_BASE || 15, + + pinB0 = GPIOB_BASE || 0, + pinB1 = GPIOB_BASE || 1, + pinB3 = GPIOB_BASE || 3, + pinB4 = GPIOB_BASE || 4, + pinB5 = GPIOB_BASE || 5, + pinB6 = GPIOB_BASE || 6, + pinB7 = GPIOB_BASE || 7, + pinB8 = GPIOB_BASE || 8, + + pinF0 = GPIOF_BASE || 0, + pinF1 = GPIOF_BASE || 1 + }pinNo_t; +#endif + +#ifdef RASPBERRY +#endif + +typedef enum +{ + undefined, + input, + output, + analog, + alternate +}mode; + +typedef enum +{ + floating, + pushPull, + openDrain +}state; + +typedef enum +{ + none, + pullUp, + pullDown +}pullUpDown; + +typedef enum +{ + slow, + normal, + fast, + veryFast +}speed; + +typedef enum +{ + disabled, + enabled +}interrupt; + +typedef struct +{ + mode md; + state st; + pullUpDown pud; + speed sp; + interrupt intr; +}configuration; + +typedef enum +{ + notValidMode, + notValidOut, + OutOfRange, + NotDeclared, + NotReachable, + NoPullUpDown, + NotAnalog, + NotDigital, + TooFast, + Bocked, + AlreadyUsed, + NotGpio +}errors; + +void setMode(pinNo_t pinNo, mode mode); +void setOutputState(pinNo_t pinNo, state state); +void setPullUpDonw(pinNo_t pinNo, pullUpDown resistance); +void setSpeed(pinNo_t pinNo, speed speed); +void config(pinNo_t pinNo, mode mode, state state, pullUpDown resistance, speed speed); + +uint8_t get(pinNo_t pinNo); +void toggle(pinNo_t pinNo); +void set(pinNo_t pinNo, uint8_t state); + +void init(pinNo_t pinNo); +void deInit(pinNo_t pinNo); + +void hardwareInfo(pinNo_t pinNo); +void throwError(); + +#ifdef __cplusplus +} +#endif + +#endif // _GPIO_H_ diff --git a/bsl/csl/interfaces/pin.hpp b/bsl/csl/interfaces/pin.hpp deleted file mode 100644 index bd1aaba..0000000 --- a/bsl/csl/interfaces/pin.hpp +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef _GPIO_H_ -#define _GPIO_H_ - -#include -#include -#include - -class Pin -{ - public: - enum mode - { - undefined, - input, - output, - analog, - alternate - }; - - enum state - { - floating, - pushPull, - openDrain - }; - - enum pullUpDown - { - none, - pullUp, - pullDown - }; - - enum speed - { - slow, - normal, - fast, - veryFast - }; - - enum interrupt - { - disabled, - enabled - }; - - struct configuration - { - mode md; - state st; - pullUpDown pud; - speed sp; - interrupt intr; - }; - - enum errors - { - notValidMode, - notValidOut, - OutOfRange, - NotDeclared, - NotReachable, - NoPullUpDown, - NotAnalog, - NotDigital, - TooFast, - Bocked, - AlreadyUsed, - NotGpio - }; - - virtual void setMode(mode mode) = 0; - virtual void setOutputState(state state) = 0; - virtual void setPullUpDonw(pullUpDown resistance) = 0; - virtual void setSpeed(speed speed) = 0; - virtual void config(mode mode, state state, pullUpDown resistance, speed speed) = 0; - - virtual bool read() = 0; - virtual void toggle() = 0; - virtual void write(bool state) = 0; - - virtual void init() = 0; - virtual void deInit() = 0; - - virtual void hardwareInfo() = 0; - - private: - virtual void throwError(uint16_t line, errors errNo) = 0; -}; - -#endif // _GPIO_H_ diff --git a/bsl/csl/interfaces/spi.hpp b/bsl/csl/interfaces/spi.hpp.bak similarity index 100% rename from bsl/csl/interfaces/spi.hpp rename to bsl/csl/interfaces/spi.hpp.bak diff --git a/bsl/csl/interfaces/spich.hpp b/bsl/csl/interfaces/spich.hpp.bak similarity index 100% rename from bsl/csl/interfaces/spich.hpp rename to bsl/csl/interfaces/spich.hpp.bak diff --git a/bsl/csl/stm32f042/Inc/stm_pin.hpp b/bsl/csl/stm32f042/Inc/stm_pin.hpp.bak similarity index 98% rename from bsl/csl/stm32f042/Inc/stm_pin.hpp rename to bsl/csl/stm32f042/Inc/stm_pin.hpp.bak index eba4abc..2f417c4 100644 --- a/bsl/csl/stm32f042/Inc/stm_pin.hpp +++ b/bsl/csl/stm32f042/Inc/stm_pin.hpp.bak @@ -1,8 +1,8 @@ #ifndef __STM_PIN_HPP__ #define __STM_PIN_HPP__ -#include "../../interfaces/pin.hpp" -#include "../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h" +//#include "../../interfaces/pin.hpp" +//#include "../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h" #include #include diff --git a/bsl/csl/stm32f042/Src/CMakeLists.txt b/bsl/csl/stm32f042/Src/CMakeLists.txt index 0d30d3f..9b1e9be 100644 --- a/bsl/csl/stm32f042/Src/CMakeLists.txt +++ b/bsl/csl/stm32f042/Src/CMakeLists.txt @@ -5,7 +5,8 @@ set (STMSRC_INCLUDES set(STMSRC_SOURCES stm32f0xx_csl.c stm32f0xx_it.c - system_stm32f0xx.c) + system_stm32f0xx.c + ) add_library(stmSources ${STMSRC_SOURCES}) target_compile_options(stmSources PRIVATE ${C_FLAGS}) @@ -19,3 +20,9 @@ target_compile_options(stmDelay PRIVATE ${C_FLAGS}) target_compile_definitions(stmDelay PRIVATE ${C_DEFS}) target_include_directories(stmDelay PUBLIC ${INTERFACES_DIR} ${CSL_INCLUDES}) add_library(sub::delay ALIAS stmDelay) + +add_library(stmPin pin.c) +target_compile_options(stmPin PRIVATE ${C_FLAGS}) +target_compile_definitions(stmPin PRIVATE ${C_DEFS}) +target_include_directories(stmPin PUBLIC ${INTERFACES_DIR} ${CSL_INCLUDES}) +add_library(sub::pin ALIAS stmPin) diff --git a/bsl/csl/stm32f042/Src/delay.cpp b/bsl/csl/stm32f042/Src/delay.cpp index 74b4745..a178edd 100644 --- a/bsl/csl/stm32f042/Src/delay.cpp +++ b/bsl/csl/stm32f042/Src/delay.cpp @@ -1,8 +1,6 @@ #include "delay.hpp" #include "../Inc/stm32f0xx_csl.h" - - Delay::Delay() { diff --git a/bsl/csl/stm32f042/Src/pin.c b/bsl/csl/stm32f042/Src/pin.c new file mode 100644 index 0000000..2caeb97 --- /dev/null +++ b/bsl/csl/stm32f042/Src/pin.c @@ -0,0 +1,75 @@ +#include "pin.h" + + +void setMode(pinNo_t pinNo, mode mode) +{ + +} + +void setOutputState(pinNo_t pinNo, state state) +{ + RCC->AHBENR |= RCC_AHBENR_GPIOBEN; + // Set PIN 3 of port B as Output + GPIOB->MODER |= GPIO_MODER_MODER3_0; + GPIOB->MODER &=~ GPIO_MODER_MODER3_1; +} + +void setPullUpDonw(pinNo_t pinNo, pullUpDown resistance) +{ + +} + +void setSpeed(pinNo_t pinNo, speed speed) +{ + +} + +void config(pinNo_t pinNo, mode mode, state state, pullUpDown resistance, speed speed) +{ + +} + + +uint8_t get(pinNo_t pinNo) +{ + +} + +void toggle(pinNo_t pinNo) +{ + +} + +void set(pinNo_t pinNo, uint8_t state) +{ + if(state == 1) + { + GPIOB->BSRR |= GPIO_BSRR_BS_3; + return; + } + GPIOB->BSRR |= GPIO_BSRR_BR_3; +} + +void init(pinNo_t pinNo) +{ + +} + +void deInit(pinNo_t pinNo) +{ + +} + + +void hardwareInfo(pinNo_t pinNo) +{ + +} + +void throwError() +{ + +} + + + diff --git a/bsl/nucleo_f042k6/bslConfig.cmake b/bsl/nucleo_f042k6/bslConfig.cmake index 83da8a6..199fcd0 100644 --- a/bsl/nucleo_f042k6/bslConfig.cmake +++ b/bsl/nucleo_f042k6/bslConfig.cmake @@ -74,6 +74,6 @@ set (CPP_DEFS ${C_DEFS}) list(APPEND EXTRA_LIBS sub::startup) list(APPEND EXTRA_LIBS sub::translator) list(APPEND EXTRA_LIBS sub::sources) -#list(APPEND EXTRA_LIBS sub::gpio) # TODO : PLease add this again. list(APPEND EXTRA_LIBS sub::delay) -list(APPEND EXTRA_LIBS sub::led) +list(APPEND EXTRA_LIBS sub::pin) # TODO : PLease add this again. +#list(APPEND EXTRA_LIBS sub::led) diff --git a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp index 2c0b349..30fbac0 100644 --- a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp +++ b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp @@ -10,27 +10,12 @@ Nucleo_f042k6::~Nucleo_f042k6(){} void Nucleo_f042k6::init() { - ledPin.init(); - ledPin.setMode(Pin::mode::output); - ledPin.setSpeed(Pin::speed::fast); - - //Led ledGreen; - /* - 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() { - STM_Pin ledPin; - Led ledGreen(&ledPin); - ledGreen.on(); - delay.ms(200); - ledGreen.off(); - delay.ms(200); + delay.ms(1000); + delay.ms(1000); } diff --git a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp index d53c102..8d98c25 100644 --- a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp +++ b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp @@ -1,10 +1,8 @@ #ifndef BSL_NUCLEO_F042K6_H #define BSL_NUCLEO_F042K6_H -#include "../csl/interfaces/pin.hpp" +#include "../csl/interfaces/pin.h" #include "../csl/interfaces/delay.hpp" -#include "../csl/stm32f042/Inc/stm_pin.hpp" -#include "../../drivers/led/led.hpp" #include "stm32f0xx_csl.h" class Nucleo_f042k6 @@ -20,9 +18,6 @@ class Nucleo_f042k6 private : Delay delay; - //STM_Pin pin_a0; - STM_Pin ledPin; - //Led ledGreen(&STM_Pin); }; #endif /* BSL_NUCLEO_F042K6_H */ diff --git a/drivers/led/led.hpp b/drivers/led/led.hpp index 2a6db6d..5fda306 100644 --- a/drivers/led/led.hpp +++ b/drivers/led/led.hpp @@ -1,9 +1,6 @@ #ifndef _LED_HPP #define _LED_HPP -// TODO : Change Cmake to include "pin.hpp" -#include "../../bsl/csl/interfaces/pin.hpp" -#include "../../bsl/csl/interfaces/delay.hpp" class Led { diff --git a/main.cpp b/main.cpp index b9ae02e..b7d2c24 100644 --- a/main.cpp +++ b/main.cpp @@ -1,14 +1,19 @@ #include"main.hpp" -#include"drivers/led/led.hpp" +#include"bsl/csl/interfaces/delay.hpp" +//#include"bsl/csl/interfaces/pin.h" int main(int argc, char *argv[]) { - Nucleo_f042k6 bsl; + Delay delay; - bsl.init(); + setMode(pinB3,output); + throwError(); while(1) { - bsl.running(); + set(pinB3,1); + delay.ms(100); + set(pinB3,0); + delay.ms(100); } return 1;