亚博智能论坛  
  
查看: 568|回复: 2

在调用其他函数时不能进入USART1的中断

[复制链接]
  • TA的每日心情
    大哭
    2017-7-26 09:46
  • 29

    主题

    51

    帖子

    155

    积分

    菜鸟程序猿

    Rank: 2

    积分
    155
    发表于 2017-6-20 16:30:13 | 显示全部楼层 |阅读模式
    本帖最后由 different 于 2017-6-20 16:33 编辑

    最近做一个蓝牙控制的定时器因为控制的时候只发送一个字符,所以写的很简单但是在调用函数的时候,中断就不能进入了
    (需要使用的时钟都打开了)
    1. if(ch1!=ch){
    2. if     (ch=='a')     {GPIO_ResetBits  (GPIOE,GPIO_Pin_5);GPIO_ResetBits  (GPIOD,GPIO_Pin_10);ch1=ch;}
    3. else if     (ch=='b')     {GPIO_SetBits          (GPIOE,GPIO_Pin_5);GPIO_SetBits  (GPIOD,GPIO_Pin_10);ch1=ch;}
    4. else if(ch=='m')     {GPIO_SetBits          (GPIOE,GPIO_Pin_5);GPIO_SetBits  (GPIOD,GPIO_Pin_10);ch1=ch;delay_nms(24000);}
    5. else if(ch=='+')     { L1602_string(1,1,">");  L1602_string(2,1," ");ch1=ch;}
    6. else if(ch=='-')     { L1602_string(1,1," ");  L1602_string(2,1,">");ch1=ch;}
    7. else if(ch>=48&&ch<=57)
    8. {
    9.   USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
    10.   int z =CharToInt(ch);
    11.   GPIO_ResetBits  (GPIOD,GPIO_Pin_10);
    12.   TimeDown(z);
    13.   GPIO_SetBits  (GPIOD,GPIO_Pin_10);
    14.   L1602_Clear();
    15. }
    复制代码

    usart部分,没写的很规范
    1. void USART1_IRQHandler(void)
    2. {

    3.     if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    4.     {     

    5.             ch= USART_ReceiveData(USART1);     //接受数据
    6.             USART_SendData(USART1,ch);

    7.     }
    复制代码


    中断能进入,也能读出接收到ch的值,就是倒计时时候或者使用延迟函数的时候,没法进入usart1中断

    回复

    使用道具 举报

    该用户从未签到

    11

    主题

    26

    帖子

    59

    积分

    新手上路

    Rank: 1

    积分
    59
    发表于 2017-6-23 16:59:37 | 显示全部楼层
    用其他的代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    萌哒
    2018-5-17 16:00
  • 176

    主题

    275

    帖子

    1102

    积分

    超级版主

    Rank: 9Rank: 9Rank: 9

    积分
    1102
    发表于 2017-7-7 15:13:24 | 显示全部楼层
    百度找找
    回复

    使用道具 举报

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

    本版积分规则

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