|
这两被UART0串口弄得脑大。
控制板是LPC1788 主板是飞思卡尔的S08_FL16
LPC串口0发送数据给主板--> 单片机可以顺利接收 并返回相应对应的数据给控制板
但问题就是LPC1788根本不相应。接收中断 接收缓存都没反应 接线是良好的 通信方式采用的是485
void UART0_Init(uint32_t baudrate)
{
uint32_t Fdiv =0;
/*
* 初始化UART0管脚连接
* P0.0连接到UART0的TXD端
* P0.1连接到UART0的RXD端
*/
NVIC_DisableIRQ(UART0_IRQn); //关闭外部扩展中断
LPC_IOCON->P0_0=0x04; //端口P0_0 端口配置成 U0_TXD模式
LPC_IOCON->P0_1=0x04; //端口P0_1 端口配置成 U0_RXD模式
/*485控制脚*/
LPC_IOCON->P2_22 =0;//端口配置成IO模式
LPC_GPIO2->DIR|=(1<<22);//端口配置成输出
/*开启UART0的电源*/
LPC_SC->PCONP |=0x01<<3;
/*使能访问除数锁寄存器(DLAB=1),
*只有DLAB为1时写入DLM和DLL的
*波特率分频值才会有效
*/
LPC_UART0->LCR=0x83;
/*配置UART0的波特率*/
Fdiv = (PeripheralClock/ 16 ) / baudrate ;
LPC_UART0->DLM = Fdiv / 256;
LPC_UART0->DLL = Fdiv % 256;
/*定义数据位为8bit,停止位为1,校验位为NONE*/
LPC_UART0->FDR = 0xE5;
/* 又是LCR线控制寄存器,这回等于03,也就是禁止访问除数锁存 */
LPC_UART0->LCR=0x03;
/*使能并复位FIFO*/
LPC_UART0->FCR = 0x07; /* 使能FIFO,设置1个字节触发点 */
Fdiv=LPC_UART0->LSR;/* 通过读操作清除状态*/
/*使能接收数据中断,THRE中断,RX线状态中断*/
LPC_UART0->IER = IER_RBR | IER_THRE | IER_RLS;
/*配置UART0的先占优先级为1,从优先级为1*/
NVIC_SetPriority(UART0_IRQn, ((0x01<<3)|0x01));
/*使能UART0的中断通道*/
NVIC_EnableIRQ(UART0_IRQn);
}
/*******************************************************************************************
* 函数名:UART0_IRQHandler()
* 参数 :void
* 返回值:void
* 描述 :UART0中断服务函数
*********************************************************************************************/
void UART0_IRQHandler(void)
{
uint8_t data;
uint8_t IIRValue;
IIRValue=LPC_UART0->IIR& 0x0E;
if((IIRValue==0x04)||(IIRValue==0x0C))//接收数据中断/字符超时指示
{
data= LPC_UART0->RBR&0xff; //接收一个字节
if(ReceiveTimes<CommDataSize)
{ ReceiveData[ReceiveTimes]=data;
ReceiveTimes++;
}
UART_TongBu_Time=0;//串口同步时间
ReceiveTimes++;
}
else
{
if(IIRValue==0x02) //发送中断
{
if(SendTimes<CommDataSize)
{
UART0_SendByte(SendData[SendTimes]);//发送的数据传到发送寄存器(自动发送)
SendTimes++;
}
else
{ CMM_Start.Bit.TXorRX=MODE_RX;//转到接收
UART0_TxEN_OFF; //禁止发送
UART0_Tx_IRQ_OFF; //禁止发送完中断
}
}
else
{
// RLS Interrupt.
data = LPC_UART0->LSR; /* 清除RLS中断 */
data = LPC_UART0->RBR; /* 丢弃接收到的错误字节,
如果此处不读取RBR,则会使该错误字节留在FIFO中,使LSR的bit7置位。 */
}
}
} |
|