查看: 1238|回复: 1

[原创] LPC1768 Dev kit 开发板 + 6、串口0和串口1发送数据

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 1318 天

    [LV.10]以坛为家III

    124

    主题

    2832

    帖子

    31

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7575
    最后登录
    2024-4-27
    发表于 2019-2-26 21:52:47 | 显示全部楼层 |阅读模式
        测试下板子上串口0和串口1发送数据。
       
        一、硬件电路
       
        原理图上,串口0和串口1部分电路。
        2261.png


        二、程序部分


        2.1、串口程序
    1. //uart.c
    2. #include "lpc17xx.h"

    3. #define FOSC                        12000000                            /*  振荡器频率                  */

    4. #define FCCLK                      (FOSC  * 8)                          /*  主时钟频率<=100Mhz          */
    5.                                                                         /*  FOSC的整数倍                */
    6. #define FCCO                       (FCCLK * 3)                          /*  PLL频率(275Mhz~550Mhz)      */
    7.                                                                         /*  与FCCLK相同,或是其的偶数倍 */
    8. #define FPCLK                      (FCCLK / 4)                          /*  外设时钟频率,FCCLK的1/2、1/4*/
    9.                                                                         /*  或与FCCLK相同               */

    10. #define UART0_BPS     115200                                             /* 串口0通信波特率             */
    11. #define UART1_BPS     115200                                             /* 串口0通信波特率             */
    12. #define UART2_BPS     115200


    13. //init_uart0
    14. void init_uart0 (void)
    15. {
    16.         uint16_t usFdiv;
    17.         /* UART0 */
    18.         LPC_PINCON->PINSEL0 |= (1 << 4);         //P0.2 -- TXD0   
    19.         LPC_PINCON->PINSEL0 |= (1 << 6);         //P0.3 -- RXD0   

    20.         LPC_UART0->LCR  = 0x83;                  //允许设置波特率               
    21.         usFdiv = (FPCLK / 16) / UART0_BPS;       //设置波特率               
    22.         LPC_UART0->DLM  = usFdiv / 256;
    23.         LPC_UART0->DLL  = usFdiv % 256;
    24.         LPC_UART0->LCR  = 0x03;                  //锁定波特率              
    25.         LPC_UART0->FCR  = 0x06;                                    
    26. }

    27. //串口0发送数据
    28. int uart0_senddat (int ucData)
    29. {
    30.         while (!(LPC_UART0->LSR & 0x20));
    31.     return (LPC_UART0->THR = ucData);
    32. }
    33. //串口0发送字符串
    34. void uart0_sendstring (unsigned char *s)
    35. {
    36.           while (*s != 0)
    37.         {
    38.                    uart0_senddat(*s++);
    39.         }
    40. }


    41. //uart1初始化
    42. void init_uart1 (void)
    43. {
    44.         unsigned short int usFdiv;
    45.    
    46.         /* UART1 */
    47.         LPC_PINCON->PINSEL0 |= (1 << 30);                                                     //P0.15--TXD1               
    48.         LPC_PINCON->PINSEL1 |= (1 << 0);                                                             //P0.16--RXD1

    49.         LPC_SC->PCONP = LPC_SC->PCONP |(1<<4);                                                      //打开UART0电源控制位                 

    50.         LPC_UART1->LCR  = 0x83;                                                               // 允许设置波特率               
    51.         usFdiv = (FPCLK / 16) / UART1_BPS;                                                    // 设置波特率                  
    52.         LPC_UART1->DLM  = usFdiv / 256;
    53.         LPC_UART1->DLL  = usFdiv % 256;
    54.         LPC_UART1->LCR  = 0x03;                                                               // 锁定波特率                  
    55.         LPC_UART1->FCR  = 0x06;
    56. }

    57. //串口1发送数据
    58. void uart1_senddat (int ucData)
    59. {
    60.         while (!(LPC_UART1->LSR & 0x20));
    61.    
    62.         LPC_UART1->THR = ucData;
    63. }
    64. //串口0发送字符串
    65. void uart1_sendstring (unsigned char *s)
    66. {
    67.           while (*s != 0)
    68.         {
    69.                    uart1_senddat(*s++);
    70.         }
    71. }


    72. //uart.h
    73. #ifndef __UART_H
    74. #define __UART_H


    75. void init_uart0 (void);
    76. int uart0_senddat (int ucData);
    77. void uart0_sendstring (unsigned char *s);

    78. void init_uart1 (void);
    79. void uart1_senddat (int ucData);
    80. void uart1_sendstring (unsigned char *s) ;

    81. #endif

    复制代码

        2.2、主程序
    1. int main (void)
    2. {
    3.   INT32U i,j;
    4.   INT16U AdcValue, AdcPrintValue;

    5.   SystemInit();
    6.         init_sysytick();
    7.         init_beep();
    8.         init_led();
    9.         init_uart0();                        //初始化串口0
    10.         init_uart1();                        //初始化串口1

    11.         while(1)
    12.         {
    13.                 uart0_sendstring("串口0测试 -- www.nxpic.org.cn\r\n");
    14.                 uart1_sendstring("串口1测试 -- www.nxpic.org.cn\r\n");
    15.                
    16.                 led_off();
    17.                 Delay(500);
    18.                 led_on();
    19.                 Delay(500);
    20.         }
    21. }
    复制代码

        三、执行结果

        串口0和串口1输出数据,串口1需要交叉线和电脑串口连接。
        2262.png
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 16:01
  • 签到天数: 1480 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92787
    最后登录
    2024-4-27
    发表于 2019-2-27 19:35:01 | 显示全部楼层
    支持一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 04:52 , Processed in 0.119376 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表