Files @ 872ec99b2dff
Branch filter:

Location: therm/main.c - annotation

Ethan Zonca
SPI setup using stdperiph
970a161634a0
970a161634a0
6ef9b6f499ac
970a161634a0
970a161634a0
970a161634a0
970a161634a0
872ec99b2dff
872ec99b2dff
676f49902c7d
56d27a356b39
56d27a356b39
56d27a356b39
f7aa98ec64f4
56d27a356b39
970a161634a0
970a161634a0
970a161634a0
970a161634a0
970a161634a0
1c5909c633fa
676f49902c7d
970a161634a0
08d36c537581
970a161634a0
970a161634a0
970a161634a0
970a161634a0
6982c8ddef15
6982c8ddef15
970a161634a0
56d27a356b39
872ec99b2dff
872ec99b2dff
872ec99b2dff
872ec99b2dff
676f49902c7d
872ec99b2dff
872ec99b2dff
56d27a356b39
f7aa98ec64f4
f7aa98ec64f4
f7aa98ec64f4
970a161634a0
f23a287bb7c1
08d36c537581
f23a287bb7c1
08d36c537581
08d36c537581
970a161634a0
970a161634a0
970a161634a0
970a161634a0
08d36c537581
970a161634a0
970a161634a0
08d36c537581
970a161634a0
970a161634a0
970a161634a0
08d36c537581
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
970a161634a0
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
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
#include "main.h"
#include "stm32l100c_discovery.h"
#include "ssd1306.h"

static __IO uint32_t TimingDelay;
uint8_t BlinkSpeed = 0;

void init_gpio();
void init_spi();

/* Main */
int main(void)
{
   SystemInit();
   RCC_ClocksTypeDef RCC_Clocks;
  
  /* Configure LED3 and LED4 on STM32L100C-Discovery */
  STM_EVAL_LEDInit(LED3);
  STM_EVAL_LEDInit(LED4);
  

//  RCC_Configuration();
  /* Initialize User_Button on STM32L100C-Discovery */
  //STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);
  
  /* SysTick end of count event each 1ms */
  RCC_GetClocksFreq(&RCC_Clocks);
  SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);

 /* Initiate Blink Speed variable */ 
  BlinkSpeed = 1;

//  while(1) {
//	  ITM_SendChar('!');
//  } 


  init_spi();
  //SPI_I2S_SendData(SPI1, 0x1); 
 /* Init lcd driver */
//  SSD1303_Init();
//  SSD1303_DrawPoint(3,3,1);
//  SSD1303_DrawPoint(5,5,0);
  
  STM_EVAL_LEDOn(LED4);
  Delay(1000);
  STM_EVAL_LEDOff(LED4);
  Delay(1000);

  while(1)
  {  
      /* Turn on LD4 Blue LED during 1s each time User button is pressed */
      STM_EVAL_LEDOn(LED4);
      //STM_EVAL_LEDOn(LED3);
      
      /* wait for 1s */
      Delay(300);
      
      /* Turn off LD4 Blue LED after 1s each time User button is pressed */
      STM_EVAL_LEDOff(LED4);
      Delay(300);
  }
}

/**
  * @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 AHB peripheral clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOA|RCC_APB1Periph_SPI2|RCC_APB2Periph_SPI1, 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