文档介绍:软件:KeilMDK
芯片:STM32F103/STM32F107
串口数量:4
备注:4个串口均配置为DMA读取
//串口1初始化函数
void uart1_init(u32 bound)
{
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
USART_DeInit(USART1); //复位串口1
//USART1_TX
= GPIO_Pin_9; //
= GPIO_Speed_50MHz;
= GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9
//USART1_RX
= GPIO_Pin_10;
= GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA10
//Usart1 NVIC 配置
= USART1_IRQn;
=1 ;//抢占优先级3
= 0; //子优先级3
= ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
/*Enable DMA Channel4 Interrupt */
= DMA1_Channel4_IRQn;
= 1;
= 1;
= ENABLE;
NVIC_Init(&NVIC_InitStructure);
/*Enable DMA Channel5 Interrupt */
= DMA1_Channel5_IRQn;
= 2;
= 0;
= ENABLE;
NVIC_Init(&NVIC_InitStructure);
//USART 参数初始化设置
= bound;//一般设置为9600;
= USART_WordLength_8b;//字长为8位数据格式
= U