strm32f429 disovery 보드에는 파란 색의 푸쉬버튼 하나가 제공된다. 버튼 값은 GPIO port A의 0번 핀에서 읽어 볼 수 있다. 버튼을 누르게 되면 PA0의 값이 high가 된다. 이 값을 읽어 LED를 켜 보도록 하겠다. class Gpio_in : public Gpio { public: Gpio_in(PORT port, uint32_t pin, PUPD pupd=PULL_DN) : Gpio{port, pin, MODE_IN, OPEN_DRAIN, HIGH, pupd} {} uint32_t Get(uint32_t pins); bool Get_pin(uint32_t pin); }; inline bool Gpio_in::Get_pin(uint32_t pin) { if (pin & io_..
객체 지향 언어로 임베디드 시스템 프로그램 개발이 가능한 지 시험하기 위하여 가장 간단한 프로젝트를 하나 만들어 보기로 하였다. 보드에 있는 2개의 LED(Green, Red)를 제어하는 코드를 구동 시켜 봄으로써 C++로 객체를 생성하여 원하는 동작이 되는지 확인해 보겠다. 회로도에 보면 Green LED는 Port G 13번 pin에 연결되어 있고 Red LED는 같은 포트 14번 pin에 연결되어 있는것으로 표시되어 있다. 따라서 Port G 13, 14 핀을 GPIO out mode로 설정하여 LED를 켜고 끄도록 하겠다. LED가 GND에 연결되어 있으므로 Out level를 high 로 설정하면 LED가 켜지게 된다는 것을 알 수 있다. class Gpio { protected: struct ..
지금까지 여러번 C++로 객체 지향 프로그램 개발을 시도 하였으나 번번이 조금하다 말고는 포기하게 되었다. 워낙 C프로그램 개발이 익숙하다보니 C++의 새로운 개념을 받아 들이기가 쉽지 않았고, C로 안되는게 없는데 굳이 C++로 개발할 필요성을 못느끼게 되었기 때문이다. 그러다가 자바와 파이썬으로 객체 지향 프로그램을 할 기회가 있어서 몇개의 프로젝트를 진행하였고 자연히 객체 지향 프로그램의 특징과 장점을 알게되었다. 그래서 다시한번 C++ 프로그램에 도전하게 되었고, 그냥 목적없이 배우다보면 또다시 중간에 그만둘것 같아 임베디드 시스템 개발을 C++로 해보자는 확실한 목표를 세우고 진행해 보기로 하였다. 하드웨어 성능과 메모리 자원이 극히 제한적인 시절에는 어셈블리 언어 외에는 선택의 여지가 없었지만..