⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iotestdlg.cpp

📁 GPIO实验以核心板上的4的LED灯作为指示
💻 CPP
📖 第 1 页 / 共 2 页
字号:
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIOTestDlg message handlers

BOOL CIOTestDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen
	AfxBeginThread((AFX_THREADPROC)AinThread,this);
	AfxBeginThread((AFX_THREADPROC)KeyBoardThread,this);
	
	// TODO: Add extra initialization here
isChange=FALSE;
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 0));//GPH0 = input
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 2));//GPH1 = input	
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 4));//GPH2 = input	
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 6));//GPH3 = input	
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 8));//GPH4 = input	
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 10));//GPH5 = input
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 12));//GPH6 = input
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 14));//GPH7 = input

	pIOPreg->rGPECON = (pIOPreg->rGPECON & ~(0x3 << 24));//GPE12 = 高度输入

	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 6)) | (0x1 << 6);//GPG3		行走
	//pIOPreg->rGPGDAT |= (0x1 << 3);
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 10)) | (0x1 << 10);//GPG5	制动
	//pIOPreg->rGPGDAT |= (0x1 << 5);

	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 12)) | (0x1 << 12);//GPG6	前左转
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 14)) | (0x1 << 14);//GPG7	后左转
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 16)) | (0x1 << 16);//GPG8	前右转
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 22)) | (0x1 << 22);//GPG11	后右转
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 18)) | (0x1 << 18);//GPH9	前左降
	pIOPreg->rGPFCON = (pIOPreg->rGPFCON & ~(0x3 << 0)) | (0x1 << 0);//GPF0		前左升
	pIOPreg->rGPFCON = (pIOPreg->rGPFCON & ~(0x3 << 12)) | (0x1 << 12);//GPF6	前右降
	pIOPreg->rGPECON = (pIOPreg->rGPECON & ~(0x3 << 30)) | (0x1 << 30);//GPE15	前右升
	pIOPreg->rGPECON = (pIOPreg->rGPECON & ~(0x3 << 28)) | (0x1 << 28);//GPE14	后左降
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 20)) | (0x1 << 20);//GPH10	后左升
	pIOPreg->rGPBCON = (pIOPreg->rGPBCON & ~(0x3 << 0)) | (0x1 << 0);//GPB0		后右降
	pIOPreg->rGPBCON = (pIOPreg->rGPBCON & ~(0x3 << 2)) | (0x1 << 2);//GPB1		后右升

	return TRUE;  // return TRUE  unless you set the focus to a control
}


void CIOTestDlg::OnButtonGpe11() 
{
pIOPreg->rGPGDAT |= (0x1 << 6);
Sleep(300);
pIOPreg->rGPGDAT &= ~ (0x1 << 6);
}

void CIOTestDlg::OnButtonGpe12() 
{
pIOPreg->rGPGDAT |= (0x1 << 7);
Sleep(300);
pIOPreg->rGPGDAT &= ~ (0x1 << 7);
}

void CIOTestDlg::OnButtonGpe13() 
{
pIOPreg->rGPGDAT |= (0x1 << 8);
Sleep(300);
pIOPreg->rGPGDAT &= ~ (0x1 << 8);
}

void CIOTestDlg::OnButtonGpe14() 
{
pIOPreg->rGPGDAT |= (0x1 << 11);
Sleep(300);
pIOPreg->rGPGDAT &= ~ (0x1 << 11);
}
		
void CIOTestDlg::OnButtonGpe15() 
{
pIOPreg->rGPBDAT |= (0x1 << 0);
Sleep(100);
pIOPreg->rGPBDAT &= ~ (0x1 << 0);
}

void CIOTestDlg::OnButtonGpf0() 
{
pIOPreg->rGPHDAT |= (0x1 << 9);
Sleep(100);
pIOPreg->rGPHDAT &= ~ (0x1 << 9);
}

void CIOTestDlg::OnButtonGpf4() 
{
pIOPreg->rGPFDAT |= (0x1 << 0);
Sleep(100);
pIOPreg->rGPFDAT &= ~ (0x1 << 0);
}
void CIOTestDlg::OnButtonGpf5() 
{
pIOPreg->rGPFDAT |= (0x1 << 6);
Sleep(100);
pIOPreg->rGPFDAT &= ~ (0x1 << 6);
}

void CIOTestDlg::OnButtonGpf6() 
{
pIOPreg->rGPEDAT |= (0x1 << 15);
Sleep(100);
pIOPreg->rGPEDAT &= ~ (0x1 << 15);
}

void CIOTestDlg::OnButtonShutdown() 
{
pIOPreg->rGPGDAT &= ~ (0x1 << 6);Sleep(10);
pIOPreg->rGPGDAT &= ~ (0x1 << 7);Sleep(10);
pIOPreg->rGPGDAT &= ~ (0x1 << 8);Sleep(10);
pIOPreg->rGPGDAT &= ~ (0x1 << 11);Sleep(10);
pIOPreg->rGPHDAT &= ~ (0x1 << 9);Sleep(10);
pIOPreg->rGPFDAT &= ~ (0x1 << 0);Sleep(10);
pIOPreg->rGPFDAT &= ~ (0x1 << 6);Sleep(10);
pIOPreg->rGPEDAT &= ~ (0x1 << 14);Sleep(10);
pIOPreg->rGPEDAT &= ~ (0x1 << 15);Sleep(10);
pIOPreg->rGPHDAT &= ~ (0x1 << 10);Sleep(10);
pIOPreg->rGPBDAT &= ~ (0x1 << 0);Sleep(10);
pIOPreg->rGPBDAT &= ~ (0x1 << 1);Sleep(10);
}

