Changeset - 4d88a377e1fe
[Not reviewed]
default
0 3 0
Ethan Zonca - 10 years ago 2014-08-15 23:07:09
ez@ethanzonca.com
USB compiles properly
3 files changed with 14 insertions and 85 deletions:
0 comments (0 inline, 0 general)
Makefile
Show inline comments
 

	
 
TARGET:=therm
 
TOOLCHAIN_PATH:=/usr/bin
 
TOOLCHAIN_PREFIX:=arm-none-eabi
 
OPTLVL:=3 # Optimization level, can be [0, 1, 2, 3, s].
 

	
 
#PROJECT_NAME:=$(notdir $(lastword $(CURDIR)))
 
TOP:=$(shell readlink -f "../..")
 
DISCOVERY:=Utilities/STM32L100C-Discovery
 
STMLIB:=libraries
 
OLEDDRV:=oleddrv
 
USBDRV:=libraries/USB
 
USBDRV:=USB
 
STD_PERIPH:=$(STMLIB)/STM32L1xx_StdPeriph_Driver
 
STARTUP:=$(STMLIB)/CMSIS/Device/ST/STM32L1xx/Source/Templates/gcc_ride7
 
LINKER_SCRIPT:=$(CURDIR)/stm32-flash.ld
 
#LINKER_SCRIPT:=$(CURDIR)/../stm32_flash.ld
 

	
 
INCLUDE=-I$(CURDIR)
 
INCLUDE+=-I$(STMLIB)/CMSIS/Include
 
INCLUDE+=-I$(STMLIB)/CMSIS/Device/ST/STM32L1xx/Include
 
INCLUDE+=-I$(STD_PERIPH)/inc
 
INCLUDE+=-I$(DISCOVERY)
 
INCLUDE+=-I$(STMLIB)/$(OLEDDRV)
 
#INCLUDE+=-I$(STMLIB)/STM32_USB_OTG_Driver/inc
 
#INCLUDE+=-I$(STMLIB)/STM32_USB_Device_Library/Class/hid/inc
 
#INCLUDE+=-I$(STMLIB)/STM32_USB_Device_Library/Core/inc
 
INCLUDE+=-I$(STMLIB)/$(USBDRV)
 

	
 
# vpath is used so object files are written to the current directory instead
 
# of the same directory as their source files
 
vpath %.c $(DISCOVERY) $(STD_PERIPH)/src \
 
          $(STMLIB)/STM32_USB_OTG_Driver/src \
 
          $(STMLIB)/USB \
 
          $(STMLIB)/STM32_USB-FS_Device_Library/Class/hid/src \
 
          $(STMLIB)/STM32_USB-FS_Device_Library/Core/src
 
vpath %.s $(STARTUP)
 

	
 
ASRC=startup_stm32l1xx_mdp.s
 

	
 
# Project Source Files
 
SRC=main.c
 
SRC+=stm32l1xx_it.c
 
SRC+=system_stm32l1xx.c
 
SRC+=stm32l100c_discovery.c
 
SRC+=ssd1306.c
 

	
 
# Discovery Source Files
 
#SRC+=stm32f4_discovery_lis302dl.c
 
#SRC+=stm32f4_discovery.c
 
#SRC+=stm32f4_discovery_audio_codec.c
 

	
 
# Standard Peripheral Source Files
 
SRC+=stm32l1xx_syscfg.c
 
SRC+=misc.c
 
SRC+=stm32l1xx_adc.c
 
SRC+=stm32l1xx_dac.c
 
SRC+=stm32l1xx_dma.c
 
SRC+=stm32l1xx_exti.c
 
SRC+=stm32l1xx_flash.c
 
SRC+=stm32l1xx_gpio.c
 
SRC+=stm32l1xx_i2c.c
 
SRC+=stm32l1xx_rcc.c
 
SRC+=stm32l1xx_spi.c
 
SRC+=stm32l1xx_tim.c
 

	
 
# USB Source Files
 
SRC+=usb_core.c
 
SRC+=usb_init.c
 
SRC+=usb_int.c
 
SRC+=usb_mem.c
 
SRC+=usb_regs.c
 
SRC+=usb_sil.c
 
SRC+=hw_config.c
 
SRC+=usb_desc.c
 
SRC+=usb_endp.c
 
SRC+=usb_istr.c
 
SRC+=usb_prop.c
 
SRC+=usb_pwr.c
 

	
 
CDEFS=-DUSE_STDPERIPH_DRIVER
 
CDEFS+=-DSTM32L1XX
main.c
Show inline comments
 
#include "main.h"
 
#include "stm32l100c_discovery.h"
 
#include "ssd1306.h"
 
 
// USB includes
 
#include "hw_config.h"
 
#include "usb_lib.h"
 
#include "usb_desc.h"
 
