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

2019-08-17 09:45发布

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

                }



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

    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {     

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


    }




中断能进入,也能读出接收到ch的值,就是倒计时时候或者使用延迟函数的时候,没法进入usart1中断
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。