123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /************************************************************************************************/
- /**
- * @file ciu32f003_std_uart.c
- * @author MCU Ecosystem Development Team
- * @brief UART STD库驱动。
- * 实现UART初始化等API。
- *
- *
- **************************************************************************************************
- * @attention
- * Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
- *
- **************************************************************************************************
- */
- /************************************************************************************************/
- /**
- * @addtogroup CIU32F003_STD_Driver
- * @{
- */
- /**
- * @addtogroup UART
- * @{
- *
- */
- /************************************************************************************************/
- /*------------------------------------------includes--------------------------------------------*/
- #include "ciu32f003_std.h"
- #ifdef STD_UART_PERIPHERAL_USED
- /*-------------------------------------------functions------------------------------------------*/
- /************************************************************************************************/
- /**
- * @addtogroup UART_External_Functions
- * @{
- *
- */
- /************************************************************************************************/
- /**
- * @brief UART初始化
- * @param uartx UART外设
- * @param uart_init_param UART初始化结构体
- * @retval 无
- */
- void std_uart_init(UART_t *uartx,std_uart_init_t *uart_init_param)
- {
- uint32_t pclk;
-
- /* 设置 UART 字长 、收发模式、校验*/
- MODIFY_REG(uartx->CR1,
- (UART_CR1_WL|UART_CR1_TE|UART_CR1_RE|UART_CR1_PTS|UART_CR1_PEN),
- (uart_init_param->wordlength|uart_init_param->direction|uart_init_param->parity));
-
- /* 设置UART停止位 */
- std_uart_set_stopbits(uartx,uart_init_param->stopbits);
-
- /* 获取UART时钟频率 */
- pclk = std_rcc_get_pclkfreq();
-
- /* BRR取值范围[0x10,0xFFFF] */
- if(uart_init_param->baudrate != 0)
- {
- uartx->BRR = (pclk + (uart_init_param->baudrate>>1))/uart_init_param->baudrate;
- }
- }
- /**
- * @brief UART去初始化
- * @param uartx UART外设
- * @retval 无
- */
- void std_uart_deinit(UART_t *uartx)
- {
- /* UART 的RCC时钟复位 */
- if(uartx == UART1)
- {
- std_rcc_apb2_reset(RCC_PERIPH_RESET_UART1);
- }
- else if(uartx == UART2)
- {
- std_rcc_apb1_reset(RCC_PERIPH_RESET_UART2);
- }
- }
- /**
- * @brief UART结构体初始化
- * @param uart_init_struct UART初始化结构体
- * @retval 无
- */
- void std_uart_struct_init(std_uart_init_t *uart_init_struct)
- {
- uart_init_struct->baudrate = 115200;
- uart_init_struct->wordlength = UART_WORDLENGTH_8BITS;
- uart_init_struct->stopbits = UART_STOPBITS_1;
- uart_init_struct->direction = UART_DIRECTION_SEND_RECEIVE;
- uart_init_struct->parity = UART_PARITY_NONE;
- }
- /**
- * @}
- */
- #endif /* STD_UART_PERIPHERAL_USED */
- /**
- * @}
- */
- /**
- * @}
- */
|