ARM_4412_按键中断
来源:互联网 发布:完美日记化妆品知乎 编辑:程序博客网 时间:2024/06/06 01:00
#define GPX2CON (volatile unsigned int *)0x11000c40
#define GPX2DAT (volatile unsigned int *)0x11000c44
#define GPD0CON (volatile unsigned int *)0x114000a0
#define TCFG0 (volatile unsigned int *)0x139D0000
#define TCFG1 (volatile unsigned int *)0x139D0004
#define TCNTB0 (volatile unsigned int *)0x139D000c
#define TCMPB0 (volatile unsigned int *)0x139D0010
#define TCON (volatile unsigned int *)0x139D0008
#define GPA1CON (volatile unsigned int *)0x11400020
#define ULCON2 (volatile unsigned int *)0x13820000
#define UCON2 (volatile unsigned int *)0x13820004
#define UTRSTAT2 (volatile unsigned int *)0x13820010
#define UTXH2 (volatile unsigned int *)0x13820020
#define URXH2 (volatile unsigned int *)0x13820024
#define UBRDIV2 (volatile unsigned int *)0x13820028
#define UFRACVAL2 (volatile unsigned int *)0x1382002c
#define WTCON (volatile unsigned int *)0x10060000
#define WTDAT (volatile unsigned int *)0x10060004
#define WTCNT (volatile unsigned int *)0x10060008
//按钮2配置
#define GPX1CON (volatile unsigned int *)0x11000c20//复用关系
#define GPX1DAT (volatile unsigned int *)0x11000c24
#define EXT_INT41CON (volatile unsigned int *)0x11000e04//触发方式
#define EXT_INT41_MASK (volatile unsigned int *)0x11000f04//开启外部中断
#define EXT_INT41_PEND (volatile unsigned int *)0x11000f44//中断是否发生的标志位
//GIC
//中断源 57
#define ICCICR_CPU0 (volatile unsigned int *)0x10480000//哪个cpu来处理
#define ICCIAR_CPU0 (volatile unsigned int *)0x1048000c//判断哪个中断号产生的中断
#define ICDDCR (volatile unsigned int *)0x10490000//GIC总开关
#define ICCEOIR_CPU0 (volatile unsigned int *)0x10480010//清中断
#define ICDISER_CPU (volatile unsigned int *)0x10490104//配置GIC中的57号中断使能
#define ICDIPTR_CPU (volatile unsigned int *)0x10490838
void led_init(void)
{
*GPX2CON = *GPX2CON & ~(0xf << 28) | (0x1 << 28);//output
}
void led_on(void)
{
*GPX2DAT = *GPX2DAT | (0x1 << 7);
}
void led_off(void)
{
*GPX2DAT = *GPX2DAT & ~(0x1 << 7);
}
void delay_ms(void)
{
int i = 0;
while(i < 0x100000)
i++;
}
void buzzer_init(void)
{
*GPD0CON = *GPD0CON & ~(0xf) | 0x2; //复用功能 设置为TOUT0
//Timer Input Clock Frequency = PCLK/({prescaler value + 1})/{divider value}
*TCFG0 = 249; //一级分频
*TCFG1 = 3; //二级分频
*TCNTB0 = 500;
*TCMPB0 = 250;
*TCON = 0xa; //auto reload ; update TCNTB0 and TCMPB0 ; stop timer
*TCON = 0x9; //auto reload ; start timer
}
void uart_init(void)
{
*GPA1CON = *GPA1CON & ~0xff | 0x22; //复用关系
*ULCON2 = 0x3;
*UCON2 = *UCON2 & ~0xf | 0x5;
*UBRDIV2 = 53;
*UFRACVAL2 = 4;
}
char uart_rxd(void)
{
while(!(*UTRSTAT2 & 0x1))
;
return *URXH2;
}
void uart_txd(char c)
{
while(!(*UTRSTAT2 & 0x2))
;
*UTXH2 = c;
}
void wdt_init(void)
{
*WTCON = *WTCON & ~0xff<<8 | 249<<8;
*WTCON = *WTCON | 0x1<<5 | 0x3<<3 | 0x1;
*WTCNT = 1024;
}
void do_irq(void)
{
//设置中断发生的状态位
*EXT_INT41_PEND |= (0x3<<1);
if((*ICCIAR_CPU0 & 57))
{
if((*GPX1DAT & 0x2))
led_off();
else
led_on();
*ICCEOIR_CPU0 = *ICCEOIR_CPU0 & (~0x3ff) | 57;
}
if((*ICCIAR_CPU0 & 58))
{
if((*GPX1DAT & 0x2))
led_off();
else
led_on();
*ICCEOIR_CPU0 = *ICCEOIR_CPU0 & (~0x3ff) | 58;
}
}
void key2_init(void)
{
//复用关系
*GPX1CON = *GPX1CON |(0xff<<4);
//触发方式 双沿触发
*EXT_INT41CON = *EXT_INT41CON & ~(0x77)<<4 | (0x44<<4);
//开启EXT INT 41 这个中断
*EXT_INT41_MASK = *EXT_INT41_MASK & ~(0x2<<1);
//开启对应cpu来处理
*ICCICR_CPU0 = 0x1;
//开启GIC总开关
*ICDDCR = 0x1;
//开启对应GIC中的57号中断
*ICDISER_CPU |= (0x2<<25);
//开启CPU中哪个接口来处理中断
*ICDIPTR_CPU = *ICDIPTR_CPU& ~(0xffff)<<8 | 0x101<<8;
}
int main(void)
{
led_init();
// wdt_init();
// buzzer_init();
uart_init();
key2_init();
while(1)
{
//uart_txd(uart_rxd());
//*WTCNT = 0x4000;
//led_on();
// delay_ms();
//led_off();
//delay_ms();
}
}
阅读全文
0 0
- ARM_4412_按键中断
- 按键中断
- 按键中断
- 按键 中断
- 按键中断
- 按键中断
- 中断-----按键中断驱动程序
- ARM_4412_走马灯
- ARM_4412_蜂鸣器
- STM32按键扫描/按键中断/外部中断
- CC2530 按键中断--中断向量
- s3c2440中断总结+按键中断
- NIOS按键中断程序
- 2440 按键中断
- 外部中断按键驱动
- LINUX 按键中断
- 按键中断 定时器
- 按键INT0 INT1中断
- 其他题目---从5随机到7随机及其扩展
- 高德地图
- Android NDK中编译Openblas库
- 背包九讲
- 阿里巴巴Java开发规约插件使用
- ARM_4412_按键中断
- 创建高性能的虚拟机
- gcc/g++ 实战之编译的四个过程
- 结合STM32CubeMX创建Orcad原理图器件库文件
- 雾计算和边缘计算的区别
- python-026
- Android4.0的ActionBar左上角的返回键怎么监听
- mongodb 分页查询替代skip的方式
- [LeetCode]345. Reverse Vowels of a String