#include "usb_pwr.h"
 
 
#define LED_POWER GPIOB,GPIO_Pin_9
 
#define LED_STAT  GPIOA,GPIO_Pin_15
 
 
#define MAX_CS GPIOB,GPIO_Pin_12
 
 
// TODO: Grab buttonpresses with interrupts
 
#define SW_BTN  GPIOB, GPIO_Pin_3
 
#define SW_UP   GPIOB, GPIO_Pin_7
 
#define SW_DOWN GPIOB, GPIO_Pin_6
 
#define SW_LEFT GPIOB, GPIO_Pin_5
 
#define SW_RIGHT GPIOB, GPIO_Pin_4
 
 
/* Extern variables ----------------------------------------------------------*/
 
extern __IO uint8_t Receive_Buffer[64];
 
extern __IO  uint32_t Receive_length ;
 
extern __IO  uint32_t length ;
 
uint8_t Send_Buffer[64];
 
uint32_t packet_sent=1;
 
uint32_t packet_receive=1;
 
 
static __IO uint32_t TimingDelay;
 
 
void init_gpio();
 
void init_spi();
 
void process();
 
void machine();
 
 
int main(void)
 
{
 
 
    // Init clocks
 
    SystemInit();
 
 
    init_gpio();
 
 
    Set_USBClock();
 
    USB_Interrupts_Config();
 
    GPIO_SetBits(LED_POWER);
 
    USB_Init(); // freezes here... maybe clock issue?
 
 
    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);
 
    GPIO_SetBits(LED_POWER);
 
    Delay(500);
 
    GPIO_ResetBits(LED_POWER);
 
 
    init_spi();
 
 
    ssd1306_Init();
 
    ssd1306_DrawPoint(3,3,1);
 
    ssd1306_DrawPoint(5,5,0);
 
 
    while(1)
 
   {  
 
        ssd1306_block_write();
 
 
        // Process sensor inputs [TODO: 5hz?]
 
        process();
 
 
        // Run state machine [TODO: 50hz?]
 
        machine(); 
platform_config.h
Show inline comments
 
/**
 
  ******************************************************************************
 
  * @file    platform_config.h
 
  * @author  MCD Application Team
 
  * @version V4.0.0
 
  * @date    21-January-2013
 
  * @brief   Evaluation board specific configuration file.
 
  ******************************************************************************
 
  * @attention
 
  *
 
  * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>
 
  *
 
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
 
  * You may not use this file except in compliance with the License.
 
  * You may obtain a copy of the License at:
 
  *
 
  *        http://www.st.com/software_license_agreement_liberty_v2
 
  *
 
  * Unless required by applicable law or agreed to in writing, software 
 
  * distributed under the License is distributed on an "AS IS" BASIS, 
 
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  * See the License for the specific language governing permissions and
 
  * limitations under the License.
 
  *
 
  ******************************************************************************
 
  */
 
 
 
/* Define to prevent recursive inclusion -------------------------------------*/
 
#ifndef __PLATFORM_CONFIG_H
 
#define __PLATFORM_CONFIG_H
 
 
/* Includes ------------------------------------------------------------------*/
 
#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS)
 
 #include "stm32l1xx.h"
 
 #if defined (USE_STM32L152_EVAL)
 
  #include "stm32l152_eval.h"
 
 #elif defined (USE_STM32L152D_EVAL)
 
  #include "stm32l152d_eval.h"
 
 #else
 
  #error "Missing define: USE_STM32L152_EVAL or USE_STM32L152D_EVAL"
 
 #endif /* USE_STM32L152_EVAL */
 
#elif defined (STM32F10X_MD) || defined (STM32F10X_HD) || defined (STM32F10X_XL)
 
 #include "stm32f10x.h"
 
 #if defined (USE_STM3210B_EVAL)
 
  #include "stm3210b_eval.h"
 
 #elif defined (USE_STM3210E_EVAL)
 
  #include "stm3210e_eval.h"
 
 #else
 
  #error "Missing define: USE_STM3210B_EVAL or USE_STM3210E_EVAL"
 
 #endif /* USE_STM3210B_EVAL */
 
#elif defined (USE_STM32373C_EVAL)
 
 #include "stm32f37x.h"
 
 #include "stm32373c_eval.h"
 
#elif defined (USE_STM32303C_EVAL)
 
 #include "stm32f30x.h"
 
 #include "stm32303c_eval.h"
 
#endif
 
#include "stm32l1xx.h"
 
 
/* Exported types ------------------------------------------------------------*/
 
/* Exported constants --------------------------------------------------------*/
 
/* Uncomment the line corresponding to the STMicroelectronics evaluation board
 
   used to run the example */
 
#if !defined (USE_STM3210B_EVAL) &&  !defined (USE_STM3210E_EVAL)  && !defined (USE_STM32L152_EVAL) &&  !defined (USE_STM32L152D_EVAL) &&  !defined (USE_STM32373C_EVAL) &&  !defined (USE_STM32303C_EVAL)
 
//#define USE_STM3210B_EVAL
 
//#define USE_STM3210E_EVAL
 
//#define USE_STM32L152_EVAL
 
//#define USE_STM32L152D_EVAL
 
//#define (USE_STM32373C_EVAL)
 
#define (USE_STM32303C_EVAL)
 
#endif
 
 
 
/*Unique Devices IDs register set*/
 
 
#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD) || defined(STM32L1XX_MD_PLUS) 
 
 
#define         ID1          (0x1FF80050)
 
#define         ID2          (0x1FF80054)
 
#define         ID3          (0x1FF80064)
 
 
#elif defined (STM32F37X) || defined(STM32F30X)
 
 
#define         ID1          (0x1FFFF7AC)
 
#define         ID2          (0x1FFFF7B0)
 
#define         ID3          (0x1FFFF7B4)
 
 
#else /*STM32F1x*/
 
 
#define         ID1          (0x1FFFF7E8)
 
#define         ID2          (0x1FFFF7EC)
 
#define         ID3          (0x1FFFF7F0)
 
 
#endif
 
 
 
/* Define the STM32F10x hardware depending on the used evaluation board */
 
#ifdef USE_STM3210B_EVAL
 
  #define USB_DISCONNECT                      GPIOD  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_9
 
  #define RCC_APB2Periph_GPIO_DISCONNECT      RCC_APB2Periph_GPIOD
 
 
#elif defined (USE_STM3210E_EVAL)
 
  #define USB_DISCONNECT                      GPIOB  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_14
 
  #define RCC_APB2Periph_GPIO_DISCONNECT      RCC_APB2Periph_GPIOB
 
 
 
#elif defined (USE_STM32L152_EVAL) || defined (USE_STM32L152D_EVAL)
 
 /* 
 
   For STM32L15xx devices it is possible to use the internal USB pullup
 
   controlled by register SYSCFG_PMC (refer to RM0038 reference manual for
 
   more details).
 
   It is also possible to use external pullup (and disable the internal pullup)
 
   by setting the define USB_USE_EXTERNAL_PULLUP in file platform_config.h
 
   and configuring the right pin to be used for the external pull up configuration.
 
   To have more details on how to use an external pull up, please refer to 
 
   STM3210E-EVAL evaluation board manuals.
 
   */
 
 /* Uncomment the following define to use an external pull up instead of the 
 
    integrated STM32L15xx internal pull up. In this case make sure to set up
 
    correctly the external required hardware and the GPIO defines below.*/
 
/* #define USB_USE_EXTERNAL_PULLUP */
 
 
 #if !defined(USB_USE_EXTERNAL_PULLUP)
 
#if !defined(USB_USE_EXTERNAL_PULLUP)
 
  #define STM32L15_USB_CONNECT                SYSCFG_USBPuCmd(ENABLE)
 
  #define STM32L15_USB_DISCONNECT             SYSCFG_USBPuCmd(DISABLE)
 
 
 #elif defined(USB_USE_EXTERNAL_PULLUP)
 
#elif defined(USB_USE_EXTERNAL_PULLUP)
 
  /* PA0 is chosen just as illustrating example, you should modify the defines
 
    below according to your hardware configuration. */ 
 
  #define USB_DISCONNECT                      GPIOA
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_0
 
  #define RCC_AHBPeriph_GPIO_DISCONNECT       RCC_AHBPeriph_GPIOA
 
  #define STM32L15_USB_CONNECT                GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN)
 
  #define STM32L15_USB_DISCONNECT             GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN)
 
 #endif /* USB_USE_EXTERNAL_PULLUP */
 
 
#elif defined (USE_STM32373C_EVAL)
 
  #define USB_DISCONNECT                      GPIOC  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_5
 
  #define RCC_AHBPeriph_GPIO_DISCONNECT       RCC_AHBPeriph_GPIOC
 
 
#elif defined (USE_STM32303C_EVAL)
 
  #define USB_DISCONNECT                      GPIOB  
 
  #define USB_DISCONNECT_PIN                  GPIO_Pin_8
 
 
  #define RCC_AHBPeriph_GPIO_DISCONNECT       RCC_AHBPeriph_GPIOB
 
#endif /* USE_STM3210B_EVAL */
 
#endif /* USB_USE_EXTERNAL_PULLUP */
 
 
/* Exported macro ------------------------------------------------------------*/
 
/* Exported functions ------------------------------------------------------- */
 
 
#endif /* __PLATFORM_CONFIG_H */
 
 
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
0 comments (0 inline, 0 general)