From 633dbe4692f8b0292a1ce2ec12c94365159ff8ea Mon Sep 17 00:00:00 2001
From: Michael Wiebusch <stratomaster@gmx.net>
Date: Tue, 17 Dec 2013 23:15:08 +0100
Subject: [PATCH] + project structure - unnessesary include directives

---
 firmware/src/CB_functions.c   |   2 +-
 firmware/src/CB_functions.h   |   3 -
 firmware/src/Makefile         |   1 +
 firmware/src/main.c           | 120 ++-------------------------------
 firmware/src/periph_conf.c    |   4 +-
 firmware/src/periph_conf.h    |   4 +-
 firmware/src/spi2.c           | 121 ++++++++++++++++++++++++++++++++++
 firmware/src/spi2.h           |  17 +++++
 firmware/src/stm32f10x_conf.h |   2 +-
 firmware/src/usart1.c         |   1 +
 firmware/src/usart1.h         |   3 +-
 11 files changed, 153 insertions(+), 125 deletions(-)
 create mode 100644 firmware/src/spi2.c
 create mode 100644 firmware/src/spi2.h

diff --git a/firmware/src/CB_functions.c b/firmware/src/CB_functions.c
index 12a1640..bfd3e7a 100644
--- a/firmware/src/CB_functions.c
+++ b/firmware/src/CB_functions.c
@@ -7,8 +7,8 @@
  */
 
 #include "CB_functions.h"
-
 #include "periph_conf.h"
+#include "stm32f10x_conf.h"
 
 
 
diff --git a/firmware/src/CB_functions.h b/firmware/src/CB_functions.h
index 2a2d679..b8c7b5a 100644
--- a/firmware/src/CB_functions.h
+++ b/firmware/src/CB_functions.h
@@ -7,9 +7,6 @@
  */
 
 #include "stm32f10x.h"
-#include "stm32f10x_conf.h" // contains all std periph includes
-#include "core_cm3.h"
-// #include "stm32f10x_it.h"
 
 
 void init_CB_GPIO_Outputs(void);
diff --git a/firmware/src/Makefile b/firmware/src/Makefile
index 174d4e7..2495997 100644
--- a/firmware/src/Makefile
+++ b/firmware/src/Makefile
@@ -8,6 +8,7 @@ OBJS+=stm32f10x_it.o
 OBJS+=periph_conf.o
 OBJS+=CB_functions.o
 OBJS+=usart1.o
+OBJS+=spi2.o
 
 # OBJS+=keypins.o
 
diff --git a/firmware/src/main.c b/firmware/src/main.c
index 658d465..df5932f 100644
--- a/firmware/src/main.c
+++ b/firmware/src/main.c
@@ -15,16 +15,19 @@
 #include "newlib_stubs.c"
 #include "CB_functions.h"
 #include "usart1.h"
+#include "spi2.h"
 
 
 #define UC_NO_REGS 17
 
+
+extern uint16_t SPIBuffer[];
+
 GPIO_InitTypeDef GPIO_InitStructure;
 NVIC_InitTypeDef NVIC_InitStructure;
 SPI_InitTypeDef SPI_InitStructure;
 USART_InitTypeDef USART_InitStructure;
 DMA_InitTypeDef DMA_InitStructure;
-uint16_t SPIBuffer[] = {0xAAAA, 0xAAAA, 0xAAAA};
 
 uint16_t uC_regs[UC_NO_REGS];
 
@@ -35,9 +38,7 @@ void SysTick_Handler(void);
 
 void disable_JTAG(void);
 
-void init_SPI2(void);
 
-void spi_dma_shovel(void);
 
 
 
