打印
[STM32]

STM32F767串口初始化问题

[复制链接]
1361|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
天命风流|  楼主 | 2021-11-24 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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后就不行了,有谁知道是什么问题么?

使用特权

评论回复

相关帖子

沙发
天命风流|  楼主 | 2021-11-24 10:10 | 只看该作者

使用特权

评论回复
板凳
天命风流|  楼主 | 2021-11-24 10:15 | 只看该作者
上面是我对STM32F767单片机串口初始化的程序,我用的是USART1,端口PB14和PB15,红色字体部分是PA9和PA10的串口初始化,测试没有问题,改成PB14和PB15后就不行了,有谁知道是什么问题么?

使用特权

评论回复
地板
xinyue_z| | 2021-11-24 10:29 | 只看该作者
对应的AF要选择对,就是  GPIO_Initure.Alternate=GPIO_AF7_USART1;  貌似PB14,PB15需要设置GPIO_AF4_

使用特权

评论回复
5
l4157| | 2021-11-24 12:42 | 只看该作者
CubeMX好用得不得了,要是国产芯片有这样 的工具就好了!

使用特权

评论回复
6
qin552011373| | 2021-11-24 15:31 | 只看该作者
用工具自动化生成啊

使用特权

评论回复
7
ningling_21| | 2021-11-25 08:55 | 只看该作者
是不是需要重映射?

使用特权

评论回复
8
天命风流|  楼主 | 2021-12-2 15:31 | 只看该作者
xinyue_z 发表于 2021-11-24 10:29
对应的AF要选择对,就是  GPIO_Initure.Alternate=GPIO_AF7_USART1;  貌似PB14,PB15需要设置GPIO_AF4_ ...

高人啊   问题解决了   谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

91

主题

1175

帖子

6

粉丝