OpenEdv-开源电子网

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

STM32F103ZET6的串口5只能发送不能中断接收

[复制链接]

4

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-11-11
在线时间
21 小时
发表于 2016-2-21 14:44:50 | 显示全部楼层 |阅读模式
5金钱
因为要用到STM32F103ZET6芯片的5个串口,其余4个串口使用都正常,发现串口5上电后接收管脚一直为低,只能发送,不能接收,有谁遇到过吗,下面是我的初始化程序
#if EN_USART1_RX   //如果使能了接收
//串口5中断服务程序
//注意,读取USARTx->SR能避免莫名其妙的错误   
u8 USART_RX_BUF5[USART_REC_LEN];//接收缓冲,最大USART_REC_LEN个字节,起始地址为0X20001000.   
//接收状态
u16 USART_RX_STA5=0;        //接收状态标记   
u16 USART_RX_CNT5=0;  //接收的字节数   
void UART5_IRQHandler(void)
{
u8 res;
#ifdef OS_CRITICAL_METHOD  //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了.
OSIntEnter();   
#endif
if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)//接收到数据
{  
  res=USART_ReceiveData(UART5);
  if(USART_RX_CNT5<USART_REC_LEN)
  {
   USART_RX_BUF5[USART_RX_CNT5]=res;
   USART_RX_CNT5++;                  
  }
}
#ifdef OS_CRITICAL_METHOD  //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了.
OSIntExit();              
#endif
}
#endif

void uart_init5(u32 bound){
    //GPIO端口设置
    GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
  
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能UART5,GPIOC时钟以及复用功能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能UART5,GPIOC时钟以及复用功能时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5,ENABLE);
     //UART5_TX   PC.12
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //PC.10
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
    GPIO_Init(GPIOC, &GPIO_InitStructure);
   
    //UART5_RX   PD.2
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOD, &GPIO_InitStructure);  
   //Usart1 NVIC 配置

   //USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
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(UART5, &USART_InitStructure); //初始化串口
#if EN_USART1_RX    //如果使能了接收
    NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
  
    USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);//开启中断
#endif
    USART_Cmd(UART5, ENABLE);                    //使能串口
}

最佳答案

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

已经解决了,是我在其他地方也定义了GPIOD.2,有冲突
热爱电子 热爱生活
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-11-11
在线时间
21 小时
 楼主| 发表于 2016-2-21 14:44:51 | 显示全部楼层
已经解决了,是我在其他地方也定义了GPIOD.2,有冲突
热爱电子 热爱生活
回复

使用道具 举报

4

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-11-11
在线时间
21 小时
 楼主| 发表于 2016-2-21 14:51:14 | 显示全部楼层
上电初始化后接收管脚一直为低,感觉像没初始化好,换了个stm32的启动文件仍然没有解决,把串口5的中断优先级调整后也没有解决,感觉很奇葩的问题
热爱电子 热爱生活
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-2-21 23:11:41 | 显示全部楼层
是不是电路的问题?
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2016-2-22 09:05:36 | 显示全部楼层
你用的是哪个版本的库
回复

使用道具 举报

4

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-11-11
在线时间
21 小时
 楼主| 发表于 2016-2-22 09:17:54 | 显示全部楼层
正点原子 发表于 2016-2-21 23:11
是不是电路的问题?

发送和接收端没有上下拉,接收端与另一处理器的发送端直连或中间接100欧都没反应,而且我4片stm32芯片都是一样的问题,应该不是焊接的问题,很奇怪的是串口5的接收和发送io不在同一组
热爱电子 热爱生活
回复

使用道具 举报

4

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-11-11
在线时间
21 小时
 楼主| 发表于 2016-2-22 09:30:02 | 显示全部楼层
止天 发表于 2016-2-22 09:05
你用的是哪个版本的库

V3.5的库,是不是串口5的接收需要重映射才能用啊
热爱电子 热爱生活
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 06:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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