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

关于STM32F103VGT6 UART4不能进入中断问题

[复制链接]
龙龙-419544 提问时间:2014-6-30 09:23 /
 各位叔叔阿姨,大哥大姐,各位同僚们好,小弟最近弄STM32的UART4卡住了,主要问题是UART4能发数据,不能进入中断,但是UART5就可以。特意求助
芯片型号:STM32F103VGT6
串口 SP3232:
出问题串口 UART4 PC10 PC11
现象:不能进入中断
库版本V3.5.0
配置是:HD
/***********************************************************UART4**********************************************/
/************************************************************************************
 * 函数名:NVIC_Configuration_Usart5
 * 描述  :NVIC_Configuration_Usart5
 * 输入  :无
 * 输出  : 无
 * 调用  :外部调用
 ***********************************************************************************/
void NVIC_Configuration_Usart4(void)
{
        NVIC_InitTypeDef NVIC_InitStructure; 
        /* Configure the NVIC Preemption Priority Bits */  
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
       
        /* Enable the USARTy Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;         
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}
/************************************************************************************
 * 函数名:USART5_Config
 * 描述  :USART5 GPIO 配置,工作模式配置。9600 8-N-1
 * 输入  :无
 * 输出  : 无
 * 调用  :外部调用
 ***********************************************************************************/
void UART4_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
 
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
       
        //配置接收管脚PC11
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        //配置发送管脚PC10
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        //波特率、字长、停止位、奇偶校验位、硬件流控制、异步串口为默认(被屏蔽字设置)
        USART_InitStructure.USART_BaudRate = 9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        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(UART4, &USART_InitStructure);
       
        USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);
       
        USART_Cmd(UART4, ENABLE);
        NVIC_Configuration_Usart4();
}
void UART4_IRQHandler(void)
{
        if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)
        {        
      USART_SendData(UART4, UART4->DR);
        } 
         
}
/***********************************************************UART5**********************************************/
/************************************************************************************
 * 函数名:NVIC_Configuration_Usart5
 * 描述  :NVIC_Configuration_Usart5
 * 输入  :无
 * 输出  : 无
 * 调用  :外部调用
 ***********************************************************************************/
void NVIC_Configuration_Usart5(void)
{
        NVIC_InitTypeDef NVIC_InitStructure; 
        /* Configure the NVIC Preemption Priority Bits */  
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
       
        /* Enable the USARTy Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;         
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}
/************************************************************************************
 * 函数名:USART5_Config
 * 描述  :USART5 GPIO 配置,工作模式配置。9600 8-N-1
 * 输入  :无
 * 输出  : 无
 * 调用  :外部调用
 ***********************************************************************************/
void UART5_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
 
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);
       
        //配置接收管脚PD2
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        //配置发送管脚PC12
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        //波特率、字长、停止位、奇偶校验位、硬件流控制、异步串口为默认(被屏蔽字设置)
        USART_InitStructure.USART_BaudRate = 9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        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);
       
        USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);
       
        USART_Cmd(UART5, ENABLE);
        NVIC_Configuration_Usart5();
}
void UART5_IRQHandler(void)
{
        if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)
        {        
      USART_SendData(UART5, UART5->DR);
        } 
         
}
收藏 评论9 发布时间:2014-6-30 09:23

举报

9个回答
有缘于你 回答时间:2014-6-30 10:24:37

RE:关于STM32F103VGT6 UART4不能进入中断问题

用示波器看看Rx有输入波形么,波形正确么
Eagleson 回答时间:2014-6-30 10:28:42

RE:关于STM32F103VGT6 UART4不能进入中断问题

https://wenku.baidu.com/link?url=LpUUvM-7JosKA2p7TGH_i0-P350OaQ_Y42pUYeL64v1JM6jEbwfnfC1x2g3m1t6NddNzh_7_zW5DthwUf8aW_qcsCkA4FuZu-CDgmzcTn8a
参考一下本篇文章
feiante-155820 回答时间:2014-6-30 11:07:57

RE:关于STM32F103VGT6 UART4不能进入中断问题

主函数有调用NVIC_Configuration_Usart4()吗?硬件连接是否正确?你是使能接收中断,它的输入脚有数据吗?
龙龙-419544 回答时间:2014-6-30 13:03:14

回复:关于STM32F103VGT6 UART4不能进入中断问题

回复第 2 楼 于2014-06-30 10:24:37发表:
有波形的,经过测试数据是对的~ 
龙龙-419544 回答时间:2014-6-30 13:04:16

回复:关于STM32F103VGT6 UART4不能进入中断问题

回复第 3 楼 于2014-06-30 10:28:42发表:
https://wenku.baidu.com/link?url=LpUUvM-7JosKA2p7TGH_i0-P350OaQ_Y42pUYeL64v1JM6jEbwfnfC1x2g3m1t6NddNzh_7_zW5DthwUf8aW_qcsCkA4FuZu-CDgmzcTn8a
参考一下本篇文章
 
 
你好我这个也看过了,依旧没有什么进展
 
龙龙-419544 回答时间:2014-6-30 13:05:13

回复:关于STM32F103VGT6 UART4不能进入中断问题

回复第 4 楼 于2014-06-30 11:07:57发表:
主函数有调用NVIC_Configuration_Usart4()吗?硬件连接是否正确?你是使能接收中断,它的输入脚有数据吗?
您好NVIC_Configuration_Usart4()在串口配置函数中已经加载了,硬件没问题,接收中断也使能了,打算换MCU试试~
 
深秋独影 回答时间:2014-6-30 14:41:34

RE:关于STM32F103VGT6 UART4不能进入中断问题

将uart4映射到别的引脚试试
aaa999kk 回答时间:2014-6-30 15:34:24

RE:关于STM32F103VGT6 UART4不能进入中断问题

尝试连接,中断检查
zhujunming2002 回答时间:2016-5-16 21:31:08
我遇到了这个问题。在初始化串口之前加0.2秒延时,解决了。

所属标签

相似问题

官网相关资源

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