CIU32L030系列 串口代码例程和选型 技术讨论 支持

/**

* @brief UART��ʼ��

* @param uartx UART����

* @param uart_init_param UART��ʼ���ṹ��

* @retval std_status_t ���س�ʼ�����ý��

*/

std_status_t std_uart_init(UART_t *uartx,std_uart_init_t *uart_init_param)

{

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

/* ������ */

if(std_uart_baudrate_config(uartx,uart_init_param->baudrate) != STD_OK)

{

return STD_ERR;

}

return STD_OK;

}


/**

* @brief UARTȥ��ʼ��

* @param uartx UART����

* @retval ��

*/

void std_uart_deinit(UART_t *uartx)

{

if(uartx == UART1)

{

/* ��λUART1 */

std_rcc_apb2_reset(RCC_PERIPH_RESET_UART1);

/* �ر�UART1ʱ�� */

std_rcc_apb2_clk_disable(RCC_PERIPH_CLK_UART1);

}

else if(uartx == UART2)

{

/* ��λUART2 */

std_rcc_apb1_reset(RCC_PERIPH_RESET_UART2);

/* �ر�UART2ʱ�� */

std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_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;

}


/**

* @brief ����UART������

* @param uartx UART����

* @param baudrate ������

* @retval std_status_t ���ز��������ý��

*/

std_status_t std_uart_baudrate_config(UART_t *uartx, uint32_t baudrate)

{

uint32_t pclk;

uint32_t brr_value;

/* ��ȡUARTʱ��Ƶ�� */

pclk = std_rcc_get_pclkfreq();

brr_value = (((pclk) + ((baudrate) >> 1U)) / (baudrate));

/* BRRȡֵ��Χ[0x10,0xFFFF], �������0x10(0d16) */

if ((brr_value >= UART_BRR_MIN) && (brr_value <= UART_BRR_MAX))

{

uartx->BRR = (uint32_t)brr_value;

return STD_OK;

}

else

{

return STD_ERR;

}

}


/**

* @}

*/

#endif /* STD_UART_PERIPHERAL_USED */

/**

* @}

*/

/**

* @}

*/

主要型号讨论