打印
[STM32F1]

stm32F103RCT6 串口4、5的问题

[复制链接]
2376|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sflower|  楼主 | 2015-8-7 18:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的串口初始化没有错,但是中断造成异常,请大家指点?
沙发
sflower|  楼主 | 2015-8-7 18:39 | 只看该作者
以下是我的串口5 的初始化程序
void UART5_Init(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
   USART_InitTypeDef USART_InitStructure;   
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  //使能UART5所在GPIOC的时钟  
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE);  //使能串口5时钟
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //USART5 TX
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     //复用推挽输出
   GPIO_Init(GPIOC, &GPIO_InitStructure);       //c端口  
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;            //USART5 RX
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;      //IO口的第十脚
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    //复用开漏输入
   GPIO_Init(GPIOD, &GPIO_InitStructure);            //D端口  
   USART_InitStructure.USART_BaudRate   = 19200;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位8位
   USART_InitStructure.USART_StopBits   = USART_StopBits_1; //停止位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); //配置串口参数函数  
   
   
   USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);    //接收使能
   USART_ITConfig(UART5,USART_IT_TC,ENABLE);        // 发送使能
  
   USART_Cmd(UART5, ENABLE);  
   USART_ClearFlag(UART5,USART_FLAG_TC);      // 清除中断标志
    NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;//Channel; USART1_IRQn
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);
   
}

使用特权

评论回复
板凳
FireRiver9| | 2015-8-9 11:03 | 只看该作者
有什么错误提示吗

使用特权

评论回复
地板
sflower|  楼主 | 2015-8-10 09:10 | 只看该作者
/*******************************************************************
串口4 配置串口

串口5正常啦,但是串口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);
}

使用特权

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

本版积分规则

17

主题

150

帖子

1

粉丝