@@ -83,8 +84,8 @@ int main(int argc, char *argv[]) {
   
   init_SPI2();
 
-  SPIBuffer[0] = 0x1234;
-  SPIBuffer[1] = 0x5678;
+//   SPIBuffer[0] = 0x1234;
+//   SPIBuffer[1] = 0x5678;
   
   init_USART1();
   
@@ -97,115 +98,6 @@ int main(int argc, char *argv[]) {
 }
 
 
-void spi_dma_shovel(void) {
-
-
-  
-//   DMA_Cmd(DMA1_Channel4, DISABLE);
-  DMA_Cmd(DMA1_Channel5, DISABLE);
-//   DMA_SetCurrDataCounter(DMA1_Channel4, 2);
-  DMA_SetCurrDataCounter(DMA1_Channel5, 2);
-  
-  // Chip Select Low
-//   GPIO_WriteBit(GPIOB, GPIO_Pin_12, RESET);
-  CB_GPIO_Out_Lo(UC_CS);     // spi nCS -> idle Hi
-  
-//   DMA_Cmd(DMA1_Channel4, ENABLE);
-  DMA_Cmd(DMA1_Channel5, ENABLE);
-}
-
-
-
-void init_SPI2(void) {
-  // configure the spi with DMA
-  // code example from dillertech.de
-  
-  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
-  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
-  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
-  
-  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
-  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-  GPIO_Init(GPIOB, &GPIO_InitStructure);
-  
-  // // MISO, not used
-//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
-//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
-//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-//   GPIO_Init(GPIOB, &GPIO_InitStructure);
-  // use different CS
-//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
-//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-//   GPIO_Init(GPIOB, &GPIO_InitStructure);
-//   
-//   GPIO_WriteBit(GPIOB, GPIO_Pin_12, SET);
-  
-//   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
-  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
-  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
-  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
-  SPI_InitStructure.SPI_CRCPolynomial = 0;
-  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
-  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
-  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
-  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
-  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
-  SPI_Init(SPI2, &SPI_InitStructure);
-  
-  SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, ENABLE);
-  // // MISO not used
-//   SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Rx, ENABLE);
-  
-  SPI_Cmd(SPI2, ENABLE);
-  
-  
-  // // MISO not used
-//   // DMA Channel 4 - SPI RX
-//   DMA_InitStructure.DMA_BufferSize = 0;
-//   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
-//   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
-//   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SPIBuffer;
-//   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
-//   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
-//   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
-//   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI2->DR;
-//   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
-//   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-//   DMA_InitStructure.DMA_Priority = DMA_Priority_High;
-//   DMA_Init(DMA1_Channel4, &DMA_InitStructure);
-//   
-//   DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE);
-  
-  // DMA Channel 5 - SPI TX
-  DMA_InitStructure.DMA_BufferSize = 0;
-  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
-  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
-//   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SPIBuffer; 
-  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SPIBuffer; 
-  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
-  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
-  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
-  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI2->DR;
-  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
-  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
-  DMA_Init(DMA1_Channel5, &DMA_InitStructure);
-  
-  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  NVIC_Init(&NVIC_InitStructure);
-  
-  
-  
-
-  
-  
-}
-
 
 
 
diff --git a/firmware/src/periph_conf.c b/firmware/src/periph_conf.c
index 21b81a1..5f2495d 100644
--- a/firmware/src/periph_conf.c
+++ b/firmware/src/periph_conf.c
@@ -7,10 +7,8 @@
  */
   
 /* Includes ------------------------------------------------------------------*/
+#include "stm32f10x_conf.h"
 #include "periph_conf.h"
-#include "stm32f10x_spi.h"
-#include "stm32f10x_i2c.h"
-#include "stm32f10x_dma.h"
 
 // by micha,
 
diff --git a/firmware/src/periph_conf.h b/firmware/src/periph_conf.h
index a0c03bc..76ec968 100644
--- a/firmware/src/periph_conf.h
+++ b/firmware/src/periph_conf.h
@@ -7,8 +7,8 @@
  */
   
 
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f10x_conf.h"
+#include "stm32f10x.h"
+
 
 
 
