From 7f89aea2016ebde61b02914abc7984df50537f29 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 25 Jan 2017 22:02:09 +0100 Subject: o Improving the mcu-stm32 cmake library a bit. Starting on a USB example. --- apps/CMakeLists.txt | 2 +- apps/dma1/CMakeLists.txt | 19 ++++----- apps/test1/test1.cpp | 101 ----------------------------------------------- 3 files changed, 11 insertions(+), 111 deletions(-) delete mode 100644 apps/test1/test1.cpp (limited to 'apps') diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index ae23c31..90885ed 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -1,10 +1,10 @@ add_subdirectory(can1) add_subdirectory(cpp1) add_subdirectory(dma1) +add_subdirectory(i2c1) add_subdirectory(os1) add_subdirectory(os2) add_subdirectory(serial1) add_subdirectory(serial2) add_subdirectory(stepper1) add_subdirectory(stepper2) -add_subdirectory(test1) diff --git a/apps/dma1/CMakeLists.txt b/apps/dma1/CMakeLists.txt index 689e437..19321d8 100644 --- a/apps/dma1/CMakeLists.txt +++ b/apps/dma1/CMakeLists.txt @@ -1,19 +1,20 @@ +mcu_stm32_add_library(TARGET dma1-mcu-stm32 + DEVICE STM32F10X_MD + PARTS SPI GPIO DMA + DEFINES_VAR DEFINES_FROM_MCU_STM32) + add_executable(dma1.elf dma1.cpp - ${STM32F10X_STDPERIPH_LIB}/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c - ${STM32F10X_STDPERIPH_LIB}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c - ${STM32F10X_STDPERIPH_LIB}/Libraries/STM32F10x_StdPeriph_Driver/src/misc.c - ${STM32F10X_STDPERIPH_LIB}/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c - ${STM32F10X_STDPERIPH_LIB}/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c - ${STM32F10X_STDPERIPH_LIB}/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c - ${STM32F10X_STDPERIPH_LIB}/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c - $ + ${PLAYGROUND_DIR}/src/init_low.s ${PLAYGROUND_DIR}/src/init_high.cpp ${PLAYGROUND_DIR}/include/init_high.h + ${PLAYGROUND_DIR}/include/playground.h + ${PLAYGROUND_DIR}/src/debug.cpp ${PLAYGROUND_DIR}/include/debug.h ) target_include_directories(dma1.elf PUBLIC $ ) -target_compile_definitions(dma1.elf PUBLIC ${STM32F10X_STDPERIPH_DEFINES}) +target_compile_definitions(dma1.elf PUBLIC ${DEFINES_FROM_MCU_STM32}) target_link_libraries(dma1.elf tinyprintf) +target_link_libraries(dma1.elf dma1-mcu-stm32) set_target_properties(dma1.elf PROPERTIES LINK_FLAGS "-nostartfiles -T${CMAKE_SOURCE_DIR}/cmake/stm32.ld") add_extra_commands(dma1.elf) diff --git a/apps/test1/test1.cpp b/apps/test1/test1.cpp deleted file mode 100644 index a883876..0000000 --- a/apps/test1/test1.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "playground.h" - -extern "C" -__attribute__((naked)) -void HardFault_Handler_C(uint32_t *hardfault_args); - -extern "C" void high(); -extern "C" void low(); - -SCB_Type *__SCB = ((SCB_Type *) SCB_BASE); -//extern SCB_Type *__SCB; - -struct hardfault_data_t { - uint32_t r0; - uint32_t r1; - uint32_t r2; - uint32_t r3; - uint32_t r12; - uint32_t lr; - uint32_t pc; - uint32_t psr; -}; - -volatile struct hardfault_data_t *hardfault_data = (volatile struct hardfault_data_t *) 0x20000800; - -void HardFault_Handler_C(uint32_t *hardfault_args) { - hardfault_data->r0 = hardfault_args[0]; - hardfault_data->r1 = hardfault_args[1]; - hardfault_data->r2 = hardfault_args[2]; - hardfault_data->r3 = hardfault_args[3]; - hardfault_data->r12 = hardfault_args[4]; - hardfault_data->lr = hardfault_args[5]; - hardfault_data->pc = hardfault_args[6]; - hardfault_data->psr = hardfault_args[7]; - - halt(); -} - -void send_command(int command, void *message) { - bool active = (CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk) == CoreDebug_DHCSR_C_DEBUGEN_Msk; - - if (!active) { - return; - } - - __asm volatile ( - "mov r0, %[cmd];" - "mov r1, %[msg];" - "bkpt #0xAB" : : [cmd] "r"(command), [msg] "r"(message) : "r0", "r1", "memory" - ); -} - -size_t strlen(const char *s) { - size_t size = 0; - while (*s++ != '\0') size++; - return size; -} - -int run = 1; - -/* - * When we get there the stack pointer is set - */ -int main() { - SystemInit(); -// SystemCoreClockUpdate(); - - SCB->SHCSR |= SCB_SHCSR_USGFAULTENA_Msk | SCB_SHCSR_MEMFAULTPENDED_Msk | SCB_SHCSR_BUSFAULTENA_Msk; - - RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE); - RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, DISABLE); - - RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE); - RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, DISABLE); - - RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA, - ENABLE); - - GPIO_InitTypeDef init; - GPIO_StructInit(&init); - init.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_Init(GPIOB, &init); - - while (run) { -// GPIO_SetBits(GPIOA, GPIO_Pin_All); - GPIO_SetBits(GPIOB, GPIO_Pin_All); -// GPIO_SetBits(GPIOC, GPIO_Pin_All); - -// GPIO_ResetBits(GPIOA, GPIO_Pin_All); - GPIO_ResetBits(GPIOB, GPIO_Pin_All); -// GPIO_ResetBits(GPIOC, GPIO_Pin_All); - } - - return 0; -} -- cgit v1.2.3