打印

KF8A100GQT外部边沿触发中断例程问题

[复制链接]
1387|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Liuqian0722|  楼主 | 2022-2-25 09:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/****************************************************************************************
* KF8A系列单片机        KF8A100GQT_DEMO        开发板演示程序
* 标    题: 外部边沿触发中断实验
* 项目名: 02- INT_Sample
* 开发环境:ChipON IDE
* 版          本     :V1.0 (2019/08/10)
* 作 者: 上海芯旺微电子有限公司
* 功能简述:用户按键按下触发下降沿INT1,触发翻转LED_R
* 硬件说明:连接用户按键调帽
****************************************************************************************/
#include<KF8A100GQT.h>
#include "includes.h"

volatile uchar INT1_flag;

void delay_ms(uint16 num)
{
        uint16 i,j;
        for(i=0;i<num;i++)
        {
                j=1000;
                while(j--);
        }
}

void SYS_Init(void)
{

        SCLKCTL = SYSCLK_SCLK_SEL_INTHF|SYSCLK_FREQ_DIV1;        //INTHF作为主时钟
        _NOP();_NOP();        //内部高低速时钟稳定
        PLLEN=0;
        PLLCTL = PLL_SEL_DIV1|PLL_SEL_INTHF|PLLBIAS_CUR_MIN|PLLPMUL_4;
        PLLEN=1;
        delay_ms(200);
        SCLKCTL|=SYSYCLK_SEL_SCKS|SYSCLK_SCLK_SEL_UPCK;                //UPCK作为主时钟        64M
        SCLKOE = 0;                //机器周期禁能输出,输出波形与IO翻转速率相关
        CLKOUTSEL = 0;
        HFCKCTL = 0xCE;        //外设时钟开启

        TR0 = 0;        TR1        = 0;        TR2        = 0;        TR3 = 0;
        TR4 = 0;        TR5 = 0;        TR6 = 0;        TR7 = 0;
        TR9 = 0;        TRA = 0;        TRB = 0;
        P0LR = 0;        P1LR = 0;        P2LR = 0;        P3LR = 0;
        P4LR = 0;        P5LR = 0;        P6LR = 0;        P7LR = 0;
        P9LR = 0;        PALR = 0;        PBLR = 0;
}


//主函数
void main()
{
        uchar i=0;
        SYS_Init();

        //INT1配置
        TR07=1;
        ANS07=0;
        INT1IF=0;  //INT1中断标志位初始化位0
        INT1IE=1;  //INT1中断使能
        INT1SE=0;                //INT1中断下降沿触发
        //总中断开启
        AIE=1;     //使能所有未屏蔽的中断
        PUIE=1;    //使能所有未屏蔽的外设中断

        while(1)
        {
                if(INT1_flag)
                {
                        INT1_flag=0;
                        delay_ms(20);
                        if(P07 == 0)
                        {
                                LED_R=!LED_R;
                        }
                }
        }
}
//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{
        if(INT1IE && INT1IF)
        {
                INT1IF=0;
                INT1_flag=1;
        }

}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}
以上是KF8A100GQT_DEMO        开发板演示程序,烧录在芯片中实现不了中断,请大神帮忙看看代码有什么问题?

使用特权

评论回复

相关帖子

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

本版积分规则

1

主题

4

帖子

0

粉丝