OpenEdv-开源电子网

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

急!stm32f103c8t uart3 无法收发,相同的配置USART1就可以

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-7-29
在线时间
12 小时
发表于 2019-5-25 10:56:42 | 显示全部楼层 |阅读模式
20金钱
如题,这两天一直在调试串口,以前也经常用,但是现在的新项目  uart1 ok,uart3一直不工作,收发都不行。发送一直在while等待发送完成,接收进不去接收中断。请问在103c8t上由什么特别的地方吗
void uart_init(u32 bound)
{
        //GPIO端口设置
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        //使能USART3,GPIOB时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
   
        //USART1_TX   GPIOA.9
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PA.9
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
        GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA.9
   
         //USART1_RX          GPIOA.10初始化
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PA10
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
          GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA.10  

           //Usart1 NVIC 配置
        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子优先级3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
        NVIC_Init(&NVIC_InitStructure);        //根据指定的参数初始化VIC寄存器
  
        //USART 初始化设置

        USART_InitStructure.USART_BaudRate = bound;//串口波特率
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
        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(USART3, &USART_InitStructure); //初始化串口3
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启串口接受中断
        USART_Cmd(USART3, ENABLE);                    //使能串口3

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-7-29
在线时间
12 小时
 楼主| 发表于 2019-5-25 11:28:36 | 显示全部楼层
如题,这两天一直在调试串口,以前也经常用,但是现在的新项目  uart1 ok,uart3一直不工作,收发都不行。发送一直在while等待发送完成,接收进不去接收中断。请问在103c8t上由什么特别的地方吗
void uart_init(u32 bound)
{
        //GPIO端口设置
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        //使能USART3,GPIOB时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
   
        //USART1_TX   GPIOA.9
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PA.9
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
        GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA.9
   
         //USART1_RX          GPIOA.10初始化
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PA10
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
          GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA.10  

           //Usart1 NVIC 配置
        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子优先级3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
        NVIC_Init(&NVIC_InitStructure);        //根据指定的参数初始化VIC寄存器
  
        //USART 初始化设置

        USART_InitStructure.USART_BaudRate = bound;//串口波特率
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
        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(USART3, &USART_InitStructure); //初始化串口3
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启串口接受中断
        USART_Cmd(USART3, ENABLE);                    //使能串口3

}
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2019-5-25 18:04:30 | 显示全部楼层
见附件

103串口3实验.rar

339.94 KB, 下载次数: 79

回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-5-25 22:03:13 | 显示全部楼层
yanglnj 发表于 2019-5-25 11:28
如题,这两天一直在调试串口,以前也经常用,但是现在的新项目  uart1 ok,uart3一直不工作,收发都不行。 ...

看着没啥问题,要是开发板的话看看串口3是不是接别的了
回复

使用道具 举报

4

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2019-5-5
在线时间
13 小时
发表于 2019-5-25 22:06:21 | 显示全部楼层
串口3的管脚配置在哪啊,只看到串口1的了
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2019-5-25 23:08:52 | 显示全部楼层
C8T有串口3吗?
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-5-27 16:14:00 | 显示全部楼层
你使用串口1是不是直接使用的原子哥的串口DEMO?我下载了你的工程,发现你是先配置了串口3的时钟,然后在调用 复位串口3函数。你可以仔细看看复位串口函数,里面会把串口3的时钟关闭的。你开启串口时钟应该在复位串口之后的
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 05:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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