Compare commits

...

2 Commits

Author SHA1 Message Date
fcbd1ae05e Init Button. Interrupt still missing 2020-02-23 21:48:52 +01:00
6700b0ea81 Add pupdr macros 2020-02-23 21:48:30 +01:00
3 changed files with 42 additions and 0 deletions

View File

@ -18,4 +18,28 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <stm32/stm32f4xx.h>
#include <reflow-controller/button.h>
#include <stm-periph/clock-enable-manager.h>
#include <stdint.h>
static volatile uint64_t to_active_timestamp;
void button_init()
{
rcc_manager_enable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(BUTTON_RCC_MASK));
BUTTON_PORT->MODER &= MODER_DELETE(BUTTON_PIN);
BUTTON_PORT->PUPDR &= PUPDR_DELETE(BUTTON_PIN);
BUTTON_PORT->PUPDR |= PULLUP(BUTTON_PIN);
}
enum button_state button_read_event();
void button_deinit()
{
BUTTON_PORT->MODER &= MODER_DELETE(BUTTON_PIN);
BUTTON_PORT->PUPDR &= PUPDR_DELETE(BUTTON_PIN);
rcc_manager_disable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(BUTTON_RCC_MASK));
}

View File

@ -21,4 +21,21 @@
#ifndef __BUTTON_H__
#define __BUTTON_H__
#define BUTTON_ACTIVE_LEVEL 0
#define BUTTON_PORT GPIOD
#define BUTTON_RCC_MASK RCC_AHB1ENR_GPIODEN
#define BUTTON_PIN 4
#define BUTTON_SHORT_ON_TIME_MS 50
#define BUTTON_LONG_ON_TIME_MS 800
enum button_state {BUTTON_IDLE = 0, BUTTON_SHORT, BUTTON_LONG};
void button_init();
enum button_state button_read_event();
void button_deinit();
#endif /* __BUTTON_H__ */

View File

@ -22,6 +22,7 @@
#define __STM32GPIOMACROS_H__
#define MODER_DELETE(pin) ~(0x3U << (pin * 2))
#define PUPDR_DELETE(pin) ~(0x3U << (pin * 2))
#define OUTPUT(pin) (0x01U << (pin * 2))
#define PULLUP(pin) (0x1U << (pin* 2))
#define ALTFUNC(pin) ((0x2) << (pin * 2))