/************************************************************************************************/ /** * @file common.c * @author MCU Ecosystem Development Team * @brief 通用函数或本外设相关的配置实现函数。 * * ************************************************************************************************** * @attention * Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved. * ************************************************************************************************** */ /*------------------------------------------includes--------------------------------------------*/ #include "drv_common.h" /*-------------------------------------------functions------------------------------------------*/ /** * @brief 系统时钟配置 * @retval 无 */ void system_clock_config(void) { /* 设置Flash读访问等待时间 */ std_flash_set_latency(FLASH_LATENCY_2CLK); /* 使能RCH */ std_rcc_rch_enable(); while(!std_rcc_get_rch_ready()); /* 配置PLL相关参数,并使能 */ 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(); /* 设置系统时钟源为PLL */ std_rcc_set_sysclk_source(RCC_SYSCLK_SRC_PLLCLK); while(std_rcc_get_sysclk_source() != RCC_SYSCLK_SRC_STATUS_PLLCLK); /* 设置AHB分频因子 */ std_rcc_set_ahbdiv(RCC_HCLK_DIV1); /* 设置APB1、APB2分频因子 */ std_rcc_set_apb1div(RCC_PCLK1_DIV1); std_rcc_set_apb2div(RCC_PCLK2_DIV1); SystemCoreClockUpdate(); } /** * @brief GPIO 初始化 * @retval 无 */ void gpio_init(void) { std_gpio_init_t gpio_config = {0}; /* GPIO外设时钟使能 */ std_rcc_gpio_clk_enable(RCC_PERIPH_CLK_GPIOA); /* USART1 GPIO引脚配置 PA2 ------> USART1发送引脚 PA1 ------> USART1接收引脚 */ 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 初始化 * @retval 无 */ void usart_init(void) { /* USART时钟使能 */ 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初始化 */ if(STD_OK != std_usart_init(USART1,&usart_init_t)) { /* 波特率配置不正确处理代码 */ while(1); } std_usart_enable(USART1); /* 配置USART1中断优先级以及使能USART1的NVIC中断 */ NVIC_SetPriority(USART1_IRQn,NVIC_PRIO_1); NVIC_EnableIRQ(USART1_IRQn); }