pfkey_exp.c

来自「FIR IIR 实验的源代码」· C语言 代码 · 共 60 行

C
60
字号
#include <cdefBF561.h>
#include <ccblkfn.h>
#include <sys/exception.h>

#include "Exp_Config.h"
#include "sys_func.h"
#include "../sys_res.h"

/******************************************************************************************
*	函数名        : Init_Flags
*	函数功能      : 配置BF561的PF寄存器
*	说明          : PF各寄存器的介绍请参考ADI公司的
*				  《ADSP-BF561 Blackfin Processor Hardware Reference》
*				  14章节"Programmable Flags"
*******************************************************************************************/
void Init_PF_Key(void)
{
	/*配置按键对应的PF输入使能寄存器,使之引脚输入使能,且不触发中断*/

    *pFIO2_DIR &=~(KEY1|KEY2|KEY3);
   	*pFIO2_EDGE&=~(KEY1|KEY2|KEY3);
   	*pFIO2_POLAR&=~(KEY1|KEY2|KEY3);
   	*pFIO2_MASKA_C=(KEY1|KEY2|KEY3);
   	*pFIO2_MASKB_C=(KEY1|KEY2|KEY3);
   	*pFIO2_INEN|= (KEY1|KEY2|KEY3);
	ssync();
}
/*******************************************************************************************
*	函数名      : PFKey_Exp
*	函数功能    : 轮询按键状态,发生变化改变对应LED状态
*	说明        : 
********************************************************************************************/
void PFKey_Exp(void)
{
 	unsigned short pf_data;
	int led = 0x00;
	Init_PF_Key();   	 	

	led=0;
	while (1){
	    led=0;
		pf_data = *pFIO2_FLAG_D;		//读FIO1_FLAG_D寄存器里的值
		
		if ((pf_data & KEY1)==0)
		{
		    led|=(1<<0);
		}
		if ((pf_data & KEY2)==0)
		{
		    led|=(1<<1);
		}
		if ((pf_data & KEY3)==0)
		{
		    led|=(1<<2);
		}
		SetLED(led);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?