打印
[PIC®/AVR®/dsPIC®产品]

Usart2就进入不了中断

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

使用特权

评论回复
沙发
zhaoxqi|  楼主 | 2023-4-1 20:49 | 只看该作者
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;
//        }
//    }  

希望大神能指点一下

使用特权

评论回复
板凳
zhaoxqi|  楼主 | 2023-4-1 21:06 | 只看该作者
CCP中断频率?

使用特权

评论回复
地板
everyrobin| | 2023-5-13 12:28 | 只看该作者
你确定你使用的是交叉串口线?              

使用特权

评论回复
5
pentruman| | 2023-5-14 20:39 | 只看该作者
在使用串口中断之前,需要先通过相关的寄存器设置开启中断。

使用特权

评论回复
6
modesty3jonah| | 2023-5-14 21:11 | 只看该作者
一般这种情况是引脚接线不正确引起的

使用特权

评论回复
7
fengm| | 2023-5-14 21:21 | 只看该作者
一个字节一个字节的接收的,用循环接完。

使用特权

评论回复
8
cashrwood| | 2023-5-14 21:30 | 只看该作者
检查中断优先级设置是否正确,尤其是多个中断同时存在时需要合理设置。

使用特权

评论回复
9
janewood| | 2023-5-14 22:05 | 只看该作者
对程序进行逐步调试,检查代码逻辑和中断处理流程是否正确

使用特权

评论回复
10
jackcat| | 2023-5-18 10:43 | 只看该作者
接收中断要在中断函数内用RCIF查询

使用特权

评论回复
11
wwppd| | 2023-5-18 11:08 | 只看该作者
在中断处理程序中及时清除相应的中断标志位,以保证程序正常执行。

使用特权

评论回复
12
内政奇才| | 2023-5-19 16:17 | 只看该作者
引脚接线检查了的没

使用特权

评论回复
13
rosemoore| | 2023-5-21 10:37 | 只看该作者
在中断处理程序中及时清除相应的中断标志位,以保证程序正常执行。

使用特权

评论回复
14
hearstnorman323| | 2023-5-21 11:33 | 只看该作者
接收中断要在中断函数内用RCIF查询

使用特权

评论回复
15
CoolSilicon| | 2023-5-23 16:49 | 只看该作者
CCP频率多少? 如果太频繁的话, 可能确实会影响其他的功能。

使用特权

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

本版积分规则

808

主题

10636

帖子

4

粉丝