OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4053|回复: 5

STM32F767用两个串口问题,只有一个MSP函数怎么办??急急急,谢谢

[复制链接]

10

主题

23

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-10-3
在线时间
15 小时
发表于 2018-3-8 17:19:40 | 显示全部楼层 |阅读模式
3金钱
STM32F767想用串口1和串口2,但是MSP函数只有一个,编译会出现重复定义报错,这个问题怎么解决??可以有一个串口不用MSP函数么???、下面是串口1  MSP函数和串口2MSP函数:
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
    //GPIO端口设置
        GPIO_InitTypeDef GPIO_Initure;
       
        if(huart->Instance==USART1)//如果是串口1,进行串口1 MSP初始化
        {
                __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
               
#if EN_USART1_RX
                HAL_NVIC_EnableIRQ(USART1_IRQn);                                //使能USART1中断通道
                HAL_NVIC_SetPriority(USART1_IRQn,3,3);                        //抢占优先级3,子优先级3
#endif       
        }

}

void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
    //GPIO端口设置
        GPIO_InitTypeDef GPIO_Initure;
       
        if(huart->Instance==USART2)//如果是串口1,进行串口1 MSP初始化
        {
                __HAL_RCC_GPIOA_CLK_ENABLE();                        //使能GPIOA时钟
                __HAL_RCC_USART2_CLK_ENABLE();                        //使能USART2时钟
       
                GPIO_Initure.Pin=GPIO_PIN_2;                        //PA2
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;                //复用推挽输出
                GPIO_Initure.Pull=GPIO_PULLUP;                        //上拉
                GPIO_Initure.Speed=GPIO_SPEED_FAST;                //高速
                GPIO_Initure.Alternate=GPIO_AF7_USART2;        //复用为USART2
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //初始化PA2

                GPIO_Initure.Pin=GPIO_PIN_3;                        //PA3
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //初始化PA3
               
#if EN_USART2_RX
                HAL_NVIC_EnableIRQ(USART2_IRQn);                                //使能USART1中断通道
                HAL_NVIC_SetPriority(USART2_IRQn,3,2);                        //抢占优先级3,子优先级2
#endif       
        }

}



最佳答案

查看完整内容[请看2#楼]

在一个msp函数里面 初始化多个串口,其他外设同样的道理
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5140
金钱
5140
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-8 17:19:41 | 显示全部楼层
在一个msp函数里面  初始化多个串口,其他外设同样的道理
回复

使用道具 举报

14

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2443
金钱
2443
注册时间
2017-9-13
在线时间
559 小时
发表于 2018-3-8 17:25:10 | 显示全部楼层
两个函数的名字相同肯定是重复定义啊
回复

使用道具 举报

10

主题

23

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-10-3
在线时间
15 小时
 楼主| 发表于 2018-3-8 17:27:06 | 显示全部楼层
HCHDaLeiGe 发表于 2018-3-8 17:25
两个函数的名字相同肯定是重复定义啊

知道重定义,就是相怎么才能解决这个重定义问题?除了有一个函数不用MSP函数,还有其他的办法么?
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13092
金钱
13092
注册时间
2012-11-26
在线时间
3810 小时
发表于 2018-3-8 19:06:07 | 显示全部楼层
醉了,本来就一个函数,还拆成两个   if 是留吃的么
回复

使用道具 举报

10

主题

23

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-10-3
在线时间
15 小时
 楼主| 发表于 2018-3-8 19:07:02 | 显示全部楼层
login_FAE 发表于 2018-3-8 17:19
在一个msp函数里面  初始化多个串口,其他外设同样的道理

谢谢,晓得了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 11:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表