TQ210按键驱动

来源:互联网 发布:上海东华大学网络教育 编辑:程序博客网 时间:2024/05/08 18:29

老惯例,裸机驱动!

void key_init(void){// 外部中断相关的设置// 1111 = EXT_INT[0] =PH0_0GPH0CON |= 0xF<<0|0xF<<4|0xF<<8|0xF<<12|0xF<<16|0xF<<20;// 010 = Falling edge triggeredEXT_INT_0_CON |= 1<<1|1<<5|1<<9|1<<13|1<<17|1<<21;// unmasked 外部中断控制寄存器0 = Enables InterruptEXT_INT_0_MASK &= ~(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5);//GPH2GPH2CON |= 0xF<<24|0xF<<28;// 010 = Falling edge triggeredEXT_INT_2_CON |= 1<<25|1<<29;// unmasked 外部中断控制寄存器0 = Enables InterruptEXT_INT_2_MASK &= ~(1<<6|1<<7);// 设置中断EXT_INT[0] 的处理函数  isr_key为中断处理函数intc_setvectaddr(NUM_EINT0, isr_key0);intc_setvectaddr(NUM_EINT1, isr_key1);intc_setvectaddr(NUM_EINT2, isr_key2);intc_setvectaddr(NUM_EINT3, isr_key3);intc_setvectaddr(NUM_EINT4, isr_key4);intc_setvectaddr(NUM_EINT5, isr_key5);intc_setvectaddr(NUM_EINT16_31, isr_key6);//EXINT6-7共用一个中断源// 使能中断EXT_INT[0] intc_enable(NUM_EINT0);intc_enable(NUM_EINT1);intc_enable(NUM_EINT2);intc_enable(NUM_EINT3);intc_enable(NUM_EINT4);intc_enable(NUM_EINT5);intc_enable(NUM_EINT16_31);}void isr_key0(void)//按键0的中断处理函数{printf("EXT_INT[0] \r\n"); // clear VIC0ADDRintc_clearvectaddr();// clear pending bitEXT_INT_0_PEND |= 1<<0;}void isr_key1(void)//按键1的中断处理函数{printf("EXT_INT[1] \r\n");  // clear VIC0ADDRintc_clearvectaddr();// clear pending bitEXT_INT_0_PEND |= 1<<1;}void isr_key2(void)//按键2的中断处理函数{printf("EXT_INT[2] \r\n");  // clear VIC0ADDRintc_clearvectaddr();// clear pending bitEXT_INT_0_PEND |= 1<<2;}void isr_key3(void)//按键3的中断处理函数{printf("EXT_INT[3] \r\n");  // clear VIC0ADDRintc_clearvectaddr();// clear pending bitEXT_INT_0_PEND |= 1<<3;}void isr_key4(void)//按键4的中断处理函数{printf("EXT_INT[4] \r\n");// clear VIC0ADDRintc_clearvectaddr();// clear pending bitEXT_INT_0_PEND |= 1<<4;}void isr_key5(void)//按键5的中断处理函数{printf("EXT_INT[5] \r\n");// clear VIC0ADDRintc_clearvectaddr();// clear pending bitEXT_INT_0_PEND |= 1<<5;}void isr_key6(void)//按键6和7的中断处理函数{if(!(EXT_INT_2_PEND&(1<<6)))//判断是否为EXINT6中断{printf("EXT_INT[7] \r\n");// clear pending bitEXT_INT_2_PEND |= 1<<7;}else{printf("EXT_INT[6] \r\n");// clear pending bitEXT_INT_2_PEND |= 1<<6;}// clear VIC0ADDRintc_clearvectaddr();}

非全部代码,代码我传资源了。有需要的朋友下载吧!

http://download.csdn.net/detail/xsxsa/5505393

原创粉丝点击