| void usart1_init(u32 bound) { ????//GPIO端口初始化 ????GPIO_InitTypeDef GPIO_InitStructure; ????USART_InitTypeDef USART_InitStructure; ????NVIC_InitTypeDef NVIC_InitStructure; ????RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA時鐘 ????RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1時鐘 ????//串口1對應引腳復用映射 ????GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); ????GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); ????//USART1端口配置 ????GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; ????GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; ????GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;??? ????GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; ????GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; ????GPIO_Init(GPIOA,&GPIO_InitStructure); ????//USART1串口初始化配置 ????USART_InitStructure.USART_BaudRate = bound; ????USART_InitStructure.USART_WordLength = USART_WordLength_8b; ????USART_InitStructure.USART_StopBits = USART_StopBits_1; ????USART_InitStructure.USART_Parity = USART_Parity_No; ????USART_InitStructure.USART_HardwareFlowControl =???????????????????? USART_HardwareFlowControl_None; ????USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;??? ????USART_Init(USART1, &USART_InitStructure); ? ????USART_Cmd(USART1, ENABLE); //使能串口1 ????//開啟串口接收中斷 ????USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); ????//USART1 NVIC配置 ????NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; ????NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3; ????NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;??? ????NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;??? ????NVIC_Init(&NVIC_InitStructure);??? } |