在线时间2221 小时
UID3253523
注册时间2016-3-21
NXP金币2880
该用户从未签到
超级版主
 
- 积分
- 24890
- 最后登录
- 2025-7-21
|
发表于 2016-6-30 10:13:08
|
显示全部楼层
本帖最后由 小恩GG 于 2016-6-30 10:14 编辑
如果需要按键中断,那你要用KBI例程,官方例程其实已经很简单了。
不知道你看的是什么例程?
你下载FRDM-KEA Quick start package
下载之后,在文件夹:
FRDM-KEA-QSP\Quick Start Package v5\SDK Drivers and Code Example Projects\FRDM-KEAZ128\Code Project Examples for FRDM-KEAZ128\Code Project Examples for FRDM-KEAZ128\Lab7_KBI_KEA128
可以看到相关例程。
void KBI_Init()
{
SIM_SCGC |= SIM_SCGC_KBI1_MASK; /* Enable bus clock on KBI1 */
KBI1_SC = 0; /* Clearing mechanism */
KBI1_ES |= KBI_ES_KBEDG(0x00); /* Polarity setting, falling edge low level ,SW2 */
KBI1_ES |= KBI_ES_KBEDG(0x00); /* Polarity setting, falling edge low level,SW3 */
KBI1_PE |= KBI_PE_KBIPE(0x10); /* Enable KBI1 channel 4 , SW2 */
KBI1_PE |= KBI_PE_KBIPE(0x20); /* Enable KBI1 channel 5 , SW3 */
KBI1_SC = 0; /* Clearing flags*/
KBI1_SC|=KBI_SC_RSTKBSP_MASK; /* Clearing RSTKBSP bit*/
KBI1_SC |= KBI_SC_KBIE_MASK; /* Enable KBI1 Interrupts */
}
int main(void)
{
/* Initialize Clock to 40MHz, Bus Clock to 20MHz */
Clk_Init();
/* Configure button pins as inputs and LED pins as outputs */
GPIO_Init();
/* Initialize KBI module */
KBI_Init();
/* Enable KBI1 Interrupts */
Enable_Interrupt(KBI1_IRQn);
while(1);
return 0;
}
void KBI1_IRQHandler()
{
KBI_Interrupt();
}
/***********************************************************************************************
*
* @brief KBI_Interrupt(void). User Function called by the KBI module on each interrupt
* @param KBI channel
* @return none
*
************************************************************************************************/
void KBI_Interrupt(void)
{
KBI1_SC |= KBI_SC_KBACK_MASK; /*Clear flag*/
if((KBI1_SP & KBI_SP_SP(0x10))>>4) /* If SW1 has been pressed */
{
LED0_TOGGLE; /* Toggle RED LED */
}
if((KBI1_SP & KBI_SP_SP(0x20))>>5) /* If SW2 has been pressed */
{
LED1_TOGGLE; /* Toggle GREEN LED */
}
}
你看也没有冗余的代码,你什么地方不懂,可以直接提问。
|
|