0

私は、ボーレートを115200としてUART of lPC1788次の設定を行ったという点で作業していますPCLK as 12MHZが、このコードをシミュレートしている間、ボーレートは115200または約として割り当てられていません。

uint32_t uart0_init()
{

  LPC_SC->PCONP |=(1<<3);        //Enabling power/clock for UART0
  LPC_IOCON->P0_2 = 1;           //Selecting fn. 001 for P0.2(U0_TXD)
  LPC_IOCON->P0_3 = 1;           //Selecting fn. 001 for P0.3(U0_RXD)
  LPC_UART0->LCR =(0x83);        //Selecting DLAB=1,1 stop bit,Parity bit and 8-bit character length

  LPC_UART0->DLL = 0x04;         //For PCLK=12MHZ and baud rate as 115200,DLL=4(in dec.)
  LPC_UART0->DLM = 0x00;         //For PCLK=12MHZ and baud rate as 115200,DLM=0(in dec.)
  LPC_UART0->FDR =(0x85);        //DIVADDVAL=1(3:0) and MULVAL=2(7:4) in FDR calculated from the FRest value 
  LPC_UART0->LCR =(0x03);        //Disabling DLAB=0
  LPC_UART0->FCR |=(7<<0);       //Enable FIFOEN,TXFIFORES and RXFIFORES in FCR(0,1,2)

  LPC_UART0->FCR |=(0<<0);       //Disable FIFOEN,TXFIFORES and RXFIFORES in FCR(0,1,2)

  //NVIC_EnableIRQ(UART0_IRQn);

  //LPC_UART0->IER = IER_RBRIE | IER_THREIE | IER_RXIE;

  return 1;

}

私にとっては、384615 に近づいていますが、まったく異なります。正確な 115200 ボーを取得するために実行する計算はありますか。

私のためにクリアしてください..

4

1 に答える 1

0

システム制御設定を変更するために uart init を使用しないでください。注意しないと、他の場所でそれらを上書きします。sysInit 関数を作成し、そこに設定します。分周器を 10 (0x0a) に設定します。

LPC_SC->PCLKSEL = 0x0A; 

これMCLKを 10 で割ると、周辺機器用の 12Mhz クロックが得られます。その後、〜115200ボーを達成するようFDRに設定する必要があります。DLL

于 2013-06-06T12:44:25.970 に答える