Files @ 63171fecb213
Branch filter:

Location: therm/main.c - annotation

Ethan Zonca
Formatting
970a161634a0
970a161634a0
6ef9b6f499ac
970a161634a0
299800126735
299800126735
4e72955028d8
970a161634a0
970a161634a0
872ec99b2dff
872ec99b2dff
676f49902c7d
56d27a356b39
56d27a356b39
56d27a356b39
4e72955028d8
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
6982c8ddef15
63171fecb213
63171fecb213
56d27a356b39
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
299800126735
63171fecb213
63171fecb213
63171fecb213
4e72955028d8
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
08d36c537581
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
872ec99b2dff
872ec99b2dff
872ec99b2dff
63171fecb213
872ec99b2dff
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
872ec99b2dff
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
63171fecb213
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
299800126735
299800126735
299800126735
299800126735
299800126735
299800126735
299800126735
299800126735
299800126735
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
63171fecb213
#include "main.h"
#include "stm32l100c_discovery.h"
#include "ssd1306.h"

#define LED_POWER GPIOB,GPIO_Pin_9
#define LED_STAT  GPIOA,GPIO_Pin_15

static __IO uint32_t TimingDelay;

void init_gpio();
void init_spi();

/* Main */
int main(void)
{

    // Hopefully init clocks
    SystemInit();
    RCC_ClocksTypeDef RCC_Clocks;

    //SysTick end of count event each 1ms
    RCC_GetClocksFreq(&RCC_Clocks);
    SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);

    GPIO_ResetBits(LED_STAT);
    Delay(100);

    init_gpio();
    init_spi();

    //SSD1302_Init();
    //SSD1303_DrawPoint(3,3,1);
    //SSD1303_DrawPoint(5,5,0);

    GPIO_SetBits(LED_POWER);
    Delay(500);
    GPIO_ResetBits(LED_POWER);

    while(1)
    {  
        /* Turn on LD0 Blue LED during 1s each time User button is pressed */
        //STM_EVAL_LEDOn(LED4);
        GPIO_SetBits(LED_POWER);
        //STM_EVAL_LEDOn(LED3);

        /* wait for 1s */
        Delay(150);

        /* Turn off LD4 Blue LED after 1s each time User button is pressed */
        //STM_EVAL_LEDOff(LED4);
        GPIO_ResetBits(LED_POWER);
        Delay(150);
    }
}

/**
  * @brief  Inserts a delay time.
  * @param  nTime: specifies the delay time length, in 1 ms.
  * @retval None
  */
void Delay(__IO uint32_t nTime)
{
  TimingDelay = nTime;

  while(TimingDelay != 0);
}

/**
  * @brief  Decrements the TimingDelay variable.
  * @param  None
  * @retval None
  */
void TimingDelay_Decrement(void)
{
  if (TimingDelay != 0x00)
  { 
    TimingDelay--;
  }
}



void init_spi(void) {
    SPI_InitTypeDef  SPI_InitStructure;

    // OLED IC
    SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial = 7;
    SPI_Init(SPI1, &SPI_InitStructure);
    SPI_Cmd(SPI1, ENABLE);           /* Enable the SPI  */   

    // MAX IC
    SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Rx;
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial = 7;
    SPI_Init(SPI2, &SPI_InitStructure);
    SPI_Cmd(SPI2, ENABLE);           /* Enable the SPI */
}

void init_gpio(void) {

 GPIO_InitTypeDef GPIO_InitStruct;

  /** Configure pins as 
        * Analog 
        * Input 
        * Output
        * EVENT_OUT
        * EXTI
  */

  /*Enable or disable the APB peripheral clock */
 

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

  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_NOPULL;
  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 */
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;
  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 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);

  /*Configure GPIO pin : PB */
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  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 alternate function */
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);

  /*Configure GPIO pin alternate function */
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);

  /*Configure GPIO pin alternate function */
  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);

  /*Configure GPIO pin : PA */
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;
  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);
}





#ifdef  USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t* file, uint32_t line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  /* Infinite loop */
  while (1)
  {}
}
#endif

// vim:softtabstop=4 shiftwidth=4 expandtab