void CIOTestDlg::OnButtonGpb0() 
{
pIOPreg->rGPEDAT |= (0x1 << 14);
Sleep(100);
pIOPreg->rGPEDAT &= ~ (0x1 << 14);
}

void CIOTestDlg::OnButtonGpb1() 
{
pIOPreg->rGPHDAT |= (0x1 << 10);
Sleep(100);
pIOPreg->rGPHDAT &= ~ (0x1 << 10);
}

void CIOTestDlg::OnButton1() 
{
	pIOPreg->rGPHDAT |= (0x1 << 9);
	Sleep(10);
	pIOPreg->rGPFDAT |= (0x1 << 6);
	Sleep(10);
	pIOPreg->rGPEDAT |= (0x1 << 14);
	Sleep(10);
	pIOPreg->rGPBDAT |= (0x1 << 0);
	Sleep(100);
pIOPreg->rGPHDAT &= ~ (0x1 << 9);Sleep(10);
pIOPreg->rGPFDAT &= ~ (0x1 << 6);Sleep(10);
pIOPreg->rGPEDAT &= ~ (0x1 << 14);Sleep(10);
pIOPreg->rGPBDAT &= ~ (0x1 << 0);Sleep(10);
}

void CIOTestDlg::OnButtonGpb6() 
{
pIOPreg->rGPBDAT |= (0x1 << 1);
Sleep(100);
pIOPreg->rGPBDAT &= ~ (0x1 << 1);
}

void CIOTestDlg::OnButtonUp() 
{
pIOPreg->rGPFDAT |= (0x1 << 0);Sleep(20);
pIOPreg->rGPEDAT |= (0x1 << 15);Sleep(20);
pIOPreg->rGPHDAT |= (0x1 << 10);Sleep(20);
pIOPreg->rGPBDAT |= (0x1 << 1);Sleep(20);
Sleep(200);
pIOPreg->rGPFDAT &= ~ (0x1 << 0);Sleep(20);
pIOPreg->rGPEDAT &= ~ (0x1 << 15);Sleep(20);
pIOPreg->rGPHDAT &= ~ (0x1 << 10);Sleep(20);
pIOPreg->rGPBDAT &= ~ (0x1 << 1);Sleep(20);

}

void RTControl(void *d)
{
	CIOTestDlg *dlg = (CIOTestDlg *) d;
	
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 12)) | (0x1 << 12);//GPG6	前左转
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 14)) | (0x1 << 14);//GPG7	后左转
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 16)) | (0x1 << 16);//GPG8	前右转
	pIOPreg->rGPGCON = (pIOPreg->rGPGCON & ~(0x3 << 22)) | (0x1 << 22);//GPG11	后右转
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 18)) | (0x1 << 18);//GPH9	前左降
	pIOPreg->rGPFCON = (pIOPreg->rGPFCON & ~(0x3 << 0)) | (0x1 << 0);//GPF0		前左升
	pIOPreg->rGPFCON = (pIOPreg->rGPFCON & ~(0x3 << 12)) | (0x1 << 12);//GPF6	前右降
	pIOPreg->rGPECON = (pIOPreg->rGPECON & ~(0x3 << 30)) | (0x1 << 30);//GPE15	前右升
	pIOPreg->rGPECON = (pIOPreg->rGPECON & ~(0x3 << 28)) | (0x1 << 28);//GPE14	后左降
	pIOPreg->rGPHCON = (pIOPreg->rGPHCON & ~(0x3 << 20)) | (0x1 << 20);//GPH10	后左升
	pIOPreg->rGPBCON = (pIOPreg->rGPBCON & ~(0x3 << 0)) | (0x1 << 0);//GPB0		后右降
	pIOPreg->rGPBCON = (pIOPreg->rGPBCON & ~(0x3 << 2)) | (0x1 << 2);//GPB1		后右升

	pIOPreg->rGPECON = (pIOPreg->rGPECON & ~(0x3 << 24));//GPE12 = 高度输入

	pIOPreg->rGPHDAT |= (0x1 << 9);
	Sleep(10);
	pIOPreg->rGPFDAT |= (0x1 << 6);
	Sleep(10);
	pIOPreg->rGPEDAT |= (0x1 << 14);
	Sleep(10);
	pIOPreg->rGPBDAT |= (0x1 << 0);

	Sleep(3000);

	pIOPreg->rGPHDAT &= ~(0x1 << 9);
	Sleep(10);
	pIOPreg->rGPFDAT &= ~(0x1 << 6);
	Sleep(10);
	pIOPreg->rGPEDAT &= ~(0x1 << 14);
	Sleep(10);
	pIOPreg->rGPBDAT &= ~(0x1 << 0);

	DWORD			submask;
	TCHAR a[100];
	int x=0,y=0;
	while(1){
		submask=pIOPreg->rGPEDAT;
		wsprintf(a,L"%x",submask);
		dlg->SetDlgItemText(IDC_HI,a);
		if((submask & 0x1000) == 0){
			MessageBox(NULL,L"达到高度",L"DD",MB_OK);
			break;
		}
		Sleep(200);
	}
	
}

void CIOTestDlg::OnButtonH() 
{
	AfxBeginThread((AFX_THREADPROC)RTControl,this);
}

void CIOTestDlg::OnButton2() 
{
	pIOPreg->rGPBCON = (pIOPreg->rGPBCON & ~(0x3 << 12)) | (0x1 << 12);
	pIOPreg->rGPBDAT |= (0x1 << 6);
}

void CIOTestDlg::OnButton3() 
{
	pIOPreg->rGPBCON = (pIOPreg->rGPBCON & ~(0x3 << 12)) | (0x1 << 12);
	pIOPreg->rGPBDAT &= ~(0x1 << 6);
}

⌨️ 快捷键说明

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