112 lines
2.9 KiB
C
112 lines
2.9 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file common.c
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief ͨ<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>
|
|||
|
*
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
* @attention
|
|||
|
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
/*------------------------------------------includes--------------------------------------------*/
|
|||
|
#include "drv_common.h"
|
|||
|
|
|||
|
/*-------------------------------------------functions------------------------------------------*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ϵͳʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void system_clock_config(void)
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD><EFBFBD><EFBFBD>ʵȴ<CAB5>ʱ<EFBFBD><CAB1> */
|
|||
|
std_flash_set_latency(FLASH_LATENCY_2CLK);
|
|||
|
|
|||
|
/* ʹ<><CAB9>RCH */
|
|||
|
std_rcc_rch_enable();
|
|||
|
while(!std_rcc_get_rch_ready());
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>PLL<4C><4C><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
std_rcc_pll_config(RCC_PLLSRC_RCH, RCC_PLLM_MUL12, RCC_PLLN_DIV2, RCC_PLL_DIV2);
|
|||
|
std_rcc_pll_enable();
|
|||
|
while(!std_rcc_get_pll_ready());
|
|||
|
|
|||
|
std_rcc_pll_output_enable();
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1>ԴΪPLL */
|
|||
|
std_rcc_set_sysclk_source(RCC_SYSCLK_SRC_PLLCLK);
|
|||
|
while(std_rcc_get_sysclk_source() != RCC_SYSCLK_SRC_STATUS_PLLCLK);
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>AHB<48><42>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD> */
|
|||
|
std_rcc_set_ahbdiv(RCC_HCLK_DIV1);
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>APB1<42><31>APB2<42><32>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD> */
|
|||
|
std_rcc_set_apb1div(RCC_PCLK1_DIV1);
|
|||
|
std_rcc_set_apb2div(RCC_PCLK2_DIV1);
|
|||
|
|
|||
|
SystemCoreClockUpdate();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief GPIO <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void gpio_init(void)
|
|||
|
{
|
|||
|
std_gpio_init_t gpio_config = {0};
|
|||
|
/* GPIO<49><4F><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD><CAB9> */
|
|||
|
std_rcc_gpio_clk_enable(RCC_PERIPH_CLK_GPIOA);
|
|||
|
|
|||
|
/* USART1 GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PA2 ------> USART1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PA1 ------> USART1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
gpio_config.pin = GPIO_PIN_1|GPIO_PIN_2;
|
|||
|
gpio_config.mode = GPIO_MODE_ALTERNATE;
|
|||
|
gpio_config.output_type = GPIO_OUTPUT_PUSHPULL;
|
|||
|
gpio_config.pull = GPIO_PULLUP;
|
|||
|
gpio_config.alternate = GPIO_AF1_USART1;
|
|||
|
std_gpio_init(GPIOA, &gpio_config);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USART <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void usart_init(void)
|
|||
|
{
|
|||
|
/* USARTʱ<54><CAB1>ʹ<EFBFBD><CAB9> */
|
|||
|
std_rcc_apb2_clk_enable(RCC_PERIPH_CLK_USART1);
|
|||
|
|
|||
|
std_usart_init_t usart_init_t={0};
|
|||
|
|
|||
|
usart_init_t.baudrate = 115200;
|
|||
|
usart_init_t.wordlength = USART_WORDLENGTH_8BITS;
|
|||
|
usart_init_t.stopbits = USART_STOPBITS_1;
|
|||
|
usart_init_t.parity = USART_PARITY_NONE;
|
|||
|
usart_init_t.hardware_flow = USART_FLOWCONTROL_NONE;
|
|||
|
usart_init_t.direction = USART_DIRECTION_SEND_RECEIVE;
|
|||
|
|
|||
|
/* USART<52><54>ʼ<EFBFBD><CABC> */
|
|||
|
if(STD_OK != std_usart_init(USART1,&usart_init_t))
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
while(1);
|
|||
|
}
|
|||
|
std_usart_enable(USART1);
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>USART1<54>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC>Լ<EFBFBD>ʹ<EFBFBD><CAB9>USART1<54><31>NVIC<49>ж<EFBFBD> */
|
|||
|
NVIC_SetPriority(USART1_IRQn,NVIC_PRIO_1);
|
|||
|
NVIC_EnableIRQ(USART1_IRQn);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|