LPC1766串口发送后接收乱码问题

2019-07-15 07:21发布

最近使用LPC1766芯片遇到一个问题,用硬件仿真看串口发送前数据是正确的,但是用TTL-USB发送到电脑后接收乱码。使用基础串口发送代码也是这个问题。
使用12M外部晶振。各位大神有知道原因的吗?万分感谢

主程序
  1. int main(void)
  2. {
  3.         uint32_t i,j, k=0;
  4.         
  5.         SystemInit();
  6.         UART0_Init(9600);
  7.         
  8.         UART0_SendString("hello world");
  9.         Delay(250);
  10. }
复制代码
串口配置
  1. #define FOSC               12000000
  2. #define FCCLK              (FOSC  * 8)                                         
  3. #define FCCO               (FCCLK * 3)         
  4. #define FPCLK               (FCCLK / 4)
  5. void UART0_Init (uint32_t baudrate)
  6. {
  7.         uint16_t usFdiv;
  8.         /* UART0 */
  9.         LPC_PINCON->PINSEL0 |= (1 << 4);
  10.         LPC_PINCON->PINSEL0 |= (1 << 6);
  11.   
  12.         LPC_UART0->LCR  = 0x83;
  13.         usFdiv = (FPCLK / 16) / baudrate;
  14.         LPC_UART0->DLM  = usFdiv / 256;
  15.         LPC_UART0->DLL  = usFdiv % 256;
  16.         LPC_UART0->LCR  = 0x03;
  17.         LPC_UART0->FCR  = 0x06;
  18. }

复制代码系统初始化代码
  1. #if (CLOCK_SETUP)                       /* Clock Setup                        */
  2.   LPC_SC->SCS       = SCS_Val;
  3.   if (SCS_Val & (1 << 5)) {             /* If Main Oscillator is enabled      */
  4.     while ((LPC_SC->SCS & (1<<6)) == 0);/* Wait for Oscillator to be ready    */
  5.   }

  6.   LPC_SC->CCLKCFG   = CCLKCFG_Val;      /* Setup Clock Divider                */

  7. #if (PLL0_SETUP)
  8.   LPC_SC->CLKSRCSEL = CLKSRCSEL_Val;    /* Select Clock Source for PLL0       */

  9.   LPC_SC->PLL0CFG   = PLL0CFG_Val;      /* configure PLL0                     */
  10.   LPC_SC->PLL0FEED  = 0xAA;
  11.   LPC_SC->PLL0FEED  = 0x55;

  12.   LPC_SC->PLL0CON   = 0x01;             /* PLL0 Enable                        */
  13.   LPC_SC->PLL0FEED  = 0xAA;
  14.   LPC_SC->PLL0FEED  = 0x55;
  15.   while (!(LPC_SC->PLL0STAT & (1<<26)));/* Wait for PLOCK0                    */

  16.   LPC_SC->PLL0CON   = 0x03;             /* PLL0 Enable & Connect              */
  17.   LPC_SC->PLL0FEED  = 0xAA;
  18.   LPC_SC->PLL0FEED  = 0x55;
  19.   while (!(LPC_SC->PLL0STAT & ((1<<25) | (1<<24))));/* Wait for PLLC0_STAT & PLLE0_STAT */
  20. #endif

  21. #if (PLL1_SETUP)
  22.   LPC_SC->PLL1CFG   = PLL1CFG_Val;
  23.   LPC_SC->PLL1FEED  = 0xAA;
  24.   LPC_SC->PLL1FEED  = 0x55;

  25.   LPC_SC->PLL1CON   = 0x01;             /* PLL1 Enable                        */
  26.   LPC_SC->PLL1FEED  = 0xAA;
  27.   LPC_SC->PLL1FEED  = 0x55;
  28.   while (!(LPC_SC->PLL1STAT & (1<<10)));/* Wait for PLOCK1                    */

  29.   LPC_SC->PLL1CON   = 0x03;             /* PLL1 Enable & Connect              */
  30.   LPC_SC->PLL1FEED  = 0xAA;
  31.   LPC_SC->PLL1FEED  = 0x55;
  32.   while (!(LPC_SC->PLL1STAT & ((1<< 9) | (1<< 8))));/* Wait for PLLC1_STAT & PLLE1_STAT */
  33. #else
  34.   LPC_SC->USBCLKCFG = USBCLKCFG_Val;    /* Setup USB Clock Divider            */
  35. #endif

  36.   LPC_SC->PCLKSEL0  = PCLKSEL0_Val;     /* Peripheral Clock Selection         */
  37.   LPC_SC->PCLKSEL1  = PCLKSEL1_Val;

  38.   LPC_SC->PCONP     = PCONP_Val;        /* Power Control for Peripherals      */

  39.   LPC_SC->CLKOUTCFG = CLKOUTCFG_Val;    /* Clock Output Configuration         */
  40. #endif

  41. #if (FLASH_SETUP == 1)                  /* Flash Accelerator Setup            */
  42.   LPC_SC->FLASHCFG  = FLASHCFG_Val;
  43. #endif
  44. }
复制代码
微信截图_20190316161717.png
0条回答

一周热门 更多>