203 lines
5.3 KiB
C
203 lines
5.3 KiB
C
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD> */
|
|||
|
#include "board.h"
|
|||
|
|
|||
|
/* RT-Thread<61><64><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD> */
|
|||
|
#include <rthw.h>
|
|||
|
#include <rtthread.h>
|
|||
|
|
|||
|
|
|||
|
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
|
|||
|
#define RT_HEAP_SIZE 1024
|
|||
|
/* <20><><EFBFBD>ڲ<EFBFBD>SRAM<41><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>־<EFBFBD>̬<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ϊrtt<74>Ķѿռ䣬<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ4KB */
|
|||
|
static uint32_t rt_heap[RT_HEAP_SIZE];
|
|||
|
RT_WEAK void *rt_heap_begin_get(void)
|
|||
|
{
|
|||
|
return rt_heap;
|
|||
|
}
|
|||
|
|
|||
|
RT_WEAK void *rt_heap_end_get(void)
|
|||
|
{
|
|||
|
return rt_heap + RT_HEAP_SIZE;
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
* @attention
|
|||
|
* RTT<EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صij<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<EFBFBD>ŵ<EFBFBD>board.c<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<EFBFBD>ŵ<EFBFBD>main.c<EFBFBD>ļ<EFBFBD>Ҳ<EFBFBD>ǿ<EFBFBD><EFBFBD>Եġ<EFBFBD>
|
|||
|
*/
|
|||
|
void rt_hw_board_init()
|
|||
|
{
|
|||
|
/* ϵͳʱ<CDB3>ӳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>480MHz */
|
|||
|
SystemClock_Config();
|
|||
|
|
|||
|
/* <20><>ʼ<EFBFBD><CABC>SysTick */
|
|||
|
HAL_SYSTICK_Config( HAL_RCC_GetSysClockFreq() / RT_TICK_PER_SECOND );
|
|||
|
|
|||
|
/* Ӳ<><D3B2>BSP<53><50>ʼ<EFBFBD><CABC>ͳͳ<CDB3><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA3AC><EFBFBD><EFBFBD>LED<45><44><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>LCD<43><44> */
|
|||
|
|
|||
|
/* LED <20>˿ڳ<CBBF>ʼ<EFBFBD><CABC> */
|
|||
|
LED_GPIO_Config();
|
|||
|
|
|||
|
/* usart <20>˿ڳ<CBBF>ʼ<EFBFBD><CABC> */
|
|||
|
DEBUG_USART_Config();
|
|||
|
|
|||
|
/* KEY <20>˿ڳ<CBBF>ʼ<EFBFBD><CABC> */
|
|||
|
Key_GPIO_Config();
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (use INIT_BOARD_EXPORT()) */
|
|||
|
#ifdef RT_USING_COMPONENTS_INIT
|
|||
|
rt_components_board_init();
|
|||
|
#endif
|
|||
|
|
|||
|
#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
|
|||
|
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
|||
|
#endif
|
|||
|
|
|||
|
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
|
|||
|
rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief SysTick<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
* @attention
|
|||
|
* SysTick<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ̼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>stm32f10x_it.c<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD>board.c<EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>stm32f10x_it.c<EFBFBD>е<EFBFBD>ע<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD>
|
|||
|
*/
|
|||
|
void SysTick_Handler(void)
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
|
|||
|
rt_interrupt_enter();
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
rt_tick_increase();
|
|||
|
|
|||
|
/* <20>뿪<EFBFBD>ж<EFBFBD> */
|
|||
|
rt_interrupt_leave();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ӳ<EFBFBD>䴮<EFBFBD><EFBFBD>DEBUG_USARTx<EFBFBD><EFBFBD>rt_kprintf()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* Note<EFBFBD><EFBFBD>DEBUG_USARTx<EFBFBD><EFBFBD><EFBFBD><EFBFBD>bsp_usart.h<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ꣬Ĭ<EFBFBD><EFBFBD>ʹ<EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>1
|
|||
|
* @param str<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
* @attention
|
|||
|
*
|
|||
|
*/
|
|||
|
void rt_hw_console_output(const char *str)
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD> */
|
|||
|
rt_enter_critical();
|
|||
|
|
|||
|
/* ֱ<><D6B1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
while (*str!='\0')
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD> */
|
|||
|
if (*str=='\n')
|
|||
|
{
|
|||
|
//HAL_UART_Transmit( &UartHandle,(uint8_t *)'\r',1,1000);
|
|||
|
}
|
|||
|
HAL_UART_Transmit( &UartHandle,(uint8_t *)(str++),1,1000);
|
|||
|
}
|
|||
|
|
|||
|
/* <20>˳<EFBFBD><CBB3>ٽ<EFBFBD><D9BD><EFBFBD> */
|
|||
|
rt_exit_critical();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief System Clock <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* system Clock <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
* System Clock source = PLL (HSE)
|
|||
|
* SYSCLK(Hz) = 480000000 (CPU Clock)
|
|||
|
* HCLK(Hz) = 240000000 (AXI and AHBs Clock)
|
|||
|
* AHB Prescaler = 2
|
|||
|
* D1 APB3 Prescaler = 2 (APB3 Clock 120MHz)
|
|||
|
* D2 APB1 Prescaler = 2 (APB1 Clock 120MHz)
|
|||
|
* D2 APB2 Prescaler = 2 (APB2 Clock 120MHz)
|
|||
|
* D3 APB4 Prescaler = 2 (APB4 Clock 120MHz)
|
|||
|
* HSE Frequency(Hz) = 25000000
|
|||
|
* PLL_M = 5
|
|||
|
* PLL_N = 192
|
|||
|
* PLL_P = 2
|
|||
|
* PLL_Q = 4
|
|||
|
* PLL_R = 2
|
|||
|
* VDD(V) = 3.3
|
|||
|
* Flash Latency(WS) = 4
|
|||
|
* @param None
|
|||
|
* @retval None
|
|||
|
*/
|
|||
|
static void SystemClock_Config(void)
|
|||
|
{
|
|||
|
RCC_ClkInitTypeDef RCC_ClkInitStruct;
|
|||
|
RCC_OscInitTypeDef RCC_OscInitStruct;
|
|||
|
HAL_StatusTypeDef ret = HAL_OK;
|
|||
|
|
|||
|
/*ʹ<>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8><EFBFBD> */
|
|||
|
MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳƵ<CDB3><C6B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ģ<EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳƵ<EFBFBD>ʵĵ<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ĸ<EFBFBD><EFBFBD>¿<EFBFBD><EFBFBD>Բο<EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲᡣ */
|
|||
|
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
|
|||
|
|
|||
|
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>HSE<53><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>HSE<53><45>ΪԴ<CEAA><D4B4><EFBFBD><EFBFBD>PLL */
|
|||
|
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
|||
|
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
|||
|
RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
|
|||
|
RCC_OscInitStruct.CSIState = RCC_CSI_OFF;
|
|||
|
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
|||
|
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
|||
|
|
|||
|
RCC_OscInitStruct.PLL.PLLM = 5;
|
|||
|
RCC_OscInitStruct.PLL.PLLN = 192;
|
|||
|
RCC_OscInitStruct.PLL.PLLP = 2;
|
|||
|
RCC_OscInitStruct.PLL.PLLR = 2;
|
|||
|
RCC_OscInitStruct.PLL.PLLQ = 4;
|
|||
|
|
|||
|
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
|
|||
|
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;
|
|||
|
ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
|||
|
if(ret != HAL_OK)
|
|||
|
{
|
|||
|
|
|||
|
while(1) { ; }
|
|||
|
}
|
|||
|
|
|||
|
/* ѡ<><D1A1>PLL<4C><4C>Ϊϵͳʱ<CDB3><CAB1>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӷ<EFBFBD>Ƶ<EFBFBD><C6B5> */
|
|||
|
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | \
|
|||
|
RCC_CLOCKTYPE_HCLK | \
|
|||
|
RCC_CLOCKTYPE_D1PCLK1 | \
|
|||
|
RCC_CLOCKTYPE_PCLK1 | \
|
|||
|
RCC_CLOCKTYPE_PCLK2 | \
|
|||
|
RCC_CLOCKTYPE_D3PCLK1);
|
|||
|
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
|||
|
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
|
|||
|
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
|
|||
|
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
|
|||
|
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
|
|||
|
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
|
|||
|
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
|
|||
|
ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4);
|
|||
|
if(ret != HAL_OK)
|
|||
|
{
|
|||
|
while(1) { ; }
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/****************************END OF FILE***************************/
|