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 *//*** }*//*** }*/主要型号讨论