lpc2148串口0和串口1互通的程序

本文介绍了一个使用LPC2148微控制器实现串口0和串口1数据互通的程序,主要用于调试AT命令。串口0连接电脑,串口1连接GSM模块。程序确保从电脑发送的AT命令能被GSM模块接收,反之亦然。

      发到串口0的数据可以直接送到串口1,而发到串口1的数据送到串口0,写这个程序主要是为了调试AT命令。因为LPC2148的ARM串口0和电脑的串口相连,而串口1和GSM模块相连。要求从电脑发过去的AT命令可以直接被GSM模块收到就可以了,而从GSM返回的数据也能被电脑收到就行了

 

 #include"lpc214x.h"
 
 
 
 void delay1(int time)
{

 { long int i=0;
  for(i=0;i<14745600*time/250;i++); //这条指令要执行几个时钟周期?
  }
}

 void GPIOInit( void )
  {   
   SCS = 0;             /* set GPIOx to use regular I/O */
  PINSEL2=0x00000000;
  IODIR1 = 0xFFDFFFFF;   /* P1.16输出,p1.21输入,其余不用的脚定义为输出*/
  IOPIN1 = 0xFFFEFFFF;   /*除了p1.16输出低电平,其余的均输出高电平*/
  PINSEL0=0x80050005;    /*将p0.15配置为EINT2,配置p0.0,p0.1为TXD,RXD,P0.8,P0.9为TXD,RXD*/
  PINSEL1=0x00000000;
  IODIR0 = 0xFFFF7DFD;   /*设置p0.16,p0.29,p0.30输

stm32串口1串口3数据互通,经测试同时发256字节不丢包 void usart3_init(u32 bound) { NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // GPIOBʱÖÓ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //´®¿Ú3ʱÖÓÊ&sup1;ÄÜ USART_DeInit(USART3); //¸´Î»´®¿Ú3 //USART3_TX PB10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB10 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö GPIO_Init(GPIOB, &GPIO;_InitStructure); //³õÊ&frac14;»¯PB10 //USART3_RX PB11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿ÕÊäÈë GPIO_Init(GPIOB, &GPIO;_InitStructure); //³õÊ&frac14;»¯PB11 USART_InitStructure.USART_BaudRate = bound;//²¨ÌØÂÊÒ»°ãÉèÖÃΪ9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñÊ&frac12; USART_InitStructure.USART_StopBits = USART_StopBits_1;//Ò»¸öÍ£Ö&sup1;λ USART_InitStructure.USART_Parity = USART_Parity_No;//ÎÞÆæÅ&frac14;УÑéλ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎÞÓ²&frac14;þÊý¾ÝÁ÷¿ØÖÆ USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //ÊÕ·¢Ä£Ê&frac12; USART_Init(USART3, &USART;_InitStructure); //³õÊ&frac14;»¯´®¿Ú 3 USART_Cmd(USART3, ENABLE); //Ê&sup1;ÄÜ´®¿Ú //Ê&sup1;ÄÜ&frac12;ÓÊÕÖÐ¶Ï USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//¿ªÆôÖÐ¶Ï //ÉèÖÃÖжÏÓÅÏÈ&frac14;¶ NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//ÇÀÕ&frac14;ÓÅÏÈ&frac14;¶3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //×ÓÓÅÏÈ&frac14;¶3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨµÀÊ&sup1;ÄÜ NVIC_Init(&NVIC;_InitStructure); //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õÊ&frac14;»¯VIC&frac14;Ä´æÆ÷ TIM4_Int_Init(1000-1,7200-1); //10msÖÐ¶Ï USART3_RX_STA=0; //ÇåÁã TIM_Cmd(TIM4,DISABLE); //&sup1;رն¨Ê±Æ÷7 } //´®¿Ú3,printf º¯Êý //È·±£Ò»´Î·¢ËÍÊý¾Ý²»³¬&sup1;ýUSART3_MAX_SEND_LEN×Ö&frac12;Ú void u3_printf(char* fmt,...) { u16 i,j; va_list ap; va_start(ap,fmt); vsprintf((char*)USART3_TX_BUF,fmt,ap); va_end(ap); i=strlen((const char*)USART3_TX_BUF); //´Ë´Î·¢ËÍÊý¾ÝµÄ³¤¶È for(j=0;j<i;j++) //Ñ­»··¢ËÍÊý¾Ý { while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //Ñ­»··¢ËÍ,Ö±µ&frac12;·¢ËÍÍê±Ï USART_SendData(USART3,USART3_TX_BUF[j]); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值