diff options
| author | guo <[email protected]> | 2021-10-26 07:50:40 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-10-26 07:50:40 +0800 |
| commit | c8ee4cc67dd1815d1b0ead1bcd24156da6ab87de (patch) | |
| tree | 1f392373790a657725dd47def54196a42b1e57f5 /bsp/tkm32F499/drivers/board.c | |
| parent | ab36707b681ad8d3374e1d6a01fdeab309de80e7 (diff) | |
| parent | 8a180d5dd31bced87082af4ee819e5b1fa79211d (diff) | |
Merge pull request #5182 from NU-LL/tkm32f499
Diffstat (limited to 'bsp/tkm32F499/drivers/board.c')
| -rw-r--r-- | bsp/tkm32F499/drivers/board.c | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/bsp/tkm32F499/drivers/board.c b/bsp/tkm32F499/drivers/board.c new file mode 100644 index 0000000000..6e5eb5791d --- /dev/null +++ b/bsp/tkm32F499/drivers/board.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2017-2019, MindMotion AE Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-02 spaceman first version + */ +#include <rtthread.h> +#include <rthw.h> +#include <board.h> +#include <drv_uart.h> +// extern uint32_t SystemCoreClock; +// extern void SystemInit(void); + +#ifdef RT_USING_FINSH +#include <finsh.h> +static void reboot(uint8_t argc, char **argv) +{ + rt_hw_cpu_reset(); +} +MSH_CMD_EXPORT(reboot, Reboot System); +#endif /* RT_USING_FINSH */ + +static void bsp_clock_config(void) +{ + RemapVtorTable(); + SystemClk_HSEInit(RCC_PLLMul_20);//启动PLL时钟,12MHz*20=240MHz + NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2:2,全局性函数,仅需设置一次 + + uint32_t sysclk = 0; + getSystemClock(&sysclk); + + SysTick_Config(sysclk / RT_TICK_PER_SECOND); + SysTick->CTRL |= 0x00000004UL; +} + +void SysTick_Handler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + rt_tick_increase(); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +void rt_hw_us_delay(rt_uint32_t us) +{ + rt_uint32_t ticks; + rt_uint32_t told, tnow, tcnt = 0; + rt_uint32_t reload = SysTick->LOAD; + + ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); + told = SysTick->VAL; + while (1) + { + tnow = SysTick->VAL; + if (tnow != told) + { + if (tnow < told) + { + tcnt += told - tnow; + } + else + { + tcnt += reload - tnow + told; + } + told = tnow; + if (tcnt >= ticks) + { + break; + } + } + } +} + +void rt_hw_board_init() +{ + bsp_clock_config(); +#if defined(RT_USING_HEAP) + rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); +#endif + // volatile uint16_t i=0; + // rt_hw_uart_init(); + // i = UINT16_MAX; + // while(i--); //wait for a while after uart initiated. +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif +#ifdef RT_USING_CONSOLE + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); +#endif +} |
