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. git 入门教程之 git 私服搭建教程

    git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...

  2. springboot 学习之路 7(静态页面自动生效问题)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  3. HTML+JS+JQuery不可以使用status

    可能是JQuery的内部定义了status的原因!在HTML中的元素如果声明了ID为status的话,脚本中是不能访问这个对象的,会成为一个字符串对象.

  4. spring学习总结——介绍

    介绍:以下博客的内容都是依据<spring实战4>这本书.spring4.0 来总结. 一.spring作用 Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底 ...

  5. MyBatis笔记----报错Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ij34.model.UserMapper.selectUser

    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@41cf53f9: startup ...

  6. CentOS6.5内 MySQL5.7.19编译安装

    作为博主这样的Linux菜鸟,CentOS下最喜欢的就是yum安装.但有时候因为特殊情况(例如被墙等),某些软件可能没办法直接通过yum来安装,这时候我们可以使用编译安装或者直接二进制文件安装. 本博 ...

  7. c/c++ 网络编程与多线程 编译参数

    网络编程与多线程 编译参数 编译时要链接操作系统的pthread库 g++ -g socket01.cpp -std=c++11 -pthread 不加-pthread的话,出现下面的错误: term ...

  8. MapFileParser.sh: Permission denied

    Unity项目,需要用Xcode运行,结果报了错误. 解决方案: 1.打开终端, 2.输入以下命令: chmod +x   /Users/......./MapFileParser.sh (MapFi ...

  9. [Hive_add_9] Hive 的存储格式

    0. 说明 Hive 的存储格式 | textfile | sequencefile | rcfile | orc | parquet | 1. Hive的存储格式 1.1 textfile 行式存储 ...

  10. C语言 实现逆置功能

    C语言 实现逆置功能 //凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 字符串的逆置 方法1:利用数组 #include<stdio.h> ...