Add STM32F429I-DISCO1 support(default serial:USART1).

This commit is contained in:
Martin Foo
2017-07-02 18:26:52 +08:00
committed by Travis Geiselbrecht
parent 42ddc062f3
commit b66bd3e420
12 changed files with 236 additions and 1 deletions

View File

@@ -106,6 +106,11 @@
#define STM32F427_437xx #define STM32F427_437xx
#endif /* STM32F427X */ #endif /* STM32F427X */
/* Old STM32F427X definition, maintained for legacy purpose */
#ifdef STM32F429_439XX
#define STM32F429_439xx
#endif /* STM32F427X */
/* Tip: To avoid modifying this file each time you need to switch between these /* Tip: To avoid modifying this file each time you need to switch between these
devices, you can define the device in your toolchain compiler preprocessor. devices, you can define the device in your toolchain compiler preprocessor.
*/ */

View File

@@ -23,7 +23,6 @@ MODULE_SRCS += \
$(LOCAL_DIR)/src/stm32f4xx_flash.c \ $(LOCAL_DIR)/src/stm32f4xx_flash.c \
$(LOCAL_DIR)/src/stm32f4xx_flash_ramfunc.c \ $(LOCAL_DIR)/src/stm32f4xx_flash_ramfunc.c \
$(LOCAL_DIR)/src/stm32f4xx_fmpi2c.c \ $(LOCAL_DIR)/src/stm32f4xx_fmpi2c.c \
$(LOCAL_DIR)/src/stm32f4xx_fsmc.c \
$(LOCAL_DIR)/src/stm32f4xx_gpio.c \ $(LOCAL_DIR)/src/stm32f4xx_gpio.c \
$(LOCAL_DIR)/src/stm32f4xx_hash.c \ $(LOCAL_DIR)/src/stm32f4xx_hash.c \
$(LOCAL_DIR)/src/stm32f4xx_hash_md5.c \ $(LOCAL_DIR)/src/stm32f4xx_hash_md5.c \
@@ -46,6 +45,12 @@ MODULE_SRCS += \
$(LOCAL_DIR)/src/stm32f4xx_wwdg.c \ $(LOCAL_DIR)/src/stm32f4xx_wwdg.c \
$(LOCAL_DIR)/src/system_stm32f4xx.c $(LOCAL_DIR)/src/system_stm32f4xx.c
ifeq ($(STM32_CHIP),stm32f429)
MODULE_SRCS += $(LOCAL_DIR)/src/stm32f4xx_fmc.c
else
MODULE_SRCS += $(LOCAL_DIR)/src/stm32f4xx_fsmc.c
endif
include $(LOCAL_DIR)/CMSIS/rules.mk include $(LOCAL_DIR)/CMSIS/rules.mk
include make/module.mk include make/module.mk

View File

@@ -21,6 +21,10 @@ ifeq ($(STM32_CHIP),stm32f417)
FOUND_CHIP := true FOUND_CHIP := true
GLOBAL_DEFINES += STM32F40_41xxx GLOBAL_DEFINES += STM32F40_41xxx
endif endif
ifeq ($(STM32_CHIP),stm32f429)
FOUND_CHIP := true
GLOBAL_DEFINES += STM32F429_439xx
endif
ifeq ($(FOUND_CHIP),) ifeq ($(FOUND_CHIP),)
$(error unknown STM32F4xx chip $(STM32_CHIP)) $(error unknown STM32F4xx chip $(STM32_CHIP))

View File

