打印
[STM32F1]

stm32F103RCT6 串口4不进接收中断

[复制链接]
4861|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sflower|  楼主 | 2015-8-10 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用5个串口, 串口1.2.3、5 都可以正常进入中断,而串口4接收中断进不去,实在找不出问题,请大家帮忙
串口4 配置串口

********************************************************************/
void UART4_Init(void)
{
         USART_InitTypeDef USART_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;          
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC |RCC_APB2Periph_AFIO, ENABLE);  //使能UART5所在GPIOC的时钟  
    //使能串口1时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE);
   //******************************************************************************
//  串口1所使用管脚输出输入定义
//******************************************************************************
  // 定义UART4 TX (Pc10)脚为复用推挽输出
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;    //tx  pb10
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  //
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //IO口复用推挽输出
  GPIO_Init(GPIOC,&GPIO_InitStructure);
  // 定义 USART143Rx (Pc.11)为悬空输入
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;      //IO口的第十脚
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //IO口悬空输入
  GPIO_Init(GPIOC,&GPIO_InitStructure);      //初始化串口3输入IO口      
  //*********************************************
//    串口1参数初始化定义部分,串口4参数为19200 , 8 ,1 ,N  接收中断方式
//******************************************************************************

  USART_InitStructure.USART_BaudRate   = 19200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b; //设定传输数据位数
  USART_InitStructure.USART_StopBits = USART_StopBits_1;//设定停止位个数
  USART_InitStructure.USART_Parity = USART_Parity_No;   //无校验
  USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;  //使用接收和发送功能
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;   //不用控制流量
  
  USART_Init(UART4, &USART_InitStructure); //配置串口参数函数  
   
  USART_ITConfig(UART4,USART_IT_RXNE,ENABLE);   //接收使能
  USART_ITConfig(UART4,USART_IT_TC,ENABLE);
  USART_Cmd(UART4,ENABLE);                    //使能串口4
  USART_ClearFlag(UART4,USART_FLAG_TC);      // 清除中断标志
  
  NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;//Channel; USART1_IRQn
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

void UART4_IRQHandler(void)
{
        u8 i;
        if(USART_GetITStatus(UART4,USART_IT_RXNE) != RESET)
                {
                        i = USART_ReceiveData(UART4);
                        USART_ClearITPendingBit(UART4,USART_IT_RXNE);
                        cReceiveBuffer4[ReceiveLength4] = i;
                        TimerOfCom4Delay = 10;
                        if(ReceiveLength4 <BufferSize)
                                ReceiveLength4++;
                        else
                                ReceiveLength4 = 0;
                }
        if(USART_GetITStatus(UART4,USART_IT_TC) !=RESET)
                {
                        USART_ClearFlag(UART4,USART_FLAG_TC);
            
        }
}
谢谢!
沙发
香水城| | 2015-8-10 10:27 | 只看该作者
SDIO外设有没有开启?SDIO和UART4都用到PC10,PC11.

使用特权

评论回复
板凳
sflower|  楼主 | 2015-8-10 10:36 | 只看该作者
没有开启SDIO,只有于串口4

使用特权

评论回复
地板
进击的ic| | 2015-8-10 10:50 | 只看该作者
从配置程序上看没有问题啊,看看是不是硬件连接问题

使用特权

评论回复
5
songchenping| | 2015-8-10 10:57 | 只看该作者
有没有用示波器测量波形是否正确,还有可以将其他串口先disable,就单独测试串口4看结果如何。再做下一步分析。

使用特权

评论回复
6
sflower|  楼主 | 2015-8-10 13:53 | 只看该作者
禁止其他几个串口中断,串口4只进入一次接收中断后,不在进入,超不出问题,赶项目呀,急

使用特权

评论回复
7
mumu3013| | 2015-8-10 14:25 | 只看该作者
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;      //IO口的第十脚这个大点试试呢

使用特权

评论回复
8
songchenping| | 2015-8-10 14:25 | 只看该作者
sflower 发表于 2015-8-10 13:53
禁止其他几个串口中断,串口4只进入一次接收中断后,不在进入,超不出问题,赶项目呀,急 ...

标志位清除了吗

使用特权

评论回复
9
sflower|  楼主 | 2015-8-10 14:30 | 只看该作者
谢谢各位,现在能进入中断啦,可能和中断优先级有关吧

使用特权

评论回复
10
songchenping| | 2015-8-10 17:16 | 只看该作者
sflower 发表于 2015-8-10 14:30
谢谢各位,现在能进入中断啦,可能和中断优先级有关吧

唉。

使用特权

评论回复
11
mmuuss586| | 2015-8-10 19:39 | 只看该作者

解决了就好

使用特权

评论回复
12
sflower|  楼主 | 2015-8-10 20:12 | 只看该作者
谢谢给位支持!

使用特权

评论回复
13
黑鸟飞飞| | 2015-9-6 09:50 | 只看该作者

楼主可以把具体原因说一下吗?我也遇到这个问题,谢谢!

使用特权

评论回复
14
sflower|  楼主 | 2015-9-6 10:01 | 只看该作者
现在能进入中断啦,和中断优先级有关吧

使用特权

评论回复
15
13670182821| | 2015-10-19 17:49 | 只看该作者
楼主   能加下QQ 吗  指教下  遇到一样的问题  459050835  麻烦楼主了 赶项目

使用特权

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

本版积分规则

17

主题

150

帖子

1

粉丝