Files
@ 752fd27f607a
Branch filter:
Location: therm-ng/src/system/gpio.c - annotation
752fd27f607a
2.2 KiB
text/plain
Basic code cleanup
667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 752fd27f607a 752fd27f607a 752fd27f607a 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 667b32311f8f 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a 752fd27f607a | //
// GPIO: configure general-purpose inputs/outputs
//
#include "stm32f3xx_hal.h"
#include "gpio.h"
// Private variables
// Increase on each press, and increase at a fast rate after duration elapsed of continuously holding down... somehow...
static uint32_t change_time_reset = 0;
// Initialize GPIOs
void gpio_init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
// GPIO Ports Clock Enable
__GPIOA_CLK_ENABLE();
__GPIOB_CLK_ENABLE();
__GPIOF_CLK_ENABLE();
// Configure LED GPIO pins
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = SW_A_Pin|SW_B_Pin|SW_C_Pin|SW_D_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(SW_C_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = SW_BTN_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(SW_BTN_GPIO_Port, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
// Define startup State
HAL_GPIO_WritePin(LED, 0);
}
// Increment/decrement unsigned variable with up/down buttons
void user_input(uint16_t* to_modify)
{
if(CHANGE_ELAPSED) {
if(!HAL_GPIO_ReadPin(SW_UP) ) {
CHANGE_RESET;
(*to_modify)++;
}
else if(!HAL_GPIO_ReadPin(SW_DOWN) && (*to_modify) > 0) {
CHANGE_RESET;
(*to_modify)--;
}
}
}
// Increment/decrement signed variable with up/down buttons
void user_input_signed(int32_t* to_modify)
{
//fixme: need to cast to 16/32 bits correctly
if(CHANGE_ELAPSED) {
if(!HAL_GPIO_ReadPin(SW_UP) ) {
CHANGE_RESET;
if (*to_modify < 32768)
(*to_modify)++;
}
else if(!HAL_GPIO_ReadPin(SW_DOWN)) {
CHANGE_RESET;
if (*to_modify >= -32768)
(*to_modify)--;
}
}
}
|