@@ -95,7 +95,13 @@ DEFAULT_HANDLER(TIM8_UP_TIM13_IRQ);
DEFAULT_HANDLER(TIM8_TRG_COM_TIM14_IRQ); DEFAULT_HANDLER(TIM8_TRG_COM_TIM14_IRQ);
DEFAULT_HANDLER(TIM8_CC_IRQ); DEFAULT_HANDLER(TIM8_CC_IRQ);
DEFAULT_HANDLER(DMA1_Stream7_IRQ); DEFAULT_HANDLER(DMA1_Stream7_IRQ);
#ifdef STM32F40_41xxx
DEFAULT_HANDLER(FSMC_IRQ); DEFAULT_HANDLER(FSMC_IRQ);
#else
DEFAULT_HANDLER(FMC_IRQ);
#endif
DEFAULT_HANDLER(SDIO_IRQ); DEFAULT_HANDLER(SDIO_IRQ);
DEFAULT_HANDLER(TIM5_IRQ); DEFAULT_HANDLER(TIM5_IRQ);
DEFAULT_HANDLER(SPI3_IRQ); DEFAULT_HANDLER(SPI3_IRQ);
@@ -183,7 +189,11 @@ const void *const __SECTION(".text.boot.vectab2") vectab2[] = {
VECTAB_ENTRY(TIM8_TRG_COM_TIM14_IRQ), /* TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */ VECTAB_ENTRY(TIM8_TRG_COM_TIM14_IRQ), /* TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */
VECTAB_ENTRY(TIM8_CC_IRQ), /* TIM8 Capture Compare Interrupt */ VECTAB_ENTRY(TIM8_CC_IRQ), /* TIM8 Capture Compare Interrupt */
VECTAB_ENTRY(DMA1_Stream7_IRQ), /* DMA1 Stream7 Interrupt */ VECTAB_ENTRY(DMA1_Stream7_IRQ), /* DMA1 Stream7 Interrupt */
#ifdef STM32F40_41xxx
VECTAB_ENTRY(FSMC_IRQ), /* FSMC global Interrupt */ VECTAB_ENTRY(FSMC_IRQ), /* FSMC global Interrupt */
#else
VECTAB_ENTRY(FMC_IRQ), /* FSMC global Interrupt */
#endif
VECTAB_ENTRY(SDIO_IRQ), /* SDIO global Interrupt */ VECTAB_ENTRY(SDIO_IRQ), /* SDIO global Interrupt */
VECTAB_ENTRY(TIM5_IRQ), /* TIM5 global Interrupt */ VECTAB_ENTRY(TIM5_IRQ), /* TIM5 global Interrupt */
VECTAB_ENTRY(SPI3_IRQ), /* SPI3 global Interrupt */ VECTAB_ENTRY(SPI3_IRQ), /* SPI3 global Interrupt */

View File

@@ -0,0 +1,4 @@
include project/target/stm32f429i-disco.mk
include project/virtual/test.mk
# Console serial port is on pins PA2(TX) and PA3(RX)

View File

@@ -0,0 +1,7 @@
LOCAL_DIR := $(GET_LOCAL_DIR)
TARGET := stm32f429i-disco
# MODULES += \
# lib/gfx \

7
scripts/do-stm32f4-disco-test Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
export PROJECT=stm32f429i-disco-test
make -j8 &&
openocd -f board/stm32f429disc1.cfg \
-c "program build-$PROJECT/lk.bin reset exit 0x08000000"

View File

@@ -0,0 +1,24 @@
Notes on the STM32F4 Discovery Board
------------------------------------
http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f429idiscovery.html
http://www.digikey.com/product-detail/en/STM32F4DISCOVERY/497-11455-ND/2711743
LK Debug/Console UART
---------------------
- USART1 is used
- TX is A9
- RX is A10
- both are on the P1 header near the top
Using external SWD debug
------------------------
- Remove jumpers from CN3 4-pin header (near mini-usb connector)
- CN3 pin2 is SWCLK
- CN2 pin4 is SWDIO
- GND is available on P2, nearby

View File

@@ -0,0 +1,28 @@
/*
* Copyright (c) 2012 Travis Geiselbrecht
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __TARGET_DEBUGCONFIG_H
#define __TARGET_DEBUGCONFIG_H
#define DEBUG_UART 1
#endif

View File

@@ -0,0 +1,36 @@
/*
* Copyright (c) 2012 Travis Geiselbrecht
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __TARGET_GPIOCONFIG_H
#define __TARGET_GPIOCONFIG_H
#include <platform/gpio.h>
#define GPIO_USART1_TX GPIO(GPIO_PORT_A, 9)
#define GPIO_USART1_RX GPIO(GPIO_PORT_A, 10)
#define GPIO_LED0 GPIO(GPIO_PORT_D, 13) // LD3 - Orange
#define GPIO_LED1 GPIO(GPIO_PORT_D, 12) // LD4 - Green
#define GPIO_LED2 GPIO(GPIO_PORT_D, 14) // LD5 - Red
#define GPIO_LED3 GPIO(GPIO_PORT_D, 15) // LD6 - Blue
#endif

View File

@@ -0,0 +1,84 @@
/*
* Copyright (c) 2012 Travis Geiselbrecht
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <err.h>
#include <debug.h>
#include <trace.h>
#include <target.h>
#include <compiler.h>
#include <dev/gpio.h>
#include <stm32f4xx_usart.h>
#include <stm32f4xx_rcc.h>
#include <stm32f4xx_gpio.h>
#include <platform/stm32.h>
#include <platform/gpio.h>
#include <target/debugconfig.h>
#include <target/gpioconfig.h>
void target_early_init(void)
{
#ifdef DEBUG_UART
#if DEBUG_UART == 1
gpio_config(GPIO_USART1_TX, GPIO_STM32_AF |
GPIO_STM32_AFn(GPIO_AF_USART1) | GPIO_PULLUP);
gpio_config(GPIO_USART1_RX, GPIO_STM32_AF |
GPIO_STM32_AFn(GPIO_AF_USART1) | GPIO_PULLUP);
#else // !DEBUG_UART == 1
#warn DEBUG_UART only supports USART1!!!
#endif // DEBUG_UART
#endif // defined DEBUG_UART
stm32_debug_early_init();
/* configure some status leds */
gpio_config(GPIO_LED0, GPIO_OUTPUT);
gpio_config(GPIO_LED1, GPIO_OUTPUT);
gpio_config(GPIO_LED2, GPIO_OUTPUT);
gpio_config(GPIO_LED3, GPIO_OUTPUT);
}
void target_init(void)
{
TRACE_ENTRY;
stm32_debug_init();
TRACE_EXIT;
}
void target_set_debug_led(unsigned int led, bool on)
{
switch (led) {
case 0:
gpio_set(GPIO_LED0, on);
break;
case 1:
gpio_set(GPIO_LED1, on);
break;
case 2:
gpio_set(GPIO_LED2, on);
break;
case 3:
gpio_set(GPIO_LED3, on);
break;
}
}

View File

@@ -0,0 +1,21 @@
LOCAL_DIR := $(GET_LOCAL_DIR)
MODULE := $(LOCAL_DIR)
STM32_CHIP := stm32f429
PLATFORM := stm32f4xx
GLOBAL_DEFINES += \
ENABLE_UART1=1 \
TARGET_HAS_DEBUG_LED=1 \
HSE_VALUE=8000000 \
PLL_M_VALUE=8 \
PLL_N_VALUE=336 \
PLL_P_VALUE=2
MODULE_SRCS += \
$(LOCAL_DIR)/init.c
include make/module.mk