اطلاعیه

Collapse
No announcement yet.

راه اندازی UART3 به همراه وقفه و توابع CMSIS

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی UART3 به همراه وقفه و توابع CMSIS

    سلام دوستان من یک برنامه برای راه اندازی پورت سریال 3 نوشتم ولی کار نمیکنه ولی UART1,2 را تونستم راه بندازم
    این کد ها رو این جا میذارم ببینید مشکلش رو پیدا کنید
    شما اگر نمونه کدی دارید میشه به من بدید؟

    http://uplod.ir/m03tswx1upyd/RS485_[1].rar.htm


    کد:
    #include <lpc17xx.h>
    #include <string.h>
    #include <ctype.h>
    #include "LPC17xx_pinsel.h"
    #include "LPC17xx_uart.h"
    #include "debug_frmwrk.h"
    
    char Buffer0[500];
    char Buffer1[500];
    char Buffer3[500];
    char lcd[20];
    uint8_t input0;
    uint8_t input1;
    uint8_t input3;
    
    void upper(char Buf[],int LeN){							// tabe tabdel horofef kochaak be bozorg
    	for(LeN=0;LeN<501;LeN++){
    		Buf[LeN]=toupper(Buf[LeN]);
    	}	
    }
    
    void C_buf(char Buf[]){											// Empty Buffer	
    	int LeN;
    	LeN=strlen(Buf);
    	for(LeN=0;LeN<501;LeN++){
    		Buf[LeN]=0;
    	}
    }
    //************************************************************************
    void UART0_IRQHandler(void)
    {	
    int A;	
    	input0 = UART_ReceiveByte(LPC_UART0);
    	if(input0>0x20 & input0<0x7f){
    			A=strlen(Buffer0);
    		 Buffer0[A]=input0;	
    			upper(Buffer0,500);
     		UARTPuts_(LPC_UART0,Buffer0);
    			//UARTPuts_(LPC_UART0,"HOMAYON");
    	}
    }
    //************************************************************************
    void UART1_IRQHandler(void)
    {	
    int A;	
    	input1 = UART_ReceiveByte((LPC_UART_TypeDef*)LPC_UART1);
    	if(input1>0x20 & input1<0x7f){
    			A=strlen(Buffer1);
    		 Buffer1[A]=input1;	
    			upper(Buffer1,500);
    		
     		UARTPuts_(LPC_UART0,Buffer1);
    			//UARTPuts_((LPC_UART_TypeDef *)LPC_UART1, Buffer1);
    	}
    }
    //************************************************************************
    void UART3_IRQHandler(void)
    {	
    int A;	
    	input3 = UART_ReceiveByte(LPC_UART3);
    	if(input3>0x20 & input3<0x7f){
    			A=strlen(Buffer3);
    		 Buffer3[A]=input3;	
    			upper(Buffer3,500);
    		
     		UARTPuts_(LPC_UART3,Buffer3);
    			//UARTPuts_((LPC_UART_TypeDef *)LPC_UART1, Buffer1);
    	}
    }
    
    int main(void){
    	int len;
    	UART_CFG_Type UART_InitStruct;
    	UART_FIFO_CFG_Type UARTFIFOConfigStruct;
    	PINSEL_CFG_Type PinCfg;
    	uint32_t CLKPWR_PCONP_PCUART3;
    	debug_frmwrk_init();
    //-------------------------  UART0  -----------------------------------------------------------	
    	
    	UARTFIFOConfigStruct.FIFO_DMAMode = DISABLE;
    	UARTFIFOConfigStruct.FIFO_Level = UART_FIFO_TRGLEV0;
    	UARTFIFOConfigStruct.FIFO_ResetRxBuf = ENABLE;	
    	UARTFIFOConfigStruct.FIFO_ResetTxBuf = ENABLE;
    	
    	UART_FIFOConfig(LPC_UART0, &UARTFIFOConfigStruct);
    	UART_IntConfig(LPC_UART0, UART_INTCFG_RBR, ENABLE);
    
    	NVIC_EnableIRQ(UART0_IRQn);
    	UART_TxCmd(LPC_UART0,ENABLE);	
    
    //-------------------------  UART1  -----------------------------------------------------------	
    	
    	PinCfg.Portnum=2;
    	PinCfg.Pinnum=0;
    	PinCfg.Funcnum=2;
    	PinCfg.OpenDrain=0;
    	PinCfg.Pinmode=0;
    	PINSEL_ConfigPin(&PinCfg);		//TXD1
    	PinCfg.Pinnum=1;
    	PINSEL_ConfigPin(&PinCfg);		//RXD1
    
    
    	UART_InitStruct.Baud_rate=9600;
    	UART_InitStruct.Databits = UART_DATABIT_8;
    	UART_InitStruct.Parity = UART_PARITY_NONE;
    	UART_InitStruct.Stopbits = UART_STOPBIT_1;
    	
    	
    	UART_Init((LPC_UART_TypeDef *)LPC_UART1, &UART_InitStruct);
    	UART_FIFOConfig((LPC_UART_TypeDef *)LPC_UART1, &UARTFIFOConfigStruct);
    	UART_IntConfig((LPC_UART_TypeDef *)LPC_UART1, UART_INTCFG_RBR, ENABLE);
    	
    	NVIC_EnableIRQ(UART1_IRQn);
    	UART_TxCmd((LPC_UART_TypeDef *)LPC_UART1, ENABLE);
    	
    //-------------------------  UART3  -----------------------------------------------------------	
    	
    	CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCUART3,ENABLE);
    	PinCfg.Portnum=4;
    	PinCfg.Pinnum=28;
    	PinCfg.Funcnum=3;
    	PinCfg.OpenDrain=0;
    	PinCfg.Pinmode=0;
    	PINSEL_ConfigPin(&PinCfg);		//TXD3
    	PinCfg.Pinnum=29;
    	PINSEL_ConfigPin(&PinCfg);		//RXD3
    	
    	UART_InitStruct.Baud_rate=115200;
    	UART_InitStruct.Databits = UART_DATABIT_8;
    	UART_InitStruct.Parity = UART_PARITY_NONE;
    	UART_InitStruct.Stopbits = UART_STOPBIT_1;
    	
    	
    	UART_Init(LPC_UART3, &UART_InitStruct);
    	UART_FIFOConfig(LPC_UART3, &UARTFIFOConfigStruct);
    	UART_IntConfig(LPC_UART3, UART_INTCFG_RBR, ENABLE);
    	
    	
    	NVIC_EnableIRQ(UART3_IRQn);
    	UART_TxCmd(LPC_UART3, ENABLE);
    		
    //---------------------------------------------------------------------------------------------	
    
    	
    	while(1){
    		UARTPuts_(LPC_UART3,"HOMAYON");
    		UART_Send(LPC_UART3,"HOMAYON",7,BLOCKING);
    		len=strlen(Buffer0);
    		if(len>200){
    			C_buf(Buffer0);
    		}
    		
    	}
    }

    #2
    پاسخ : راه اندازی UART3 به همراه وقفه و توابع CMSIS

    http://www.eca.ir/forum2/index.php?topic=59569.0
    انجام پروژه هاي برنامه نويسي اندرويد
    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    دیدگاه

    لطفا صبر کنید...
    X