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

📄 44blib.c

📁 基于mcx314的运动控制
💻 C
📖 第 1 页 / 共 2 页
字号:
    //PORT A GROUP
    //ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0
    //     1,     1,   1,     1,     1,     1,     1,     1,     1,    1
    rPCONA=0x3ff;

    //PORT B GROUP
    //  GPB10 GPB9  GPB8  GPB7  GPB6  GPB5  GPB4  GPB3  GPB2  GPB1 GPB0
    //  nGCS5 nGCS4 nGCS3 nGCS2 nGCS1 nWBE3 nWBE2 nSRAS nSCAS SCLK SCKE
    //  0,    1,    x1,   x1,   x1,   x0,    x0,    1,    1,    1,   1
    rPCONB=0x3cf;
    rPDATB=0x000;



    //PORT C GROUP
//#if (BUSWIDTH==32)
    //D31 D30 D29 D28 D27 D26 D25 D24 D23 D22 D21 D20 D19 D18 D17 D16
    // 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
//    rPCONC=0xaaaaaaaa;
//    rPUPC=0xffff;
//#else //BUSWIDTH=16
    //PORT C GROUP
    
    //Input 																						(00)
    //Output																						(01)
    //D31   D30   D29  D28  D27   D26   D25     D24     D23 D22 D21 D20 D19    D18   D17   D16		(10)
    //nCTS0 nRTS0 RxD1 TxD1 nCTS1 nRTS1 nXDREQ1 nXDACK1 VD4 VD5 VD6 VD7 IISCLK IISDI IISDO IISLRCK	(11)
	
	/*  PC15	14		13		12		11		10		9		8	*/
	/*	i		o		i	    i	 	i		i		o		o	*/
	/*	NC		Nand	NC		NC		NC		Nand	LCD		LCD	*/
	/*  00		01		00		00		00		00		01		01	*/

	/*  PC7		6		5		4		3		2		1		0	*/
	/*   o		o		o		o		i		i		i		i	*/
	/*   LCD	LCD		LCD		LCD		NC	 	NC	 	NC	 	NC*/
	/*   01		01		01		01		00		00		00		00	*/
    rPCONC=0x10055500;
    rPDATC=0x4000;
    rPUPC=0x0000;

//#endif



	/*  PORT D GROUP(I/O OR LCD)										*/
	// 00-input 01-output 10-sfr

	/*  BIT  7		6		5		4		3		2		1		0	*/
	/*      VF		VM		VLINE	VCLK	VD3		VD2		VD1		VD0	*/

	/*  PD  7		6		5		4		3		2		1		0	*/
	/*      o		o		o		o		o		o		o		o	*/
	/*    LCD		LCD		LCD		LCD		LCD	 	LCD	 	LCD	 	LCD	*/
	/*	   01		01		01		01		01		01		01		01	*/

    rPCOND=0x5555;
	rPDATD= 0x00;///
    rPUPD=0x00;///

    
    
    
    //PORT E GROUP
    /*  Bit 8     7     6     5     4     3     2     1     0      */
    /*    ENDLAN  LED3  LED2  LED1  LED0  BEEP  RXD0  TXD0  CLKOUT  */
    /*      00    01    01    01    01    01    10    10    11      */
    rPCONE  = 0x556b;
    //rPCONE  =0xaaab;
    rPDATE  = 0x357;
    rPUPE   = 0x6;

    
    
    
    //PORT F GROUP
    //All input
    /*  Bit 8    7    6    5    4   3   2  1   0   */
    /*      IN   IN   IN   IN   OUT OUT In IN  IN      */
    /*      000  000  000  000  01  01  00 00  00    */
    //      0x0
    rPCONF=0x00140;
    rPDATF=0x1ef;
    rPUPF=0x000;

	
	
	
	//PORT G GROUP
	/*  BIT7	6		5		4		3		2		1		0	 */
	/*	INT7	INT6	INT5	INT4	INT3	INT2	INT1	INT0	*/
	/* PS2_CK	PS2_D	D12-IO	SM5K	NC		NC		NC		USB	*/
	/*    11    00      00      11      00      00      00      11       */
    //PORT G GROUP
    //All input
    //    0x0
	rPCONG = 0xc303;
	rPDATG = 0xff;
	rPUPG  = 0x00;	//should be enabled  

	rSPUCR=0x7;  //D15-D0 pull-up disable

    rEXTINT=0x22222222;  //All EINT[7:0] will be falling edge triggered.
}


