| 
 
| void uart_init(unsigned int bound) {
 //UART 3?ê??ˉéè??
 UART1_Handler.Instance=USART1;                                            //USART1
 UART1_Handler.Init.BaudRate=bound;                                            //波特率
 UART1_Handler.Init.WordLength=UART_WORDLENGTH_8B;                       //字长为8位格式
 UART1_Handler.Init.StopBits=UART_STOPBITS_1;                            //停止位为1
 UART1_Handler.Init.Parity=UART_PARITY_NONE;                                    //无奇偶校验位
 UART1_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;                       //无硬件流控
 UART1_Handler.Init.Mode=UART_MODE_TX_RX;                                    //收发模式
 HAL_UART_Init(&UART1_Handler);                                            //HAL_UART_Init()会使能UART1
 
 HAL_UART_Receive_IT(&UART1_Handler, (unsigned char *)aRxBuffer, RXBUFFERSIZE);//开启接收中断
 
 }
 
 //UART底层初始化,时钟使能,引脚配置,中断配置
 //huart:串口句柄
 
 void HAL_UART_MspInit(UART_HandleTypeDef *huart)
 {
 //GPIO端口设置
 GPIO_InitTypeDef GPIO_Initure;
 
 if(huart->Instance==USART1)//
 {
 //                __HAL_RCC_GPIOA_CLK_ENABLE();                        //使能GPIOA时钟
 //                __HAL_RCC_USART1_CLK_ENABLE();                        //使能USART1时钟
 //
 //                GPIO_Initure.Pin=GPIO_PIN_9;                        //PA9
 //                GPIO_Initure.Mode=GPIO_MODE_AF_PP;                //复用推挽输出
 //                GPIO_Initure.Pull=GPIO_PULLUP;                        //上拉
 //                GPIO_Initure.Speed=GPIO_SPEED_FAST;                //高速
 //                GPIO_Initure.Alternate=GPIO_AF7_USART1;        //复用为USART1
 //                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //初始化PA9
 //
 //                GPIO_Initure.Pin=GPIO_PIN_10;                        //PA10
 //                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //初始化PA10
 
 __HAL_RCC_GPIOB_CLK_ENABLE();                        //使能GPIO时钟
 __HAL_RCC_USART1_CLK_ENABLE();                        //使能USART1时钟
 
 GPIO_Initure.Pin=GPIO_PIN_14;                        //PB14
 GPIO_Initure.Mode=GPIO_MODE_AF_PP;                //复用推挽输出
 GPIO_Initure.Pull=GPIO_PULLUP;                        //上拉
 GPIO_Initure.Speed=GPIO_SPEED_FAST;                //高速
 GPIO_Initure.Alternate=GPIO_AF7_USART1;                //复用为USART1
 HAL_GPIO_Init(GPIOB,&GPIO_Initure);                   //初始化PB14
 
 GPIO_Initure.Pin=GPIO_PIN_15;                        //PB15
 HAL_GPIO_Init(GPIOB,&GPIO_Initure);                   //初始化PB15
 
 
 
 #if EN_USART1_RX
 //__HAL_UART_ENABLE_IT(huart,UART_IT_RXNE);       //开启接收中断
 HAL_NVIC_EnableIRQ(USART1_IRQn);                //使能USART1中断通道
 HAL_NVIC_SetPriority(USART1_IRQn,3,3);                //抢占优先级3  子优先级3
 #endif
 }
 
 }
 
 上面是我对STM32F767单片机串口初始化的程序,我用的是USART1,端口PB14和PB15,红色字体部分是PA9和PA10的串口初始化,测试没有问题,改成PB14和PB15后就不行了,有谁知道是什么问题么?
 
 
 | 
 |