From 91db5e0c49b77c7a21a3b6d1c70b7128dcfa55a9 Mon Sep 17 00:00:00 2001 From: Paul Selkirk Date: Mon, 13 Jun 2016 22:38:00 -0400 Subject: Change gpio setups from macros to inline functions. --- stm-init.c | 4 +--- stm-init.h | 43 ++++++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/stm-init.c b/stm-init.c index d2d8d65..0016e13 100644 --- a/stm-init.c +++ b/stm-init.c @@ -157,8 +157,6 @@ static void MX_USART2_UART_Init(void) /* Configure General Purpose Input/Output pins */ static void MX_GPIO_Init(void) { - GPIO_InitTypeDef GPIO_InitStruct; - /* GPIO Ports Clock Enable */ LED_CLK_ENABLE(); @@ -217,7 +215,7 @@ void MX_I2C2_Init(void) hi2c_rtc.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED; if (HAL_I2C_Init(&hi2c_rtc) != HAL_OK) { - Error_Handler(); + Error_Handler(); } } #endif diff --git a/stm-init.h b/stm-init.h index 252485d..2c3ec99 100644 --- a/stm-init.h +++ b/stm-init.h @@ -37,24 +37,33 @@ #include "stm32f4xx_hal.h" -/* Macros used to make GPIO pin setup (in stm-init.c) easier */ -#define gpio_output(output_port, output_pins, output_level) \ - /* Configure GPIO pin Output Level */ \ - HAL_GPIO_WritePin(output_port, output_pins, output_level); \ - /* Configure pin as output */ \ - GPIO_InitStruct.Pin = output_pins; \ - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; \ - GPIO_InitStruct.Pull = GPIO_NOPULL; \ - GPIO_InitStruct.Speed = GPIO_SPEED_LOW; \ - HAL_GPIO_Init(output_port, &GPIO_InitStruct) - -#define gpio_input(input_port, input_pin, input_pull) \ - GPIO_InitStruct.Pin = input_pin; \ - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; \ - GPIO_InitStruct.Pull = input_pull; \ - GPIO_InitStruct.Speed = GPIO_SPEED_LOW; \ - HAL_GPIO_Init(input_port, &GPIO_InitStruct) +/* Functions used to make GPIO pin setup (in stm-init.c) easier */ +inline void gpio_output(GPIO_TypeDef* output_port, uint16_t output_pins, GPIO_PinState output_level) +{ + GPIO_InitTypeDef GPIO_InitStruct; + + /* Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(output_port, output_pins, output_level); + + /* Configure pin as output */ + GPIO_InitStruct.Pin = output_pins; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_LOW; + HAL_GPIO_Init(output_port, &GPIO_InitStruct); +} + +inline void gpio_input(GPIO_TypeDef* input_port, uint16_t input_pin, GPIO_PinState input_pull) +{ + GPIO_InitTypeDef GPIO_InitStruct; + + GPIO_InitStruct.Pin = input_pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = input_pull; + GPIO_InitStruct.Speed = GPIO_SPEED_LOW; + HAL_GPIO_Init(input_port, &GPIO_InitStruct); +} extern void stm_init(void); extern void Error_Handler(void); -- cgit v1.2.3