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

📄 dandupwmdlg.cpp

📁 wince操作系统
💻 CPP
字号:
// DandupwmDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Dandupwm.h"
#include "DandupwmDlg.h"
#include "abc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDandupwmDlg dialog

CDandupwmDlg::CDandupwmDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDandupwmDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDandupwmDlg)
		// 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 CDandupwmDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDandupwmDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDandupwmDlg, CDialog)
	//{{AFX_MSG_MAP(CDandupwmDlg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDandupwmDlg message handlers

BOOL CDandupwmDlg::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



/*	v_pIOPRegs = (volatile IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
   if (v_pIOPRegs == NULL) 
   {
     RETAILMSG (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)) 
   {
      RETAILMSG (1,(TEXT("v_pIOPRegs is not mapped\n\r")));
     return TRUE;
   } 
    RETAILMSG (1,(TEXT("v_pIOPRegs is mapped to %x\n\r"), v_pIOPRegs));

   v_pCLKPWRegs = (volatile CLKPWRreg*)VirtualAlloc(0, sizeof(CLKPWRreg), MEM_RESERVE, PAGE_NOACCESS);
   if (v_pCLKPWRegs == NULL) 
   {
     RETAILMSG (1,(TEXT("v_pCLKPWRegs is not allocated\n\r")));
      return TRUE;
   }
   if (!VirtualCopy((PVOID)v_pCLKPWRegs, (PVOID)CLKPWR_BASE, sizeof(CLKPWRreg), PAGE_READWRITE|PAGE_NOCACHE)) 
   {
       RETAILMSG (1,(TEXT("v_pCLKPWRegs is not mapped\n\r")));
      return TRUE;
   }
   RETAILMSG (1,(TEXT("v_pCLKPWRegs is mapped to %x\n\r"), v_pCLKPWRegs));

   v_pPWMRegs= (volatile PWMreg*)VirtualAlloc(0, sizeof(PWMreg), MEM_RESERVE, PAGE_NOACCESS);
   if (v_pPWMRegs == NULL) 
   {
     RETAILMSG (1,(TEXT("v_pPWMRegs is not allocated\n\r")));
      return TRUE;
   }
   if (!VirtualCopy((PVOID)v_pPWMRegs, (PVOID)PWM_BASE, sizeof(PWMreg), PAGE_READWRITE|PAGE_NOCACHE)) 
   {
     RETAILMSG (1,(TEXT("v_pPWMRegs is not mapped\n\r")));
   return TRUE;
   }
    RETAILMSG (1,(TEXT("v_pPWMRegs is mapped to %x\n\r"), v_pPWMRegs));
	    // hdivn,pdivn FCLK:HCLK:PCLK
     //     0,0         1:1:1 
     //     0,1         1:1:2 
     //     1,0         1:2:2
     //     1,1         1:2:4
  //v_pCLKPWRegs->rCLKDIVN= (1<1)|1; //     1,1     1:2:4
//	v_pCLKPWRegs->rCLKDIVN|=0x03;
	SetTimer(1,50000,NULL);
    v_pCLKPWRegs->rCLKDIVN=0x03;
    //v_pCLKPWRegs->rMPLLCON= (0xa1<<12)|(0x3<<4) | 0x1; // FCLK=202.8MHz
   v_pIOPRegs->rGPBCON&=~0x03; //将GPB对应的设置为TOUT0
    v_pIOPRegs->rGPBCON|=0x02;
   v_pIOPRegs->rGPBUP|= 0x4;
   //v_pPWMRegs->rTCFG0=255; //预分频设置           1
   v_pPWMRegs->rTCFG1=3;//分频设置;//1/8      2
   v_pPWMRegs->rTCNTB0=125; //给两个缓冲器//赋值     3
   v_pPWMRegs->rTCMPB0=62;                    //      4
	v_pPWMRegs->rTCON|=(1<<1)|(1<<2);//manual update    5           
	v_pPWMRegs->rTCON &= ~(1<<1);  //                  6
     //RETAILMSG(1,(TEXT("pwm start !\r\n")));          
//	SetTimer(1,100000,NULL);//                          7
	v_pPWMRegs->rTCON |= (1<<3)|1;//start timer,auto reload 8  *

	// TODO: Add extra initialization here*/
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CDandupwmDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
   CDandupwmDlg abc;
	abc.pwm();
}