diff --git a/firmware/src/spi2.c b/firmware/src/spi2.c
new file mode 100644
index 0000000..ce28d55
--- /dev/null
+++ b/firmware/src/spi2.c
@@ -0,0 +1,121 @@
+/**
+ ********************************************************
+ * 
+ *  SPI2
+ * 
+ ********************************************************
+ */
+
+#include "spi2.h"
+#include "periph_conf.h"
+#include "stm32f10x_conf.h"
+
+uint16_t SPIBuffer[] = {0xAAAA, 0xAAAA, 0xAAAA};
+
+GPIO_InitTypeDef GPIO_InitStructure;
+NVIC_InitTypeDef NVIC_InitStructure;
+SPI_InitTypeDef SPI_InitStructure;
+DMA_InitTypeDef DMA_InitStructure;
+
+void init_SPI2(void) {
+  // configure the spi with DMA
+  // code example from dillertech.de
+  
+  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
+  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
+  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
+  
+  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
+  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+  GPIO_Init(GPIOB, &GPIO_InitStructure);
+  
+  // // MISO, not used
+//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
+//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
+//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+//   GPIO_Init(GPIOB, &GPIO_InitStructure);
+  // use different CS
+//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
+//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
+//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+//   GPIO_Init(GPIOB, &GPIO_InitStructure);
+//   
+//   GPIO_WriteBit(GPIOB, GPIO_Pin_12, SET);
+  
+//   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
+  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
+  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
+  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
+  SPI_InitStructure.SPI_CRCPolynomial = 0;
+  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
+  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
+  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
+  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
+  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
+  SPI_Init(SPI2, &SPI_InitStructure);
+  
+  SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, ENABLE);
+  // // MISO not used
+//   SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Rx, ENABLE);
+  
+  SPI_Cmd(SPI2, ENABLE);
+  
+  
+  // // MISO not used
+//   // DMA Channel 4 - SPI RX
+//   DMA_InitStructure.DMA_BufferSize = 0;
+//   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
+//   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
+//   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SPIBuffer;
+//   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
+//   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
+//   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
+//   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI2->DR;
+//   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
+//   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
+//   DMA_InitStructure.DMA_Priority = DMA_Priority_High;
+//   DMA_Init(DMA1_Channel4, &DMA_InitStructure);
+//   
+//   DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE);
+  
+  // DMA Channel 5 - SPI TX
+  DMA_InitStructure.DMA_BufferSize = 0;
+  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
+  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
+//   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SPIBuffer; 
+  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SPIBuffer; 
+  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
+  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
+  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
+  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI2->DR;
+  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
+  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
+  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
+  DMA_Init(DMA1_Channel5, &DMA_InitStructure);
+  
+  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
+  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
+  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+  NVIC_Init(&NVIC_InitStructure);
+}
+
+
+
+void spi_dma_shovel(void) {
+
+
+  
+//   DMA_Cmd(DMA1_Channel4, DISABLE);
+  DMA_Cmd(DMA1_Channel5, DISABLE);
+//   DMA_SetCurrDataCounter(DMA1_Channel4, 2);
+  DMA_SetCurrDataCounter(DMA1_Channel5, 2);
+  
+  // Chip Select Low
+//   GPIO_WriteBit(GPIOB, GPIO_Pin_12, RESET);
+  CB_GPIO_Out_Lo(UC_CS);     // spi nCS -> idle Hi
+  
+//   DMA_Cmd(DMA1_Channel4, ENABLE);
+  DMA_Cmd(DMA1_Channel5, ENABLE);
+}
diff --git a/firmware/src/spi2.h b/firmware/src/spi2.h
new file mode 100644
index 0000000..4d6b827
--- /dev/null
+++ b/firmware/src/spi2.h
@@ -0,0 +1,17 @@
+/**
+ ********************************************************
+ * 
+ *  SPI2 (headers)
+ * 
+ ********************************************************
+ */
+  
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f10x.h"
+
+
+
+void init_SPI2(void);
+
+void spi_dma_shovel(void);
\ No newline at end of file
diff --git a/firmware/src/stm32f10x_conf.h b/firmware/src/stm32f10x_conf.h
index 49ccdb2..794ff05 100644
--- a/firmware/src/stm32f10x_conf.h
+++ b/firmware/src/stm32f10x_conf.h
@@ -12,7 +12,7 @@
  #include "stm32f10x_flash.h"
 /* #include "stm32f10x_fsmc.h" */
  #include "stm32f10x_gpio.h"
- #include "stm32f10x_i2c.h"
+//  #include "stm32f10x_i2c.h"
 /* #include "stm32f10x_iwdg.h" */
 /* #include "stm32f10x_pwr.h" */
  #include "stm32f10x_rcc.h"
diff --git a/firmware/src/usart1.c b/firmware/src/usart1.c
index ba47a61..e26dcca 100644
--- a/firmware/src/usart1.c
+++ b/firmware/src/usart1.c
@@ -7,6 +7,7 @@
  */
 
 #include "usart1.h"
+#include "stm32f10x_conf.h"
   
 void init_USART1(void) {
   /* structure contains data for USART configuration */
diff --git a/firmware/src/usart1.h b/firmware/src/usart1.h
index f07b70b..6166cba 100644
--- a/firmware/src/usart1.h
+++ b/firmware/src/usart1.h
@@ -8,7 +8,8 @@
   
 
 /* Includes ------------------------------------------------------------------*/
-#include "stm32f10x_conf.h"
+
+#include "stm32f10x.h"
 
 
 void init_USART1(void);
-- 
2.43.0