Files @ 04999406e716
Branch filter:

Location: therm/gpio.c - annotation

Ethan Zonca
Merge
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
de0b4c3c6dc2
de0b4c3c6dc2
49b0586d1fdf
de0b4c3c6dc2
de0b4c3c6dc2
de0b4c3c6dc2
de0b4c3c6dc2
de0b4c3c6dc2
de0b4c3c6dc2
de0b4c3c6dc2
de0b4c3c6dc2
de0b4c3c6dc2
49b0586d1fdf
49b0586d1fdf
49b0586d1fdf
#include "stm32l100c_discovery.h"
#include "gpio.h"
#include "config.h"

extern volatile uint32_t ticks;

// Increase on each press, and increase at a fast rate after duration elapsed of continuously holding down... somehow...
uint32_t change_time_reset = 0;

void user_input(uint16_t* to_modify)
{
    if(CHANGE_ELAPSED) {
        if(!GPIO_ReadInputDataBit(SW_UP) ) {
            CHANGE_RESET;
            (*to_modify)++;
        }
        else if(!GPIO_ReadInputDataBit(SW_DOWN) && (*to_modify) > 0) {
            CHANGE_RESET;
            (*to_modify)--;
        }
    }
}


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);

  /*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);

  /*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
  */

  /*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
  */

  /*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);

 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);


  //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 GPIO Configuration  
  PA11   ------> USB_DM
  PA12   ------> USB_DP
  */

  /*Enable or disable the AHB peripheral clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

  GPIO_InitTypeDef GPIO_InitStruct3;
  
  /*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);
}

// vim:softtabstop=4 shiftwidth=4 expandtab