void CDandupwmDlg::pwm()
{
  	v_pIOPRegs = (volatile IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
   if (v_pIOPRegs == NULL) 
   {
     RETAILMSG (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)) 
   {
      RETAILMSG (1,(TEXT("v_pIOPRegs is not mapped\n\r")));
     // return TRUE;
   } 
    RETAILMSG (1,(TEXT("v_pIOPRegs is mapped to %x\n\r"), v_pIOPRegs));

   v_pCLKPWRegs = (volatile CLKPWRreg*)VirtualAlloc(0, sizeof(CLKPWRreg), MEM_RESERVE, PAGE_NOACCESS);
   if (v_pCLKPWRegs == NULL) 
   {
     RETAILMSG (1,(TEXT("v_pCLKPWRegs is not allocated\n\r")));
    //  return TRUE;
   }
   if (!VirtualCopy((PVOID)v_pCLKPWRegs, (PVOID)CLKPWR_BASE, sizeof(CLKPWRreg), PAGE_READWRITE|PAGE_NOCACHE)) 
   {
       RETAILMSG (1,(TEXT("v_pCLKPWRegs is not mapped\n\r")));
    //  return TRUE;
   }
   RETAILMSG (1,(TEXT("v_pCLKPWRegs is mapped to %x\n\r"), v_pCLKPWRegs));

   v_pPWMRegs= (volatile PWMreg*)VirtualAlloc(0, sizeof(PWMreg), MEM_RESERVE, PAGE_NOACCESS);
   if (v_pPWMRegs == NULL) 
   {
     RETAILMSG (1,(TEXT("v_pPWMRegs is not allocated\n\r")));
     // return TRUE;
   }
   if (!VirtualCopy((PVOID)v_pPWMRegs, (PVOID)PWM_BASE, sizeof(PWMreg), PAGE_READWRITE|PAGE_NOCACHE)) 
   {
     RETAILMSG (1,(TEXT("v_pPWMRegs is not mapped\n\r")));
    //return TRUE;
   }
    RETAILMSG (1,(TEXT("v_pPWMRegs is mapped to %x\n\r"), v_pPWMRegs));
	    // hdivn,pdivn FCLK:HCLK:PCLK
     //     0,0         1:1:1 
     //     0,1         1:1:2 
     //     1,0         1:2:2
     //     1,1         1:2:4
  //v_pCLKPWRegs->rCLKDIVN= (1<1)|1; //     1,1     1:2:4
//	v_pCLKPWRegs->rCLKDIVN|=0x03;
	SetTimer(1,50000,NULL);
    v_pCLKPWRegs->rCLKDIVN=0x03;
    //v_pCLKPWRegs->rMPLLCON= (0xa1<<12)|(0x3<<4) | 0x1; // FCLK=202.8MHz
   v_pIOPRegs->rGPBCON&=~0x03; //将GPB对应的设置为TOUT0
    v_pIOPRegs->rGPBCON|=0x02;
   v_pIOPRegs->rGPBUP|= 0x4;
   //v_pPWMRegs->rTCFG0=255; //预分频设置           1
   v_pPWMRegs->rTCFG1=3;//分频设置;//1/8      2
   v_pPWMRegs->rTCNTB0=125; //给两个缓冲器//赋值     3
   v_pPWMRegs->rTCMPB0=25;                    //      4
	v_pPWMRegs->rTCON|=(1<<1)|(1<<2);//manual update    5           
	v_pPWMRegs->rTCON &= ~(1<<1);  //                  6
     //RETAILMSG(1,(TEXT("pwm start !\r\n")));          
//	SetTimer(1,100000,NULL);//                          7
	v_pPWMRegs->rTCON |= (1<<3)|1;//start timer,auto reload 8  */
}

void CDandupwmDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	//  v_pPWMRegs->rTCON= 0x0;//stop timer
	  KillTimer(1);
      RETAILMSG(1,(TEXT("KillTimer(1) end! \r\n")));
	CDialog::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

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