打印

Usart2就进入不了中断

[复制链接]
628|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaoxqi|  楼主 | 2022-2-19 11:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用PIC18F25K80的ECCP功能和Usart2功能  单独使用都正常  两个一起工作  Usart2就进入不了中断,两个的中断都设置为低优先级中断

使用特权

评论回复
沙发
zhaoxqi|  楼主 | 2022-2-19 11:56 | 只看该作者
void CCP_Init(void)
{
   
    T1GCON = 0x00;
    T1CON = 0x24;           // FOSC/4  TMR1关闭
    TMR1H = 0;
        TMR1L = 0;                                //定时器1清0

    TRISBbits.TRISB4 = 1;   // 设置RB4为输入,CCP1
    CCP1CON = 0x05;         //捕捉上升沿
    CCPTMRS = 0x00;         //TMR1
    PIR3bits.CCP1IF = 0;        //
    PIE3bits.CCP1IE = 1;       //使能CCP1中断
    IPR3bits.CCP1IP = 1;       //CCP1中断低优先
    TMR1ON = 0;
    TMR1ON = 1;            //开TMR1
}
void USART2_Init(void)
{
   BAUDCON2 = 0x08;
   SPBRG2 = 0x82;
   SPBRGH2 = 0x06;      
   TXSTA2 = 0x04;      
   RCSTA2 = 0x90;      
   PIE3bits.TX2IE = 0;
   PIE3bits.RC2IE = 1;
   IPR3bits.RC2IP = 0;  
}
上面是配置
下面是中断程序
void interrupt low_priority low_isr()
{  
unsigned char data2;
if(PIE3bits.RC2IE && PIR3bits.RC2IF)              
    {
        PIR3bits.RC2IF = 0;                       
        data2 = RCREG2;                       
        UsartCmd_** = Usart_Cmd(data2);
    }   

//    if(PIE3bits.CCP1IE && PIR3bits.CCP1IF)
//    {
//        PIR3bits.CCP1IF = 0;
//        if((CCP1CON & 0x01)==1)
//        {
//            CCP1CON = 0x04;
//            
//            TMR1ON = 0;
//            CP_HF = TMR1H;
//            CP_LF = TMR1L;
//            CP_H[CP_Sum] =   CP_HF *256 + CP_LF;
//            
//            TMR1H = 0;
//                TMR1L = 0;                                //定时器1清0
//            
//            TMR1ON = 1;      //开TMR1
//            
//            
//        }
//        else
//        {
//            CCP1CON = 0x05;
//            
//            TMR1ON = 0;
//             CP_HF = TMR1H;
//            CP_LF = TMR1L;
//           
//            CP_L[CP_Sum] = CP_HF *256 + CP_LF;           
//            TMR1H = 0;
//                TMR1L = 0;                                //定时器1清0
//            TMR1ON = 1;
//            
//            CP_Sum++;
//            if(CP_Sum>9)
//              CP_Sum = 0;
//        }
//    }  

希望大神能指点一下

使用特权

评论回复
板凳
stly| | 2022-2-19 12:01 | 只看该作者
CCP和USART2有什么关联吗

使用特权

评论回复
地板
huangchui| | 2022-2-19 12:03 | 只看该作者
看起来你的初始化里面一个高优先级,一个低优先级嘛

使用特权

评论回复
5
pengf| | 2022-2-19 12:05 | 只看该作者
你CCP的中断频率多少?

使用特权

评论回复
6
supernan| | 2022-2-19 12:07 | 只看该作者
如果太快的话, 恐怕连其他的普通主循环都干不了...

使用特权

评论回复
7
zhaoxqi|  楼主 | 2022-2-19 12:10 | 只看该作者
都是低优先级啊

使用特权

评论回复
8
heweibig| | 2022-2-19 12:15 | 只看该作者
这个可能是我搞错了 我复制过来的时候忘记改了 我中间尝试过将CCP1中断调整为高优先级 当时也不行 我再测试一下看看

使用特权

评论回复
9
wyjie| | 2022-2-19 12:19 | 只看该作者
IPR3bits.CCP1IP = 1; //CCP1中断低优先 IPR3bits.RC2IP = 0;

使用特权

评论回复
10
zhaoxqi|  楼主 | 2022-2-19 12:21 | 只看该作者
CCP中断频率?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

808

主题

10636

帖子

4

粉丝