LPC1754的P2口UART2问题

2019-03-25 20:05发布

LPC1754的UART2功能,端口0和端口2都具有这个功能,但是为什么使用端口0的UART2可以,但端口2的UART2却无法运行呢,UART2初始化代码如下,端口0与端口2的UART2引脚都配置了,端口2无法运行,还望大家提出一下意见,实在是不知道错在哪里了
  1. void uart2Init (void)
  2. {
  3.     uint16_t usFdiv;

  4.     LPC_SC->PCONP |= (1<<24);                                           /* 开启UART2的功率寄存器控制位  */
  5.     LPC_PINCON->PINSEL0 |= (0x01 << 20)|(0x01 << 22);//0.10 0.11 端口0,正常
  6.         LPC_PINCON->PINSEL4 |= (2 << 16)|(2 << 18);                 // 2.8 2.9 端口2,异常
  7.     LPC_UART2->LCR = 0x83;                                              /* 允许设置波特率               */
  8.     usFdiv = (SystemFrequency/4/16) / UART_BPS;                         /* 设置波特率                   */
  9.     LPC_UART2->DLM = usFdiv / 256;
  10.     LPC_UART2->DLL = usFdiv % 256;
  11.     LPC_UART2->LCR = 0x03;                                              /* 锁定波特率                   */
  12.     LPC_UART2->FCR = 0x87;                                              /* 使能FIFO,设置8个字节触发点  */
  13.     LPC_UART2->IER = 0x01;                                              /* 使能接收中断                 */
  14. }
复制代码


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ienglgge
1楼-- · 2019-03-25 22:41
_NXP LPC1000_ 端口0与端口2的UART2引脚都配置了,你的意思是把两个端口都配成串口2? 这样是有问题的。用端口2.端口0就不能配成串口了。
gstbetter
2楼-- · 2019-03-26 04:07
ienglgge 发表于 2017-7-24 18:04
端口0与端口2的UART2引脚都配置了,你的意思是把两个端口都配成串口2? 这样是有问题的。用端口2.端口0就不 ...

不是的,我运行的时候会注释掉端口0的,目前发现,是不是设置中断的时候不一样呢,下面是设置的中断
  1. void UART2_IRQHandler (void)
  2. {
  3.         int IRQ_ID= 0;  
  4.     GulNum = 0;
  5.     IRQ_ID = LPC_UART2->IIR;     
  6.     while ((LPC_UART2->IIR & 0x01) == 0){                               /*  判断是否有中断挂起          */
  7.         switch (LPC_UART2->IIR & 0x0E){                                 /*  判断中断标志                */
  8.         
  9.             case 0x04:                                                  /*  接收数据中断                */
  10.                 GucRcvNew = 1;                                          /*  置接收新数据标志            */
  11.                 for (GulNum = 0; GulNum < 8; GulNum++){                 /*  连续接收8个字节             */
  12.                     GucRcvBuf[GulNum] = LPC_UART2->RBR;
  13.                 }
  14.                 break;
  15.             
  16.             case 0x0C:                                                  /*  字符超时中断                */
  17.                 GucRcvNew = 1;
  18.                 while ((LPC_UART2->LSR & 0x01) == 0x01){                /*  判断数据是否接收完毕        */
  19.                     GucRcvBuf[GulNum] = LPC_UART2->RBR;
  20.                     GulNum++;
  21.                 }
  22.                 break;
  23.                
  24.             default:
  25.                 break;
  26.         }
  27.     }
  28.   
  29. }
复制代码
ienglgge
3楼-- · 2019-03-26 06:07
 精彩回答 2  元偷偷看……
tomdong074
4楼-- · 2019-03-26 07:10

端口0与端口2的UART2引脚都配置了,你的意思是把两个端口都配成串口2? 这样是有问题的。用端口2.端口0就不能配成串口了。
peishuaihua
5楼-- · 2019-03-26 09:53
应该涉及到重映像的问题吧
gstbetter
6楼-- · 2019-03-26 12:15
ienglgge 发表于 2017-7-25 18:00
你可以先不使能接收中断。 发送数据,看看能不能发出去,要发不了。可能还是初始化问题。

可以发送的,就是没法接收,还不知道哪里原因,只能先用查询方式替代

一周热门 更多>