CIU32_L051_M307R/drivers/src/drv_common.c

112 lines
2.9 KiB
C
Raw Normal View History

/************************************************************************************************/
/**
* @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);
}