/****************************************************************************
【功能说明】IO端口功能、方向设定
****************************************************************************/
void OPort_Init(void)
{
	// PORT A GROUP
	/*  BIT 9	8	7	6	5	4	3	2	1	0	*/
	/*  A24	  A23	A22	A21	A20	A19	A18	A17	A16	A0	*/	      
	/*  1		1	1	1	1	1	1	1	1	1	*/
	rPCONA = 0x3ff;	

	// PORT B GROUP
	/* BIT 10   9    8       7      6        5     4     3     2     1     0    */
	/*     /CS5 /CS4 /CS3    /CS2   /CS1     nWBE3 nWBE2 /SRAS /SCAS SCLS  SCKE	*/
	/*     NC   NC   RTL8019 USBD12 NV_Flash NC    NC    Sdram Sdram Sdram Sdram*/
	/*     0,   0,   1,      1,     1,       0,    0,    1,    1,    1,    1    */
	rPDATB = 0x1cf;
	rPCONB = 0x1cf;
    
	//PORT C GROUP
	//BUSWIDTH=16													*/
	/*  PC15		14		13		12		11		10		9		8	*/
	/*	o		o		RXD1	TXD1	o		o		o		o	*/
	/*	NC		NC		Uart1	Uart1	NC		NC		NC		NC	*/
	/*   01		01		11		11		01		01		01		01	*/

	/*  PC7		6		5		4		3		2		1		0	*/
	/*   o		o		o		o		o		o		o		o	*/
	/*   NC		NC		NC		NC		NFALE 	NFCLE 	NFCE 	NFRB*/
	/*   01		01		01		01		01		01		01		00	*/
	rPDATC = 0x0001;	//All IO is low
	rPCONC = 0x5f555554;	
	rPUPC  = 0x0300;	//PULL UP RESISTOR should be enabled to I/O

	//PORT D GROUP
	/*  PORT D GROUP(I/O OR LCD)										*/
	/*  BIT7		6		5		4		3		2		1		0	*/
	/*      VF		VM		VLINE	VCLK	VD3		VD2		VD1		VD0	*/
	/*	   01		01		01		01		01		01		01		01	*/
	/*      VF		VM		VLINE	VCLK	TDI		TMS		TDO		TCK	*/
	/*	   01		01		01		01		01		01		00		01	*/
	rPDATD= 0x00;
	rPCOND= 0x5551;	
	rPUPD = 0x00;
	//These pins must be set only after CPU's internal LCD controller is enable
	
	//PORT E GROUP 
	/*  Bit 8		7		6		5		4		3		2		1		0		*/
	/*		ENDLAN	LED3	LED2	LED1	LED0	BEEP	RXD0	TXD0	CLKOUT	*/ 
	/*      00		01		01		01		01		01		10		10		11		*/
	rPDATE	= 0x357;
	rPCONE	= 0x556b;	
	rPUPE	= 0x6;
	
	//PORT F GROUP
	/*  Bit8	7		6		5		 4		3		2		1		0		*/   
	/*  IISCLK	IISDI	IISDO	IISLRCK	Input	Input	Input	IICSDA	IICSCL	*/
	/*	100		010		010		001		00		01		01		10		10		*/
	rPDATF = 0x0;
	rPCONF = 0x22445a;
	rPUPF  = 0x1d3;

	//PORT G GROUP
	/*  BIT7		6		5		4		3		2		1		0	 */
	/*	INT7		INT6		INT5		INT4		INT3		INT2		INT1		INT0	*/
	/*    S3		S4		S5		S6		NIC		EXT		IDE		USB	*/
	/*      11      11      11      11      11      11      11      11       */
	rPDATG = 0xff;
	rPCONG = 0x0000;
	rPUPG  = 0x00;	//should be enabled  

	rSPUCR=0x7;  //D15-D0 pull-up disable

	/*所有的外部硬件中断为低电平触发*/
	rEXTINT=0x0;
}
//***************************************************************************


