猎头公司网站模板,建设网站方法有哪些,广告设计作品图片,二级域名网站优化1 CPU与硬件的交互方式
轮询
CPU执行程序时不断地询问硬件是否需要其服务#xff0c;若需要则给予其服务#xff0c;若不需要一段时间后再次询问#xff0c;周而复始
中断
CPU执行程序时若硬件需要其服务#xff0c;对应的硬件给CPU发送中断信号#xff0c;CPU接收到中…1 CPU与硬件的交互方式
轮询
CPU执行程序时不断地询问硬件是否需要其服务若需要则给予其服务若不需要一段时间后再次询问周而复始
中断
CPU执行程序时若硬件需要其服务对应的硬件给CPU发送中断信号CPU接收到中断信号后将当前的程序暂停下来转而去执行中断服务程序执行完成后再返回到被打断的点继续执行
DMA
硬件产生数据后硬件控制器可将产生的数据直接写入到存储器中整个过程无需CPU的参与
2 轮询方式实现按键实验
2.1 查看原理图 2.2 轮询方式寄存器分析 GPX1CON控制寄存器 2.3 轮询代码 #include exynos_4412.hint main()
{/*将GPX1_1设置成输入功能*/GPX1.CON GPX1.CON (~(0xF 4)); while(1){/*判断GPX1_1引脚的状态即判断按键是否按下*/if(!(GPX1.DAT (1 1))){printf(Key2 Pressed\n);/*等待松手*/while(!(GPX1.DAT (1 1)));}else{}}return 0;
}练习
使用轮询的方式检测Key3按键的状态实现按一次按键LED2点亮再次按下LED2熄灭
查看原理图 查看芯片手册 led的略 #include exynos_4412.hvoid Led_on(int num){switch(num){case 2:GPX2.DAT GPX2.DAT | (1 7);case 3:GPX1.DAT GPX1.DAT | (1 0);case 4:GPF3.DAT GPF3.DAT | (1 4);case 5:GPF3.DAT GPF3.DAT | (1 5);default:break;}}void Led_off(int num){switch(num){case 2:GPX2.DAT GPX2.DAT ~(1 7);case 3:GPX1.DAT GPX1.DAT ~(1 0);case 4:GPF3.DAT GPF3.DAT ~(1 4);case 5:GPF3.DAT GPF3.DAT ~(1 5);default:break;}}void Led_init(void){GPX2.CON GPX2.CON (~(0xF 28)) | (0x1 28); //LED2 GPX2_7 output//GPX1.CON GPX1.CON (~0xF) | 0x1; //LED3 GPX1_0 output//GPF3.CON GPF3.CON (~(0xF 16)) | (0x1 16); //LED4 GPF3_4 output//GPF3.CON GPF3.CON (~(0xF 20)) | (0x1 20); //LED5 GPF3_5 outputLed_off(2);}void Key_init(void)
{//GPIO X1_2 inputGPX1.CON GPX1.CON (~(0xf 8));
}int main(){int toggle 0;Key_init();Led_init();printf(start\n);for(;;){if(!(GPX1.DAT ( 1 2))){//等待松手while(!(GPX1.DAT (1 2)));printf(key press\n);if(toggle 0){Led_on(2);toggle 1;}else{Led_off(2);toggle 0;}}}return 0;}