找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4383|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

S9KEAZ128AMLK型號(hào)MCU KBI中斷

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:234413 發(fā)表于 2017-9-21 00:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
請(qǐng)教各位大神;KBI中斷設(shè)置為高電平觸發(fā),進(jìn)入中斷程序后,如果加上判斷中斷源引腳的程序,則讀KBI1_SP寄存器的值為0x000000,如果不加上判斷語(yǔ)句,則第一次讀的值為0x000000,以后近中斷讀的值為0x00002000,與預(yù)期相符;中斷引腳使能寄存器配置為0x000000;改引腳進(jìn)入中斷后使能為GPIO輸入輸出,做OWI通訊;
以下為我的中斷初始化及服務(wù)程序:void KBI_PIR_Init_app(void)
{
        uint32_t        i;
        KBI_ConfigType  sKBIConfig;
        MCU_drive_dis;
        DOCI_R;
        
        /* Disable all the KBI pins */
        for (i = 0; i < KBI_MAX_PINS_PER_PORT; i++)
        {
                sKBIConfig.sPin[ i].bEn         = 0;
        }
        
        sKBIConfig.sBits.bRstKbsp   = 1;/*Writing a 1 to RSTKBSP is to clear the KBIxSP Register*/
        sKBIConfig.sBits.bKbspEn   = 1;/*The latched value in KBxSP register while interrupt flag occur to be read.*/
        sKBIConfig.sBits.bMode   = KBI_MODE_EDGE_LEVEL;
        sKBIConfig.sBits.bIntEn  = 1;
        
        sKBIConfig.sPin[KBI1_PTF5_SHIFT].bEdge = KBI_RISING_EDGE_HIGH_LEVEL;
        sKBIConfig.sPin[KBI1_PTF5_SHIFT].bEn   = 1;
        
        KBI_SetCallback(KBI1, &KBI1_PIR_Task);
        KBI_Init(KBI1, &sKBIConfig);
}

void KBI1_PIR_Task(void)
{
        KBI_mark=KBI_GetSP(KBI1);
        //if(KBI_mark == KBI1_PTF5_MASK)  加上此判斷,每次讀取值為0x000000;
        {
                KBI_DisableInt(KBI1);
                KBI_RstSP(KBI1);
                MCU_drive_dis;
                delay10us_PC(8);
                GPIO_read=FGPIO_Read(FGPIOB);
                if(GPIO_read&0x2000)   //delete glitch
                {
                        
                        DOCI_read_data=DOCI_read();
                        global_uart_send[4]=DOCI_read_data>>8;
                        global_uart_send[5]=DOCI_read_data;
                        global_uart_send[0]=MCU_ADDR;
                        global_uart_send[1]=0x07;
                        global_uart_send[2]=0x06;
                        global_uart_send[3]=0x00;
                        global_uart_send[6]=Cal_CRC(global_uart_send,global_uart_send[1]-1);
                        UART_SendWait_app(UART1);
                        UART_clear();
                        UART_send_num++;
                }
        }
        KBI1->PE |= 0x2000;
        KBI_EnableInt(KBI1);
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表