历史上的今天
今天是:2025年01月11日(星期六)
2020年01月11日 | 初始化中断按键(2440)
2020-01-11 来源:eefocus
以下是主要代码:
1.led.c
#define GPBCON (volatile unsigned long*)0x56000010
#define GPBDAT (volatile unsigned long*)0x56000014
void led_init()
{
*(GPBCON) = 0x400;
}
void led_off()
{
*(GPBDAT) = 0x7ff;
}
void led_on()
{
*(GPBDAT) = 0x0;
}
2.interrupt.c
/*interrupt registes*/
#define SRCPND (volatile unsigned long *)0x4A000000
#define INTMOD (volatile unsigned long *)0x4A000004
#define INTMSK (volatile unsigned long *)0x4A000008
#define PRIORITY (volatile unsigned long *)0x4A00000c
#define INTPND (volatile unsigned long *)0x4A000010
#define INTOFFSET (volatile unsigned long *)0x4A000014
#define SUBSRCPND (volatile unsigned long *)0x4A000018
#define INTSUBMSK (volatile unsigned long *)0x4A00001c
#define EINTMASK (volatile unsigned long *)0x560000a4
#define EINTPEND (volatile unsigned long *)0x560000a8
void init_irq()
{
// 在EINTMASK寄存器中使能它们
*(EINTMASK) &= (~(1<<8)) & (~(1<<11)) & (~(1<<13)) & (~(1<<14));
// EINT8_23使能
*(INTMSK) &= ~(1<<5);
__asm__(
/*开中断*/
"mrs r0,cpsrn"
"bic r0, r0, #0x80n"
"msr cpsr_c, r0n"
:
:
);
}
void handle_int()
{
/*读取产生中断的源*/
unsigned long value = *(EINTPEND) & ((1<<8)|(1<<11)|(1<<13)|(1<<14));
switch(value)
{
case (1<<8): //K1
led_on();
break;
case (1<<11): //K2
led_off();
break;
case (1<<13): //K3
led_on();
break;
case (1<<14): //K4
led_off();
break;
default:
break;
}
/* 中断清除 相应的位 1 */
*(EINTPEND) = value;
*(SRCPND) = 1 << 5;
*(INTPND) = 1 << 5;
}
3.button.c
#define GPGCON (volatile unsigned long *)0x56000060
/*
* K1,K2,K3,K4对应GPG0、GPG3、GPG5、GPG6
*/
#define GPG0_int (0x2<<(0*2))
#define GPG3_int (0x2<<(3*2))
#define GPG5_int (0x2<<(5*2))
#define GPG6_int (0x2<<(6*2))
#define GPG0_msk (3<<(0*2))
#define GPG3_msk (3<<(3*2))
#define GPG5_msk (3<<(5*2))
#define GPG6_msk (3<<(6*2))
void button_init()
{
*(GPGCON) &= ~(GPG0_msk | GPG3_msk | GPG5_msk | GPG6_msk);
*(GPGCON) |= GPG0_int | GPG3_int | GPG5_int | GPG6_int;
}
@以上代码仅供参考。
/******************************** Stay hungry, Stay foolish. @Rocky ********************************/
史海拾趣
|
求梅兰日兰UPS中文使用说明书 请问哪位师傅手里有梅兰日兰UPS中文使用说明书啊,帮忙给传一下,或者给个网址也行啊,UPS是4.2KW、6KVA,我先谢谢啦!… 查看全部问答> |
|
1.怎么向8051f320的usb口发送信号? 我是指pc端的软件编写。 320是会被识别为hid类吗? 用到的api主要有哪些呢?vb vc 的都行啊 最好是vb 2。我要用320实现usb信号转变成串口信号的功能,主要为了解决笔记本缺少com口的问题。方法是从usb接受数据 ...… 查看全部问答> |
|
哪为江湖大虾有研究过播放器Mplayer的原代码啊,特别是它Demux是如何处理的,最好能讲讲Mplayer的主处理函数,和详细的Demux过程?小弟不胜感激!… 查看全部问答> |
|
// Find and bind to a collector device zb_BindDevice( TRUE, SENSOR_REPORT_CMD_ID, (uint8 *)NULL ); 如果终端设备的父地址为0,即协调器,可以绑定成功 如果终端设备的父地址非0,即路由器,通过 ...… 查看全部问答> |




