OpenEdv-开源电子网

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

串口2中断和定时器2中断不能同时开启

[复制链接]

57

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
453
金钱
453
注册时间
2013-5-23
在线时间
47 小时
发表于 2015-8-27 08:02:53 | 显示全部楼层 |阅读模式
5金钱
只要开启串口2接收中断 ,定时器2中断就进不去,两个单独工作都没问题

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6769

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13197
金钱
13197
注册时间
2012-11-26
在线时间
3820 小时
发表于 2015-8-27 08:09:17 | 显示全部楼层
只有一种可能  代码有问题
学无止境
回复

使用道具 举报

57

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
453
金钱
453
注册时间
2013-5-23
在线时间
47 小时
 楼主| 发表于 2015-8-27 08:18:46 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
void NVIC2_init(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_Init(&NVIC_InitStructure); 
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);           
    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure); 
}
void TIME2_init(void)//250MS?¨?±
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
    TIM_DeInit(TIM2);            
    TIM_TimeBaseStructure.TIM_Period=0;  
    TIM_TimeBaseStructure.TIM_Prescaler=(36000-1);        
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;  
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; 
    TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);   
    TIM_ClearFlag(TIM2,TIM_FLAG_Update); 
    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); 
    TIM_Cmd(TIM2,DISABLE);           
  NVIC2_init();

void tim2_delay1ms(u16 delayTime)  //65536 ×??ó?????±??65536/2=36400????=36.4??
    {
        time2_gprs = 0;
  
        TIM2->ARR = delayTime*2;

        TIM_Cmd(TIM2, ENABLE);

        while(!time2_gprs)
        {
       
        }

        TIM_Cmd(TIM2, DISABLE);
    }

void TIM2_IRQHandler(void)   
{

if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ) 
    {   
  
        TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
    time2_gprs=1;

 
     
 
    }
 }
void USART2_NVIC_Configuration(void) 

{ NVIC_InitTypeDef NVIC_InitStructure;
 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

}
void USART2_Configuration(u32 bard,u8 RX_ENABLE)

{
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2, ENABLE); 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;  //rx
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  USART_InitStructure.USART_BaudRate = bard;
  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_Tx | USART_Mode_Rx;

  USART_Init(USART2 , &USART_InitStructure);

  USART_Cmd(USART2, ENABLE);
      //????±ê??????·??ò??1???????á???§
 USART_ClearFlag(USART2,USART_FLAG_TC);

  if(RX_ENABLE)
  {
    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); /*????????????*/
  USART2_NVIC_Configuration();
  }
 

}
USART2_Configuration(9600,1);
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2019-5-24
在线时间
12 小时
发表于 2016-9-21 10:12:19 | 显示全部楼层
本帖最后由 Geemi 于 2016-9-21 10:14 编辑

可能可这张图片有关 捕获.PNG

都在同一个引脚上,那么同时使用会不会有问题呢,这个偶就不知道了
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-8-16
在线时间
77 小时
发表于 2017-4-20 08:54:15 | 显示全部楼层
楼主问题解决了么,我通过串口发送一个值赋值给ARR,定时器2中断也就不工作了,不知道问题出在哪儿
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-22 01:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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