OpenEdv-开源电子网

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

STM32F4串口2发送不出数据问题

[复制链接]

12

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2016-7-4
在线时间
31 小时
发表于 2017-10-12 15:33:34 | 显示全部楼层 |阅读模式
5金钱
配置和例程带的串口1思路一样,代码检查的没有问题,难道是开发板串口2被占用了?
基本的发送0x11都收不到,io口一直是高电平


代码如下[mw_shl_code=applescript,true]void usart2_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStuer;
        USART_InitTypeDef USART_InitStuer;
        NVIC_InitTypeDef NVIC_InitStuer;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ê1ÄüGPIOAê±Öó
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
               
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2);
       
        GPIO_InitStuer.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitStuer.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStuer.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;
        GPIO_InitStuer.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_InitStuer.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStuer);
               
        USART_InitStuer.USART_BaudRate=115200;
        USART_InitStuer.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
        USART_InitStuer.USART_Mode= USART_Mode_Rx | USART_Mode_Tx;
        USART_InitStuer.USART_Parity=USART_Parity_No;     //ÎTÆæÅ¼D£Ñéλ
        USART_InitStuer.USART_StopBits=USART_StopBits_1;   //ÎTó2¼tá÷¿ØÖÆ
        USART_InitStuer.USART_WordLength=USART_WordLength_8b;
       
        NVIC_InitStuer.NVIC_IRQChannel=USART2_IRQn;
        NVIC_InitStuer.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStuer.NVIC_IRQChannelPreemptionPriority=2;
        NVIC_InitStuer.NVIC_IRQChannelSubPriority=2;
        NVIC_Init(&NVIC_InitStuer);
       
        USART_Init(USART2,&USART_InitStuer);
        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);     //½óêüÖD¶Ï
        USART_Cmd(USART2,ENABLE);    //ê1Äü′®¿ú2
        USART_ClearFlag(USART2, USART_FLAG_TC);
}[/mw_shl_code]

最佳答案

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

我也是在串口1例程的基础上改成了串口2出现了问题,现在已经解决了这个问题。 把例程中关于下面这个函数的 USART1 改为 USART2 就可以正常收发了。 //重定义fputc函数 int fputc(int ch, FILE *f) { while((USART2->SR&0X40)==0);//循环发送,直到发送完毕 USART2->DR = (u8) ch; return ch; }
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2020-5-17
在线时间
15 小时
发表于 2017-10-12 15:33:35 | 显示全部楼层
我也是在串口1例程的基础上改成了串口2出现了问题,现在已经解决了这个问题。

把例程中关于下面这个函数的 USART1 改为 USART2  就可以正常收发了。

//重定义fputc函数
int fputc(int ch, FILE *f)
{        
        while((USART2->SR&0X40)==0);//循环发送,直到发送完毕   
        USART2->DR = (u8) ch;      
        return ch;
}
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10566
金钱
10566
注册时间
2017-2-18
在线时间
1913 小时
发表于 2017-10-12 21:39:39 | 显示全部楼层
这样看没看出啥错误。中断服务函数是?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-10-17
在线时间
2 小时
发表于 2017-10-17 15:28:28 | 显示全部楼层
你的问题解决了吗?我也碰到了同样的问题,串口2收发都没响应
回复

使用道具 举报

13

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
金钱
237
注册时间
2016-6-22
在线时间
50 小时
发表于 2018-7-13 15:38:32 来自手机 | 显示全部楼层
应该不是软件的问题
回复

使用道具 举报

19

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2019-10-17
在线时间
42 小时
发表于 2020-3-22 13:33:11 | 显示全部楼层
同样也是遇到这样的问题。求解答
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-7-4
在线时间
3 小时
发表于 2020-4-3 17:53:20 | 显示全部楼层
我改成串口2也是没有反应
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2020-5-18
在线时间
35 小时
发表于 2020-7-24 09:59:52 | 显示全部楼层
我的串口2也是进不去中断
回复

使用道具 举报

0

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
463
金钱
463
注册时间
2020-3-5
在线时间
120 小时
发表于 2020-7-24 10:13:12 | 显示全部楼层
看一下开发板原理图嘛。排除硬件问题先
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 14:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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