ZigBee TI ZStack CC2530 3.20 串口03-printf()函数移植
来源:互联网 发布:软件集成测试需求 编辑:程序博客网 时间:2024/06/05 05:20
(配套源代码、软件、文档等资料下载,可移步博客同名QQ群:263671349,博主24小时在线)
上一节中,我们实现了基于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 andreplace 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群:263671349,博主24小时在线)
- ZigBee TI ZStack CC2530 3.20 串口03-printf()函数移植
- ZigBee TI ZStack CC2530 3.18 串口01-发送
- ZigBee TI ZStack CC2530 3.19 串口02-接收
- ZigBee TI ZStack CC2530 3.12 LED驱动移植及使用
- ZigBee TI ZStack CC2530 1.1 总体框架
- ZigBee TI ZStack CC2530 2.2 ZigBee规范版本
- ZigBee TI ZStack CC2530 2.1 如何学习ZigBee
- ZigBee TI ZStack CC2530 2.3 协议栈版本
- ZigBee TI ZStack CC2530 3.10 IO口01-输入输出
- ZigBee TI ZStack CC2530 3.15 按键驱动02-中断模式
- ZigBee TI ZStack CC2530 3.11 IO口02-外部中断
- ZigBee TI ZStack CC2530 3.2 官方例程00-总
- ZigBee TI ZStack CC2530 2.5 搭建开发环境
- ZigBee TI ZStack CC2530 2.4 IAR软件版本
- ZigBee TI ZStack CC2530 3.9 IO口00-总
- ZigBee TI ZStack CC2530 3.6 创建基于ZStack的新工程
- ZigBee TI ZStack CC2530 3.14 按键驱动01-轮询模式
- ZigBee TI ZStack CC2530 2.6 选择开发板和下载器
- 浅拷贝与深拷贝
- XHTML与HTML的重要区别
- [题解]bzoj2243 SDOI2011 染色
- 牛客网刷题笔记--网络基础
- js exception 说明 (获取异常)
- ZigBee TI ZStack CC2530 3.20 串口03-printf()函数移植
- Hidden属性的input标签中XSS的触发方法
- ios-Foundation和Core Foundation
- 使用VC++2005 编码框架
- 编写的第一个python表达式出炉
- 几种市面比较流行的摄像头的rtsp协议协议格式
- Thread.sleep/wait
- 程序员应该访问的最佳网站中文版
- 关于x5button的操作