1. CC2541通过串口和PM25设备PMS7003通信,串口9600波特率,手机APP显示数据一直是128,先检查蓝牙数据通路问题,数据通路没问题

2. 看下串口是否OK,串口也不通,看到宏定义ZAPP_P2,不清楚是什么用途,本次使用P0_4,P0_5,串口UART1的ALT1。使用宏定义ZAPP_P2和uart_alt1,去掉宏定义CC2540_MINIDK,增加HAL_UART=TRUE,关闭流控#define NPI_UART_FC        FALSE,关闭功耗控制xPOWER_SAVING

3. 修改串口波特率9600。

 #define NPI_UART_BR                    HAL_UART_BR_9600

4. 修改串口的引脚

 #define PxSEL                      P0SEL        //串口配置到P0口
#define HAL_UART_PERCFG_BIT 0x00 // USART1 on P0, Alt-1; so clear this bit,使用ALT1,所以清零
#define HAL_UART_PRIPO 0x40 // USART0 priority over UART1.串口优先级
#define HAL_UART_Px_CTS 0x04 // Peripheral I/O Select for CTS flow control. 串口流控引脚
#define HAL_UART_Px_RTS 0x08 // Peripheral I/O Select for RTS must be manual. 串口流控引脚
#define HAL_UART_Px_SEL 0x30 // Peripheral I/O Select for Rx/Tx. 串口的RXD和TXD引脚,P0_4和P0_5

5. 修改串口的中断配置,疑问是为啥是用P0中断,而不是UART1的RXD中断?

 #define PxDIR                      P0DIR     //串口在P0
#define PxIEN P0IEN //P0中断使能
#define PxIFG P0IFG //P0中断使能
#define PxIF P0IF
#define DMA_RDYIn P0_2 //CTS流控引脚
#define DMA_RDYOut P0_3 //RTS流控引脚
#define DMA_RDYIn_BIT BV(2) // Same as the I/O Select for CTS flow control.//CTS流控引脚
#define DMA_RDYOut_BIT BV(3) // Same as the I/O Select for manual RTS flow ctrl.//RTS流控引脚
// Falling edge ISR on P1.4-7 pins.
#define PICTL_BIT BV(0) // 中断边沿检测
#define IENx IEN1 //中断使能寄存器,这里的疑问就是为啥使能的是P0的中断,不是UART1的RXD中断
#define IEN_BIT BV(5) //中断使能寄存器第5位P0IE

6. 修改中断函数halUart0TxIsr

 HAL_ISR_FUNCTION( halUart0TxIsr, UTX0_VECTOR )
{
HAL_ENTER_ISR(); if (dmaCfg.txHead == dmaCfg.txTail)
{
IEN2 &= ~UTXxIE;
dmaCfg.txMT = ;
}
else
{
UTXxIF = ;
UxDBUF = dmaCfg.txBuf[dmaCfg.txHead++]; if ((HAL_UART_DMA_TX_MAX != ) && (dmaCfg.txHead >= HAL_UART_DMA_TX_MAX))
{
dmaCfg.txHead = ;
}
} HAL_EXIT_ISR();
}

7. 看下IEN1的寄存器

 SFRBIT( IEN1    ,  0xB8, _IEN17, _IEN16, P0IE, T4IE, T3IE, T2IE, T1IE, DMAIE )

8. 串口初始化函数和发送

   NPI_InitTransport(NpiSerialCallback);
uart1Send("1h1h0",);

9. 串口接收回调函数

 uint8 buffer[] = {};
static void NpiSerialCallback(uint8 port, uint8 events)
{
(void) port;
if(events & (HAL_UART_RX_TIMEOUT | HAL_UART_RX_FULL)) //
{
uint8 num_bytes = ;
num_bytes = NPI_RxBufLen(); //读取串口缓冲区有多少个字节
NPI_ReadTransport(buffer, num_bytes);
}

10. 完成,可以正常的收发数据。

CC2541之串口调试PM2.5传感器的更多相关文章

  1. Modbus通讯协议学习 - 串口调试

    概述 我们在做任何事情之前都需要获取很多 调试步骤: 1:485转换器连接硬件 2:485转换器上的USB接口连接电脑. 3:打开设备管理器 ->查看端口 4:打开串口调试工具,在串口配置的地方 ...

  2. android模拟器使用PC串口调试

    android模拟器使用PC串口调试1.模拟器可以使用PC的串口  启动模拟器并加载PC串口 命令如下:  运行 emulator @模拟器名称 -qemu -serial COM12.查看串口是否被 ...

  3. android 串口调试

    在usb调试过程中,都会选择串口查看log,更希望在串口中输入命令查看相关状态.但是一般情况下串口调试时 进程用户是shell,即使你在adb shell下是root用户. 暴力方法是在 adroid ...

  4. GeekPwn2015胸卡ESP8266 12E串口调试

    相信今年参加GeekPwn活动的很多同学都获得了一枚GeekPwn的胸牌,为方便大家对胸牌进行一些调试和破解,这里分享一些关于这枚胸牌的一些信息 :)如发现文章之中有错误之处,欢迎大家斧正! 0×00 ...

  5. keil中的串口调试:

    keil中串口的虚拟调试信息在通过View-serial windows-#usart1/2/3/4/debug(printf)可以看到.当然也可以通过虚拟串口VSPD+串口调试助手在外部实现,方法如 ...

  6. 自己编写的基于VC++6.0的串口调试软件,并贡献源程序!

    自己编写的基于VC++6.0的串口调试软件源程序! 程序下载链接: 点击打开链接

  7. 基于Modbus的C#串口调试开发

    说明:本文主要研究的是使用C# WinForm开发的串口调试软件(其中包含Modbus协议相关操作).Modbus相关协议可以查阅百度文库等,可参考: <http://wenku.baidu.c ...

  8. 【安富莱专题教程第5期】工程调试利器RTT实时数据传输组件,替代串口调试,速度飞快,可以在中断和多任务中随意调用

    说明:1.串口作为经典的调试方式已经存在好多年了,缺点是需要一个专门的硬件接口.现在有了SEGGER的RTT(已经发布有几年了),无需占用系统额外的硬件资源,而且速度超快,是替代串口调试的绝佳方式.2 ...

  9. 串口调试助手vc源程序及其详细编写过程

    串口调试助手vc源程序及其详细编写过程   目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件 ...

随机推荐

  1. Python Python实现批量安装android apk包

    基于Python实现批量安装android apk包 by:授客 QQ:1033553122 1.相关软件包及文件下载 下载地址:adb软件包及批量安装apk包的py文件.zip 2.测试环境 Win ...

  2. codeforces 632C The Smallest String Concatenation

    The Smallest String Concatenation 题目链接:http://codeforces.com/problemset/problem/632/C ——每天在线,欢迎留言谈论. ...

  3. mysql之外键

    本文内容: 什么是外键 外键的增加 外键的修改和删除 外键的约束模式 首发日期:2018-04-12 什么是外键: 外键就是表中存在一个字段指向另外一个表的主键,那么这个字段就可以称为外键. 一张表可 ...

  4. QQ空间、新浪微博、腾讯微博等一键分享API链接代码

    1.新浪微博:http://service.weibo.com/share/share.php?url= count=表示是否显示当前页面被分享数量(1显示)(可选,允许为空)&url=将页面 ...

  5. 重启Zabbix Server

    重启zabbix server:systemctl restart zabbix-server #启动服务 systemctl start zabbix-server systemctl start ...

  6. Lua保留指定小数位数

    默认会四舍五入 比如:%0.2f 会四舍五入后,保留小数点后2位 print(string.format("%.1f",0.26)) ---会输出0.3,而不是0.2 Lua保留一 ...

  7. vs2010 2013 2015 有用各种功能插件

    https://blog.csdn.net/daydayup_chf/article/details/80803221

  8. xss挑战之旅wp

    Level 1  -  180831 第一关很简单,开胃菜 payload: http://localhost/xss_game/level1.php?name=test123<script&g ...

  9. 【算法】LeetCode算法题-Valid Parentheses

    这是悦乐书的第147次更新,第149篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第6题(顺位题号是20),给定一个只包含字符'(',')','{','}','['和'] ...

  10. python 管道、数据共享、进程池

    一.管道(Pipe)(了解) (详情参考:https://www.cnblogs.com/clschao/articles/9629392.html) 进程间通信(IPC)方式二:管道(不推荐使用,了 ...