找回密码
 立即注册
查看: 393|回复: 5

P3IO中断进不去,

[复制链接]

该用户从未签到

13

主题

25

回帖

141

积分

注册会员

积分
141
发表于 2023-7-25 21:09:39 | 显示全部楼层 |阅读模式
void P3Exit_Init()//P3中断初始化
{
        P3IM0 = 0X00;
        P3IM1 = 0XFF;               //低电平中断
        P3INTE = 0X20;              //P35中断  0010 0000
}

void main()
{   
        u8 i = 0;
        u8 key_str = 0;//数码管显示位置变量
        Timer0_Init();//定时器0初始化
        INT0_Init();//外部中断0初始化
        P3Exit_Init();//P3中断初始化
        EA = 1;                 //打开总中断
        LED=0XFF;
    sys_init();  //系统初始化
    usb_init();  //USB CDC 接口配置  
        SEG0 = 0;
while(1)
}


void P3Exit_Isr() interrupt 40 //P3端口中断号40,P3中断服务函数
{
        u8 intf;
        intf = P3INTF;       //读取中断标志位
        if(intf)
        {
                P3INTF = 0;                 //清空中断标志位,必须软件清空
                if(intf&0x20)    //P35按下 0010 0000
                {
                        SEG0 ++;
                        if(SEG0>9)
                        {
                                SEG0=0;                               
                        }
                        delay_ms(500);//演示功能,正式代码避免中断函数加延时。
                }
        }

}

是IO中断插件安装失败还是我代码有问题

是IO中断插件安装失败还是我代码有问题

是IO中断插件安装失败还是我代码有问题

求指导

回复 送花

使用道具 举报

该用户从未签到

552

主题

9492

回帖

1万

积分

管理员

积分
14057
发表于 2023-7-25 21:45:58 | 显示全部楼层
具体型号的 MCU 要讲清楚,不是所有型号都有这个功能
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

25

回帖

141

积分

注册会员

积分
141
 楼主| 发表于 2023-7-26 19:56:53 | 显示全部楼层
STC32G128
回复 送花

使用道具 举报

该用户从未签到

552

主题

9492

回帖

1万

积分

管理员

积分
14057
发表于 2023-7-26 21:15:47 | 显示全部楼层
STC32G12K128的普通I/O支持外部中断,只能支持 高电平/低电平 中断
或者你换成 STC32G8K64-42I-LQFP48,这个没任何问题
1.png


回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

25

回帖

141

积分

注册会员

积分
141
 楼主| 发表于 2023-7-27 22:10:35 | 显示全部楼层
大佬帮我看个代码
#include "adc.h"
#include "intrins.h"
void ADC_Init()
{
        P1M0 = 0x00;
        P1M1 = 0x01;   //设置P10高阻输入,ADC采集必须使用高阻输入
       
        ADCTIM = 0X3F; //设置ADC内部时序
        ADCCFG = 0X2F; //设置adc时钟为系统时钟/2/16,一般选用速度最慢的模式,求数据稳定,数据选用右对齐格式.0X20?
        ADC_POWER = 1; //使能ADC模块
}
//=============================================
//函数名称 ADC_Read
//函数功能 ADC读取指定通道电压
//入口参数 @ NO,ADC选择通道0-15
//函数返回 ADC_Val
//当前版本 VER1.0
//修改日期 2023
//当前作者
//其他备注
//=============================================
u16 ADC_Read(u8 no)//入口参数为选择ADC通道
{
        u16 ADC_Val;        //ADC数据保存变量
        ADC_CONTR &= 0x0f; //清空通道寄存器
        ADC_CONTR = no;   //选择通道0-15,最后一位通道默认测试通道,一般不去占用
        ADC_START = 1;      //启动AD转换
        _nop_();            //运行两行空指令
        _nop_();
        while(!ADC_FLAG);   //等待ADC转换结束标志位,由硬件置1.
        ADC_FLAG = 0;       //ADC转换结束标志位由软件清零
        ADC_Val = ((ADC_RES<<8)+ADC_RESL); //高位左右8位后加低八位就是ADC的值
        return ADC_Val;
}


然后主函数调用的时候我也发下,
void main()
{   
          u16 ADC_VAL;
          ADC_Init();
          EA = 1;                 //打开总中断
    sys_init();  //系统初始化
    usb_init();  //USB CDC 接口配置  
//        SEG0 = 0;
//        SEG1 = 0;
//死循环   
        while (1)
        {               
                P40=0;
                P60=0;
                  
                      delay_ms(2);
                if(DeviceState != DEVSTATE_CONFIGURED)  //等待USB完成配置
            continue;               
//        if (bUsbOutReady)
//        {
//            usb_OUT_done();    //接收应答(固定格式)
//         
//                        printf("%d\r\n",ADC_VAL);
//            memcpy(UsbInBuffer, UsbOutBuffer, OutNumber);  //将接收数据(UsbOutBuffer),复制到发送缓冲区(UsbInBuffer)
//            usb_IN(OutNumber);      //原路返回, 用于测试
//        }
              ADC_VAL=ADC_Read(0);
             printf("%d\r\n",ADC_VAL);
             printf("%d\r\n",P6);
                                       
    }
}

串口不打印,貌似卡在ADC_VAL=ADC_Read(0);或者卡在while(!ADC_FLAG); 我不确定卡哪里,现在只要屏蔽掉这两行,串口都能打印。
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    2024-3-27 13:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    11

    回帖

    78

    积分

    注册会员

    积分
    78
    发表于 2024-5-7 17:49:58 | 显示全部楼层
    是不是因为中断向量大于31,keil无法编译的问题
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-18 07:12 , Processed in 0.062658 second(s), 51 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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