你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

为什么我stm串口中断不响应?

[复制链接]
gene719-190105 提问时间:2010-5-29 22:58 /
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  //NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
  // 配置优先级分组,无抢占式优先级  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  
  // 配置USART1中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  // 配置USART2中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  // 配置USART3中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  // 2010-05-26, zhangxingjuan
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  //中断通道
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;    //次优先级
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;       //通道中断使能
  NVIC_Init(&NVIC_InitStructure);                       //初始化中断
}


串口配置
void USART123_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;      // GPIO 初始化结构体
USART_InitTypeDef USART_InitStructure;      // USART 初始化结构体
                     
//***********Configure USART1 Tx Pin*********
GPIO_InitStructure.GPIO_Pin = GPIO_Tx1PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//***********Configure USART2 Tx Pin********
    GPIO_InitStructure.GPIO_Pin = GPIO_Tx2PIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//***********Configure USART3 Tx Pin*********
    GPIO_InitStructure.GPIO_Pin = GPIO_Tx3PIN;
GPIO_Init(GPIOB, &GPIO_InitStructure);
   //***********Configure USART1 Rx Pin*********
    GPIO_InitStructure.GPIO_Pin = GPIO_Rx1PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//***********Configure USART2 Rx Pin*********
    GPIO_InitStructure.GPIO_Pin = GPIO_Rx2PIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//***********Configure USART3 Rx Pin*********
    GPIO_InitStructure.GPIO_Pin = GPIO_Rx3PIN;
GPIO_Init(GPIOB, &GPIO_InitStructure);  
    //********USART1 configure para*********
USART_InitStructure.USART_BaudRate = 2400;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Even;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_Init(USART1,&USART_InitStructure);
  
/********USART2 configure para*********/
    USART_Init(USART2,&USART_InitStructure);  

/********USART3 configure para**********/
    USART_Init(USART3,&USART_InitStructure);
// 使能USART1、2、3的接收中断
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
// 使能USART1、2、3  
USART_Cmd(USART1, ENABLE);
USART_Cmd(USART2, ENABLE);
USART_Cmd(USART3, ENABLE);         
}
/**
  * @描述:配置系统中断
  * @入口参数: 无
  */
  
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  //NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
  // 配置优先级分组,无抢占式优先级  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  
  // 配置USART1中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  // 配置USART2中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  // 配置USART3中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  //中断通道
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;    //次优先级
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;       //通道中断使能
  NVIC_Init(&NVIC_InitStructure);                       //初始化中断
}

以上代码,串口发送数据没问题;但当接收数据时,无法进入USART中断(串口助手监视,是有数据的);研究了半天那个英文编程手册,也没找的出路;望大虾解救。。。。。小弟刚接触STM的片子
收藏 评论3 发布时间:2010-5-29 22:58

举报

3个回答
gene719-190105 回答时间:2010-5-29 23:00:29

RE:为什么我stm串口中断不响应?

,题目貌似写的不完整
suyugangabcd 回答时间:2010-5-30 15:45:04

RE:为什么我stm串口中断不响应?

建议你先检查硬件电路,用示波器看串口接收脚上是否有数据,有时候可能会由于虚焊之类的原因引起,如果是RS485的话,检查一下485芯片的接收使能(RE)是否打开
gene719-190105 回答时间:2010-5-30 19:54:01

RE:为什么我stm串口中断不响应?

多谢楼上,问题今天已解决;确实是硬件问题!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版