现在S3C6410的程序代码比较少,资料也不多。原本想整理一个完整的资料集再帖出来,发现比较困难,就把已经整理好的发一下吧。希望对大家有帮助!
先发一个GPIO的操作程序:
// gpioDlg.cpp : implementation file
//
#include "stdafx.h"
#include "gpio.h"
#include "gpioDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define IOCTL_LED_LED1_OPEN 0x04001060
#define IOCTL_LED_LED1_CLOSE 0x04001061
#define IOCTL_LED_LED2_OPEN 0x04001070
#define IOCTL_LED_LED2_CLOSE 0x04001071
#define IOCTL_LED_LED3_OPEN 0x04001080
#define IOCTL_LED_LED3_CLOSE 0x04001081
#define IOCTL_LED_LED4_OPEN 0x04001090
#define IOCTL_LED_LED4_CLOSE 0x04001091
// CgpioDlg dialog
HANDLE hLED = 0;
CgpioDlg::CgpioDlg(CWnd* pParent /*=NULL*/)
: CDialog(CgpioDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CgpioDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CgpioDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, &CgpioDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_RADIO1, &CgpioDlg::OnBnClickedRadio1)
ON_BN_CLICKED(IDC_RADIO2, &CgpioDlg::OnBnClickedRadio2)
ON_BN_CLICKED(IDC_RADIO3, &CgpioDlg::OnBnClickedRadio3)
ON_BN_CLICKED(IDC_RADIO4, &CgpioDlg::OnBnClickedRadio4)
END_MESSAGE_MAP()
// CgpioDlg message handlers
BOOL CgpioDlg::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
// TODO: Add extra initialization here
TCHAR szPortName[] = TEXT("LED1:");
szPortName[5] = 0;
// open general purpose stream driver
hLED = CreateFile(szPortName,
GENERIC_READ|GENERIC_WRITE,
0, // devices must be opened w/exclusive-access
NULL, // no security attrs
OPEN_EXISTING, // devices must use OPEN_EXISTING
FILE_ATTRIBUTE_NORMAL,
NULL); // hTemplate must be NULL for comm devices
if (hLED == INVALID_HANDLE_VALUE) {
AfxMessageBox(TEXT("error"),0,0);
}
return TRUE; // return TRUE unless you set the focus to a control
}
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CgpioDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
if (AfxIsDRAEnabled())
{
DRA::RelayoutDialog(
AfxGetResourceHandle(),
this->m_hWnd,
DRA::GetDisplayMode() != DRA::Portrait ?
MAKEINTRESOURCE(IDD_GPIO_DIALOG_WIDE) :
MAKEINTRESOURCE(IDD_GPIO_DIALOG));
}
}
#endif
void CgpioDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
}
void CgpioDlg::OnBnClickedRadio1()
{
// TODO: Add your control notification handler code here
DWORD dwReturn = 0;
DWORD dwControlCode;
DWORD dwOutputValue;
static DWORD stt=0;
if (stt) { // high
dwControlCode = IOCTL_LED_LED1_OPEN;
stt = 0;
} else { // low
dwControlCode = IOCTL_LED_LED1_CLOSE;
stt = 1;
}
dwOutputValue = stt;
DeviceIoControl(hLED,
dwControlCode,
(LPVOID)&dwOutputValue,
sizeof(DWORD),
NULL,
0,
&dwReturn,
NULL);
}
void CgpioDlg::OnBnClickedRadio2()
{
// TODO: Add your control notification handler code here
DWORD dwReturn = 0;
DWORD dwControlCode;
DWORD dwOutputValue;
static DWORD stt=0;
if (stt) { // high
dwControlCode = IOCTL_LED_LED2_OPEN;
stt = 0;
} else { // low
dwControlCode = IOCTL_LED_LED2_CLOSE;
stt = 1;
}
dwOutputValue = stt;
DeviceIoControl(hLED,
dwControlCode,
(LPVOID)&dwOutputValue,
sizeof(DWORD),
NULL,
0,
&dwReturn,
NULL);
}
void CgpioDlg::OnBnClickedRadio3()
{
// TODO: Add your control notification handler code here
DWORD dwReturn = 0;
DWORD dwControlCode;
DWORD dwOutputValue;
static DWORD stt=0;
if (stt) { // high
dwControlCode = IOCTL_LED_LED3_OPEN;
stt = 0;
} else { // low
dwControlCode = IOCTL_LED_LED3_CLOSE;
stt = 1;
}
dwOutputValue = stt;
DeviceIoControl(hLED,
dwControlCode,
(LPVOID)&dwOutputValue,
sizeof(DWORD),
NULL,
0,
&dwReturn,
NULL);
}
void CgpioDlg::OnBnClickedRadio4()
{
// TODO: Add your control notification handler code here
DWORD dwReturn = 0;
DWORD dwControlCode;
DWORD dwOutputValue;
static DWORD stt=0;
if (stt) { // high
dwControlCode = IOCTL_LED_LED4_OPEN;
stt = 0;
} else { // low
dwControlCode = IOCTL_LED_LED4_CLOSE;
stt = 1;
}
dwOutputValue = stt;
DeviceIoControl(hLED,
dwControlCode,
(LPVOID)&dwOutputValue,
sizeof(DWORD),
NULL,
0,
&dwReturn,
NULL);
} |