2508|0

6423

帖子

16

TA的资源

版主

楼主
 

LPC1500体验+4.UART [复制链接]

本帖最后由 白丁 于 2014-8-14 23:09 编辑

1、在开关矩阵中给RXDTXD分配引脚,设置系统时钟、主时钟、和UART时钟分频
  1. SystemCoreClockUpdate();
  2. Init_UART0_PinMux();
复制代码


2、全局定义
3、定义配置结构体,初始化UART API的指针
4、定义要发送的字符串
5、为UART  API 初始化memory并创建句柄
6、初始化UART,配置波特率。
  1. /* Set UART base rate */
  2. uint32_t Chip_Clock_SetUARTBaseClockRate(uint32_t rate, bool fEnable)
  3. {
  4.         uint32_t div, inclk;

  5.         /* Input clock into FRG block is the main system cloock */
  6.         inclk = Chip_Clock_GetMainClockRate();

  7.         /* Get integer divider for coarse rate */
  8.         div = inclk / rate;
  9.         if (div == 0) {
  10.                 div = 1;
  11.         }

  12.         /* Approximated rate with only integer divider */
  13.         Chip_Clock_SetUARTFRGDivider((uint8_t) div);

  14.         if (fEnable) {
  15.                 uint32_t err;
  16.                 uint64_t uart_fra_multiplier;

  17.                 err = inclk - (rate * div);
  18.                 uart_fra_multiplier = ((uint64_t) err  * 256) / (uint64_t) (rate * div);

  19.                 /* Enable fractional divider and set multiplier */
  20.                 LPC_SYSCTL->FRGCTRL = 0xFF | ((uart_fra_multiplier & 0xFF) << 8);
  21.         }
  22.         else {
  23.                 /* Disable fractional generator and use integer divider only */
  24.                 LPC_SYSCTL->FRGCTRL = 0;
  25.         }

  26.         return Chip_Clock_GetUARTBaseClockRate();
  27. }
复制代码


7、使能UART中断
  1. NVIC_EnableIRQ(UART0_IRQn);
复制代码


8、配置UART 常数结构体UART_PARAM_T
  1. /**
  2. * @brief UART ROM driver parameter structure
  3. */
  4. typedef struct {
  5.         uint8_t         *buffer;                /*!< Pointer to data buffer */
  6.         uint32_t        size;                        /*!< Size of the buffer */
  7.         uint16_t        transfer_mode;        /*!< Transfer mode settings */
  8.                                                                         /*!<   0x00: uart_get_line: stop transfer when the buffer is full */
  9.                                                                         /*!<   0x00: uart_put_line: stop transfer when the buffer is empty */
  10.                                                                         /*!<   0x01: uart_get_line: stop transfer when CRLF are received */
  11.                                                                         /*!<   0x01: uart_put_line: transfer stopped after reaching \0 and CRLF is sent out after that */
  12.                                                                         /*!<   0x02: uart_get_line: stop transfer when LF are received */
  13.                                                                         /*!<   0x02: uart_put_line: transfer stopped after reaching \0 and LF is sent out after that */
  14.                                                                         /*!<   0x03: uart_get_line: RESERVED */
  15.                                                                         /*!<   0x03: uart_put_line: transfer stopped after reaching \0 */
  16.         uint8_t         driver_mode;        /*!< Driver mode */
  17.                                                                         /*!<  0x00: Polling mode, function blocked until transfer completes */
  18.                                                                         /*!<  0x01: Interrupt mode, function immediately returns, callback invoked when transfer completes */
  19.                                                                         /*!<  0x02: DMA mode, in case DMA block is available, DMA req function is called for UART DMA channel setup, then callback function indicate that transfer completes */
  20.         uint8_t         dma_num;                /*!< DMA channel number in case DMA mode is enabled */
  21.         UART_CALLBK_T   callback_func_pt;
  22.         uint32_t dma;        /* DMA handler */
  23. } UART_PARAM_T;
复制代码


9、定义传输结束时调用的接收和发送回调函数
10、发送字符串,遇到\0时结束发送,然后发送回车换行(CRCarriage Return  LFLine Feed \r\n)
11、接收字符串直到填满缓冲区

此帖出自单片机论坛
点赞 关注
个人签名training
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表