📄 adceshidlg.cpp
字号:
// ADceshiDlg.cpp : implementation file
//
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include "stdafx.h"
#include "ADceshi.h"
#include "ADceshiDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CADceshiDlg dialog
CADceshiDlg::CADceshiDlg(CWnd* pParent /*=NULL*/)
: CDialog(CADceshiDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CADceshiDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CADceshiDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CADceshiDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CADceshiDlg, CDialog)
//{{AFX_MSG_MAP(CADceshiDlg)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CADceshiDlg message handlers
BOOL CADceshiDlg::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
//////////////////SPI
v_pSSPRegs = (volatile SSPreg*)VirtualAlloc(0, sizeof(SSPreg), MEM_RESERVE, PAGE_NOACCESS);
if (v_pSSPRegs == NULL)
{
DEBUGMSG (1,(TEXT("v_pSSPRegs is not allocated\n\r")));
return TRUE;
}
if (!VirtualCopy((PVOID)v_pSSPRegs, (PVOID)SSP_BASE, sizeof(SSPreg), PAGE_READWRITE|PAGE_NOCACHE))
{
DEBUGMSG (1,(TEXT("v_pSSPRegs is not mapped\n\r")));
return TRUE;
}
DEBUGMSG (1,(TEXT("v_pSSPRegs is mapped to %x\n\r"), v_pSSPRegs));
//////////////////GPIO
v_pIOPRegs = (volatile IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
if (v_pIOPRegs == NULL)
{
DEBUGMSG (1,(TEXT("v_pIOPRegs is not allocated\n\r")));
return TRUE;
}
if (!VirtualCopy((PVOID)v_pIOPRegs, (PVOID)IOP_BASE, sizeof(IOPreg), PAGE_READWRITE|PAGE_NOCACHE))
{
DEBUGMSG (1,(TEXT("v_pIOPRegs is not mapped\n\r")));
return TRUE;
}
DEBUGMSG (1,(TEXT("v_pIOPRegs is mapped to %x\n\r"), v_pIOPRegs));
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CADceshiDlg::OnButton1()
{
unsigned long *p;
p=new unsigned long[20];
int i;
v_pSSPRegs->rSPPRE0=0x32; // 波特率预分频=50 rate=PCLK/2/(Prescaler value+1)
//v_pSSPRegs->rSPCON0=0x18; // 查询模式,允许SCK,主设备,
v_pSSPRegs->rSPCON0=(0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);
for(i=0;i<10;i++)
v_pSSPRegs->rSPTDAT0=0x03;
// v_pIOPRegs->rGPECON|=0x0a800000;
//v_pIOPRegs->rGPECON&=(~0x05400000);
v_pIOPRegs->rGPECON=(2<<26)|(2<<24)|(2<<22);
v_pIOPRegs->rGPEUP = 0xffff;
v_pIOPRegs->rGPEUP &= 0xC7ff;
v_pIOPRegs->rGPGCON &= ~(0x3 << 4);
v_pIOPRegs->rGPGCON |= (0x1 << 4);
v_pIOPRegs->rGPGUP &= ~(0x1 << 2);
// Initialize CS is high
v_pIOPRegs->rGPGDAT |= (0x1 << 2);
v_pSSPRegs->rSPPIN0=(0<<2)|(1<<1)|(0<<0);
// v_pIOPRegs->rGPEUP|=0x3800
v_pIOPRegs->rGPHCON|=0x0400;;
v_pIOPRegs->rGPHCON&=(~0x0800);
v_pIOPRegs->rGPHUP&=(~0x20);
v_pIOPRegs->rGPHDAT|=0x20;
RETAILMSG(1,(TEXT("rSPSTA0 '%x'\r\n"),v_pSSPRegs->rSPRDAT0));
for(unsigned long j=0;j<20;j++)
{
// v_pIOPRegs->rGPHDAT&=(~0x20);
v_pIOPRegs->rGPGDAT &= ~(0x1 << 2);
//Sleep(2000);
while(!(v_pSSPRegs->rSPSTA0 & 0x01));
p[j]=v_pSSPRegs->rSPRDAT0;
// p[j]<<8;
//while(!(v_pSSPRegs->rSPSTA0 & 0x01));
// p[j]=p[j]+v_pSSPRegs->rSPRDAT0;
v_pSSPRegs->rSPTDAT0=0xFF;
// v_pIOPRegs->rGPHDAT|=0x20;
v_pIOPRegs->rGPGDAT |= (0x1 << 2);
Sleep(2000);
RETAILMSG(1,(TEXT("rSPSTA0 '%x'\r\n"),v_pSSPRegs->rSPSTA0));
}
//char *p;
//int n;
//p=malloc(_MAX_PATH );
//
for(unsigned long m=0;i<20;i++)
RETAILMSG(1,(TEXT("ADC_READ: Read Success! ADCDAT0 '%x'\r\n"),p[m]));
// TODO: Add your control notification handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -