[Kinetis] 【YL-KL26Z开发】+ 串口通讯

[复制链接]
950|4
 楼主| secretuniverse 发表于 2016-1-19 20:11 | 显示全部楼层 |阅读模式
今天分享给大家的是KL26Z的串口通讯程序,通过USB调试口与PC相连,PC发送数据,KL26Z接收后返回相同的数据。

程序不是很复杂,只要配置好串口就可以工作了。

下面是查询法的串口通讯:
  1. #include "includes.h"

  2. int  main (void)
  3. {
  4.     SystemCoreClockUpdate();                                            /* 时钟配置*/

  5.     PORT_ENABLE_CLK(MKL_PORTA);                                         /* GPIO时钟使能 */

  6.     uart0Init(9600,0,0,8,1);                                            /* UART0初始化 */
  7.     while (1) {
  8.         while(UART0_S1_REG(UART0_BASE_PTR) & UART0_S1_RDRF_MASK){       /* 清除中断标志 */
  9.             uart0SendChar(UART0_D_REG(UART0_BASE_PTR));                 /* 返回接收数据 */
  10.         }
  11.     }
  12. }
然后再看中断法的串口通讯:
  1. #include "includes.h"

  2. int  main (void)
  3. {
  4.     SystemCoreClockUpdate();                                            /* 时钟配置*/

  5.     PORT_ENABLE_CLK(MKL_PORTA);                                         /* GPIO时钟使能 */

  6.     uart0Init(9600,0,0,8,1);                                            /* UART0初始化 */
  7.     while (1) {

  8.         }
  9.     }
  10. }



 楼主| secretuniverse 发表于 2016-1-19 20:13 | 显示全部楼层
我们可以发现二者非常相似,配置完全相同,并且在串口初始化函数中发现二者都有一样的中断服务函数,但是当我把查询法WHILE中的程序删掉后发现无法实现功能。

经过一番查找发现,串口的初始化函数中有这么一段
  1. #if UART0_IRQ_ENABLE   
  2.         #if UART0_SEND_IRQ
  3.         UART0_C2_REG(uartPtr) |= UART0_C2_TCIE_MASK;
  4.         #endif
  5.         #if UART0_RECEIVE_IRQ
  6.         UART0_C2_REG(uartPtr) |= UART0_C2_RIE_MASK;
  7.         #endif

当我在MKL_uart.h中发现UART0_IRQ_ENABLE 时,就有了答案。


查询法:                                                                                                 中断法:
  1. #define UART0_DEFAULT_OPEN      1                                                  #define UART0_DEFAULT_OPEN      1                                                                  
  2. #define UART0_IRQ_ENABLE        0                                                     #define UART0_IRQ_ENABLE        1   

然后就有了结果。
E-Kaia 发表于 2016-1-21 20:34 | 显示全部楼层
中断的代码在哪里呢?现在特别纠结中断里该如何写程序
capturesthe 发表于 2016-1-23 21:24 | 显示全部楼层
串口如果用dma发送的话是不是就不占用CPU时间了啊
Micachl 发表于 2016-1-24 19:53 | 显示全部楼层
有没有用过串口向蓝牙发送数据,蓝牙最快速率能达到多少呢
接收的是iPhone iOS系统
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

55

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部