ZigBee TI ZStack CC2530 3.20 串口03-printf()函数移植

简介: (配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 上一节中,我们实现了基于Z-Stack协议栈的串口初始化和串口输出功能。 关于Z-Stack协议栈中的串口输出功能,我们为了打印“hello world !\r\n”,需要用如下代码来实现: ...

(配套源码软件开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911


上一节中,我们实现了基于Z-Stack协议栈的串口初始化和串口输出功能。


关于Z-Stack协议栈中的串口输出功能,我们为了打印“hello world !\r\n”,需要用如下代码来实现:

HalUARTWrite(HAL_UART_PORT_0,"hello world !\r\n",sizeof("hello world !\r\n")-1);
具体其实是调用了hal_uart.c文件中的函数HalUARTWrite( ),具体文件所在位置及函数代码实现如下图所示:



在调用该函数实现串口输出功能时,需要填入3个参数,并且所能实现的输出功能有限;

此外,如果使用过其他嵌入式平台下的串口打印功能,想必都知道有一个名为printf的函数,功能非常丰富,用起来也非常方便!

于是便想到如果可以将printf( )函数移植到我们的Z-Stack协议栈中,一定会给我们带来极大的便利!


关于printf( )函数的详细了描述请上自行百度,此处引用2句百度百科中的描述:

(1)printf( )函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息;

(2)printf( )函数的调用格式为: printf("<格式化字符串>", <参量表>)。


移植步骤(大体与前一节中添加uart0.c和uart0.h实现串口基本发送功能类似):

1、参考网上找到的printf( )函数功能代码,编写我们本节需要使用的user_printf.c和user_printf.h两个文件(具体代码请到统一下载链接去下载);

函数比较复杂,这边只摘出user_printf.c文件中的一段代码:

/*
	putchar is the only external dependency for this file,
	if you have a working putchar, leave it commented out.
	If not, uncomment the define below and
	replace outbyte(c) by your own function call.

#define putchar(c) outbyte(c)
*/

#include "stdarg.h"
#include "user_printf.h"
#include "hal_uart.h"

void putchar(char c);
void putchar(char c){
  HalUARTWrite(HAL_UART_PORT_0,(uint8*)&c,1);
}
可见,printf( )函数本质上其实还是调用的hal_uart.c文件中的HalUARTWrite( )来实现串口输出!

2、其余步骤如:往工程中添加文件、在调用printf( )函数的C文件中加入包含user_printf.h头文件、在ProjectApp_Init( )中调用等,均与上一节类似;

这里贴出在ProjectApp_Init( )中调用的代码(不改动上一节的代码,仅在后面添加):

  Uart0_Init(HAL_UART_BR_115200);
  HalUARTWrite(HAL_UART_PORT_0,"hello world !\r\n",sizeof("hello world !\r\n")-1);
  printf("hello world !\r\n");
  printf("decimal:%03d hex:%03x\r\n",255,255);
3、编译下载等步骤也与上一节类似,最后看一下串口调试助手的接收窗口:



(配套源码软件开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911

相关文章
|
传感器 物联网
( zigbee)CC2530+BH1750光敏传感器获取光照强度
( zigbee)CC2530+BH1750光敏传感器获取光照强度
836 0
( zigbee)CC2530+BH1750光敏传感器获取光照强度
|
6月前
|
芯片
CC2500和CC1101移植说明
主要通过如何移植、移植注意、关于芯片配置、如何生成导出配置四大步骤来说明CC2500和CC1101移植
|
物联网 芯片
|
传感器 网络协议 物联网
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
567 0
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
|
传感器 网络协议 物联网
基于CC2530(ZigBee)设计的自动照明系统
基于ZigBee的自动照明系统设计,上面连接了光感传感器,ESP8266WIFI模块。通过ESP8266与手机APP之间通信,ESP8266创建热点,配置为TCP服务器模式; 手机APP连接上ESP8266的热点之后,再连接ESP8266创建的服务器,完成通信。 手机APP上通过按钮可以控制B,C开发板上LED灯的开关。
571 0
|
传感器 物联网 Linux
基于CC2530(ZigBee设计)的温度报警器
这是基于CC2530设计的远程温度报警器,通过CC2530终端检测环境温度上传给手机APP实时显示。 一共有两块CC2530开发板,这里就分别称为A板(当做协调器)、B板(当做温度节点),A板上接了ESP8266 WIF模块,用于与手机APP之间通信。B板上接了DS18B20 温度传感器模块,用于给A板传递检测的温度,A板收到DS18B20的温度之后,发送给手机APP显示。APP上位机采用Qt框架设计,支持跨平台,Android、windows、IOS、Linux都可以编译运行安装。
862 0
|
物联网
ZigBee(CC2530)最小系统PCB设计(AD18开发软件)
ZigBee(CC2530)最小系统PCB设计(AD18开发软件
ZigBee(CC2530)最小系统PCB设计(AD18开发软件)
|
Android开发
【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | /art/dex2oat/dex2oat.cc#Dex2oat 函数源码 )(二)
【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | /art/dex2oat/dex2oat.cc#Dex2oat 函数源码 )(二)
334 0
|
Android开发
【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | /art/dex2oat/dex2oat.cc#Dex2oat 函数源码 )(一)
【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | /art/dex2oat/dex2oat.cc#Dex2oat 函数源码 )(一)
257 0
|
Android开发
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
165 0