/****************************************************************************
【功能说明】定时器初始化,让PE7、6、5、4输出PWM信号
****************************************************************************/
void Timer_PWM_Led(void)
{
  rPCONE = 0xaa6b;
  //PE8-P0的引脚功能依次为:ENDIAN TOUT4、3、2、1、0 RXD0 TXD0 FOUT
  rPUPE |= 0xf0;    //TOUT4、3、2、1、0设置成不上拉,其他引脚上拉

  rTCFG0 = 0x23f3f3f;   //死区长度为2;    Prescaler0/1/2=3f,3f,3f
  //定时器输入时钟频率计算公式 = MCLK/{prescaler+1}/{divider value}
  rTCFG1 = 0x222222;    // Interrupt; Devider value = 1/8
  //定时器时钟 = (MCLK/prescaler+1)/8

  rTCNTB1 = 24000;    //决定TOUT 1引脚PWM输出信号的频率
  rTCNTB2 = 37000;    //决定TOUT 2引脚PWM输出信号的频率
  rTCNTB3 = 50000;    //决定TOUT 3引脚PWM输出信号的频率
  rTCNTB4 = 64000;    //决定TOUT 4引脚PWM输出信号的频率

  rTCMPB1 = 12000;    //决定TOUT 1引脚PWM输出高电平的信号宽度(rTCMPB1<rTCNTB1)
  rTCMPB2 = 18000;    //决定TOUT 2引脚PWM输出高电平的信号宽度(rTCMPB2<rTCNTB2)
  rTCMPB3 = 30000;    //决定TOUT 3引脚PWM输出高电平的信号宽度(rTCMPB3<rTCNTB3)
  rTCMPB4 = 42000;    //决定TOUT 4引脚PWM输出高电平的信号宽度(rTCMPB4<rTCNTB4)

//  rTCON = 0xaaaa0a;   //自动重装,输出取反关闭,更新TCNTBn、TCMPBn,死区控制器关闭
//  rTCON = 0x999909;   //开始PWM输出(不使用死区控制器,上升沿会非常陡峭,是标准矩形波)
//  rTCON = 0xeeee0e;   //自动重装,输出取反打开,更新TCNTBn、TCMPBn,死区控制器关闭
//  rTCON = 0xdddd0d;   //开始PWM输出(不使用死区控制器,上升沿会非常陡峭,是标准矩形波)
//  rTCON = 0xaaaa1a;   //自动重装,输出取反关闭,更新TCNTBn、TCMPBn,死区控制器打开
//  rTCON = 0x999919;   //开始PWM输出(使用死区控制器,上升沿会变得平滑,适用于功率器件控制)

  rTCON = 0xaaaa0a;   //自动重装,输出取反关闭,更新TCNTBn、TCMPBn,死区控制器关闭
  rTCON = 0x999900;   //停止蜂鸣器的叫声
}
//***************************************************************************


void MemCfgInit(void)
{
	rNCACHBE0 = ((unsigned int)(Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);
	rNCACHBE1 = (0xf000U<<16)|(0xe000);
}

void CacheDisable(void)
{
	rSYSCFG = SYSCFG_0KB;
}

void CacheEnable(void)
{
	rSYSCFG = SYSCFG_8KB;
}

void CacheFlush(void)
{
	int i, saveSyscfg;
    
    saveSyscfg = rSYSCFG;

    rSYSCFG = SYSCFG_0KB;
    for(i = 0x10004000; i<0x10004800; i+=16)
		*((int *)i) = 0x0;
    rSYSCFG = saveSyscfg;
}

⌨️ 快捷键说明

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