void usart1_init(uint32_t bound)
{
rcu_periph_clock_enable(RCU_GPIOA); /* 使能GPIOA时钟 */
rcu_periph_clock_enable(RCU_USART1); /* 使能串口时钟 */
gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_2);
gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_3);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3);
usart_deinit(USART1); /* 复位USART0 */
usart_baudrate_set(USART1, bound); /* 设置波特率 */
usart_stop_bit_set(USART1, USART_STB_1BIT); /* 一个停止位 */
usart_word_length_set(USART1, USART_WL_8BIT); /* 字长为8位数据格式 */
usart_parity_config(USART1, USART_PM_NONE); /* 无奇偶校验位 */
usart_transmit_config(USART1, USART_TRANSMIT_ENABLE); /* 使能发送 */
usart_receive_config(USART1, USART_RECEIVE_ENABLE); /* 使能接收 */
usart_enable(USART1); /* 使能串口 */
}
void uart1_dma_config(void)
{
dma_single_data_parameter_struct dma_init_struct;
rcu_periph_clock_enable(RCU_DMA0);
dma_deinit(DMA0, DMA_CH6); //DMA0通道6串口1发送配置
dma_init_struct.direction = DMA_MEMORY_TO_PERIPH;
dma_init_struct.memory0_addr = (uint32_t)buffer;
dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE;
dma_init_struct.periph_memory_width = DMA_PERIPH_WIDTH_8BIT;
dma_init_struct.number = BUFFER_SIZE;
dma_init_struct.periph_addr = (uint32_t)&USART_DATA(USART1);
dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_DISABLE;
dma_init_struct.priority = DMA_PRIORITY_ULTRA_HIGH;
dma_single_data_mode_init(DMA0, DMA_CH6,&dma_init_struct);
/* configure DMA mode */
dma_circulation_disable(DMA0, DMA_CH6);
dma_channel_subperipheral_select(DMA0, DMA_CH6, DMA_SUBPERI4);
usart_dma_transmit_config(USART1, USART_TRANSMIT_DMA_ENABLE); //使能串口1 DMA发送
}
|