diff --git a/gpio.c b/gpio.c --- a/gpio.c +++ b/gpio.c @@ -25,122 +25,123 @@ void init_gpio(void) { GPIO_InitTypeDef GPIO_InitStruct; - // Enable SPI clocks - RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); - RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); - - // Enable GPIO clocks - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOA, ENABLE); - - // Enable DMA clocks (Is AHB even the right thing???) - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); // EMZ TODO get the right ones - - /*Configure GPIO pin : PC */ - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; - GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; - GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_InitStruct.GPIO_Speed = GPIO_Speed_400KHz; - GPIO_Init(GPIOC, &GPIO_InitStruct); + /* GPIO Ports Clock Enable */ + __GPIOF_CLK_ENABLE(); + __GPIOA_CLK_ENABLE(); + __GPIOB_CLK_ENABLE(); - /*Configure GPIO pin : PB */ - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_10|GPIO_Pin_12 - |GPIO_Pin_9; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; - GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; - GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_InitStruct.GPIO_Speed = GPIO_Speed_400KHz; - GPIO_Init(GPIOB, &GPIO_InitStruct); + + ////////////////// + // PORT F // + ////////////////// + + // PORTF OUTPUT + // Configure GPIO pin : PF0 + GPIO_InitStruct.Pin = GPIO_PIN_0; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_LOW; + HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); - /*Configure GPIO pin : PA */ - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; - GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; - GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_InitStruct.GPIO_Speed = GPIO_Speed_400KHz; - GPIO_Init(GPIOA, &GPIO_InitStruct); - - /*Configure GPIO pin : PB */ - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6 - |GPIO_Pin_7; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; - GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_Init(GPIOB, &GPIO_InitStruct); - - /** SPI1 GPIO Configuration - PA5 ------> SPI1_SCK - PA7 ------> SPI1_MOSI - */ + // PORTF UNUSED + // Configure GPIO pin : PF1 + GPIO_InitStruct.Pin = GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); - /*Enable or disable the AHB peripheral clock */ - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); - - /*Configure GPIO pin : PA: MOSI,SCK */ - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz; - GPIO_Init(GPIOA, &GPIO_InitStruct); - - /*Configure GPIO pin alternate function */ - GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1); - - /*Configure GPIO pin alternate function */ - GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1); - - /** SPI2 GPIO Configuration - PB13 ------> SPI2_SCK - PB14 ------> SPI2_MISO - PB15 ------> SPI2_MOSI - */ + + ////////////////// + // PORT A // + ////////////////// + + // PORT A OUTPUT + // Configure GPIO pins : PA1 PA2 PA3 PA4 + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + // PORTA INPUT + // Configure GPIO pin : PA15 + GPIO_InitStruct.Pin = GPIO_PIN_15; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Enable or disable the AHB peripheral clock */ - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); - - // SPI PINSSS - - /*Configure GPIO pin : PB, MOSI, SCK */ - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_15; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz; - GPIO_Init(GPIOB, &GPIO_InitStruct); + // PORTA UNUSED + // Configure GPIO pins : PA0 PA8 + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_8; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + // USART1 [PORTA] + // Configure GPIO pins : PA9 PA10 + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_USART1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - GPIO_InitTypeDef GPIO_InitStruct2; - // MISO - GPIO_InitStruct2.GPIO_Pin = GPIO_Pin_14; - GPIO_InitStruct2.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStruct2.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_InitStruct2.GPIO_Speed = GPIO_Speed_10MHz; - GPIO_Init(GPIOB, &GPIO_InitStruct2); + // SPI1 [PORTA] + // Configure GPIO pin : PA, MOSI, SCK + GPIO_InitStruct.GPIO_Pin = GPIO_PIN_7|GPIO_PIN_5; + GPIO_InitStruct.GPIO_Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.GPIO_PuPd = GPIO_NOPULL; + GPIO_InitStruct.GPIO_Speed = GPIO_SPEED_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF1_SPI1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + // Configure GPIO pin: PA, MISO + GPIO_InitStruct.GPIO_Pin = GPIO_PIN_6; + GPIO_InitStruct.GPIO_Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.GPIO_PuPd = GPIO_NOPULL; + GPIO_InitStruct.GPIO_Speed = GPIO_SPEED_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF1_SPI1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - //Configure GPIO pin alternate function - GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2); - GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2); - GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2); - + // USB [PORTA] /** USB GPIO Configuration PA11 ------> USB_DM PA12 ------> USB_DP - */ + */ + // Configure GPIO pin : PA, D+, D- + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12; + GPIO_InitStruct.GPIO_Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz; + GPIO_InitStruct.Alternate = GPIO_AF1_USB; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Enable or disable the AHB peripheral clock */ - //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); - - //GPIO_InitTypeDef GPIO_InitStruct3; + + ////////////////// + // PORT B // + ////////////////// - /*Configure GPIO pin : PA */ - //GPIO_InitStruct3.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12; - //GPIO_InitStruct3.GPIO_Mode = GPIO_Mode_AF; - //GPIO_InitStruct3.GPIO_PuPd = GPIO_PuPd_NOPULL; - //GPIO_InitStruct3.GPIO_Speed = GPIO_Speed_10MHz; - //GPIO_InitStruct3.GPIO_OType = GPIO_OType_PP; - //GPIO_Init(GPIOA, &GPIO_InitStruct3); - //GPIO_SetBits(GPIOA, GPIO_Pin_12); // emz test - //GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_USB); - //GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_USB); + // PORT B UNUSED + // Configure GPIO pins : PB0 PB1 PB8 + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_8; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + // PORT B INPUT + // Configure GPIO pins : PB3 PB4 PB5 PB6 PB7 + GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 + |GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + + // Enable DMA clocks (Is AHB even the right thing???) + //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); // EMZ TODO get the right ones + + } // vim:softtabstop=4 shiftwidth=4 expandtab