board.c 2.4 KB
Newer Older
M
Ming, Bai 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/*
 * File      : board.c
 * This file is part of RT-Thread RTOS
 * COPYRIGHT (C) 2009 RT-Thread Develop Team
 *
 * The license and distribution terms for this file may be
 * found in the file LICENSE in this distribution or at
 * http://www.rt-thread.org/license/LICENSE
 *
 * Change Logs:
 * Date           Author       Notes
 * 2009-01-05     Bernard      first implementation
 */

#include <rthw.h>
#include <rtthread.h>

#include "stm32f4xx.h"
#include "board.h"
20 21
#include "usart.h"
#include "gpio.h"
M
Ming, Bai 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

/**
 * @addtogroup STM32
 */

/*@{*/

/*******************************************************************************
* Function Name  : NVIC_Configuration
* Description    : Configures Vector Table base location.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void NVIC_Configuration(void)
{
#ifdef  VECT_TAB_RAM
wzyy2's avatar
wzyy2 已提交
39 40
    /* Set the Vector Table base location at 0x20000000 */
    NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
M
Ming, Bai 已提交
41
#else  /* VECT_TAB_FLASH  */
wzyy2's avatar
wzyy2 已提交
42 43
    /* Set the Vector Table base location at 0x08000000 */
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
M
Ming, Bai 已提交
44 45 46 47 48 49 50 51 52 53 54 55 56 57
#endif

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
}

/*******************************************************************************
 * Function Name  : SysTick_Configuration
 * Description    : Configures the SysTick for OS tick.
 * Input          : None
 * Output         : None
 * Return         : None
 *******************************************************************************/
void  SysTick_Configuration(void)
{
wzyy2's avatar
wzyy2 已提交
58 59
    RCC_ClocksTypeDef  rcc_clocks;
    rt_uint32_t         cnts;
M
Ming, Bai 已提交
60

wzyy2's avatar
wzyy2 已提交
61
    RCC_GetClocksFreq(&rcc_clocks);
M
Ming, Bai 已提交
62

wzyy2's avatar
wzyy2 已提交
63 64
    cnts = (rt_uint32_t)rcc_clocks.HCLK_Frequency / RT_TICK_PER_SECOND;
    cnts = cnts / 8;
M
Ming, Bai 已提交
65

wzyy2's avatar
wzyy2 已提交
66 67
    SysTick_Config(cnts);
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
M
Ming, Bai 已提交
68 69 70 71 72 73 74 75
}

/**
 * This is the timer interrupt service routine.
 *
 */
void SysTick_Handler(void)
{
wzyy2's avatar
wzyy2 已提交
76 77
    /* enter interrupt */
    rt_interrupt_enter();
M
Ming, Bai 已提交
78

wzyy2's avatar
wzyy2 已提交
79
    rt_tick_increase();
M
Ming, Bai 已提交
80

wzyy2's avatar
wzyy2 已提交
81 82
    /* leave interrupt */
    rt_interrupt_leave();
M
Ming, Bai 已提交
83 84 85 86 87 88 89
}

/**
 * This function will initial STM32 board.
 */
void rt_hw_board_init()
{
wzyy2's avatar
wzyy2 已提交
90 91
    /* NVIC Configuration */
    NVIC_Configuration();
M
Ming, Bai 已提交
92

wzyy2's avatar
wzyy2 已提交
93 94
    /* Configure the SysTick */
    SysTick_Configuration();
M
Ming, Bai 已提交
95

Z
zylx 已提交
96 97
    rt_components_board_init();
 
M
Ming, Bai 已提交
98
#ifdef RT_USING_CONSOLE
99
    rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
Z
zylx 已提交
100
#endif	
M
Ming, Bai 已提交
101 102 103
}

/*@}*/