void uart1_init(uint16_t bound)
{
gpio_init_type gpio_init_struct;
/* enable the uart1 and gpio clock */
crm_periph_clock_enable(CRM_USART1_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK,TRUE);
gpio_default_para_init(&gpio_init_struct);
/* configure the uart2 tx,rx */
/* rx PA10*/
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_pins = GPIO_PINS_10;
gpio_init_struct.gpio_mode = GPIO_MODE_INPUT; /* 输入模式 */
gpio_init_struct.gpio_pull = GPIO_PULL_UP; /* 上拉 */
gpio_init(GPIOA, &gpio_init_struct);
/* tx PA9*/
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_pins = GPIO_PINS_9;
gpio_init_struct.gpio_mode = GPIO_MODE_MUX; /* 复用模式 */
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL; /* 推挽输出 */
gpio_init(GPIOA, &gpio_init_struct);
/* configure uart1 param */
usart_init(USART1, bound, USART_DATA_8BITS, USART_STOP_1_BIT); /* 设置波特率、数据位、停止位 */
usart_hardware_flow_control_set(USART1,USART_HARDWARE_FLOW_NONE); /* 无硬件流操作*/
usart_parity_selection_config(USART1,USART_PARITY_EVEN); /* 奇校验 */
usart_flag_clear(USART1, USART_RDBF_FLAG);
usart_receiver_enable(USART1, TRUE); /* 使能串口接收 */
usart_transmitter_enable(USART1, TRUE); /* 使能串口发送 */
usart_interrupt_enable(USART1, USART_RDBF_INT, TRUE); /* 使能接收中断 */
usart_interrupt_enable(USART1, USART_IDLE_INT, TRUE); /* 使能空闲中断 */
usart_enable(USART1, TRUE);
nvic_irq_enable(USART1_IRQn, 0, 0); /* 优先级 0,次优先级 0 */
}
|