概述
在使用 ZStack-CC2530-2.5.1a 协议栈时,协议栈默认使用了串口;在IAR工程配置预处理器设置里有几个宏与使用串口有关:
ZTOOL_P1
MT_TASK
根据这两个宏,编译代码后,协议栈启动过程中会通过UART输出一些信息!
当我的应用程序不希望在zigbee协议栈启动过程中输出这些信息,即禁用启动过程中的UART输出。但是当协议栈完全启动完成后,
又要使用串口。实现这么一个需求,通过简单的几个步骤就可以了!
步骤一:之前提到在IAR工程配置里的那两个宏与UART的使用有关,现在我们将MT_TASK 修改为xMT_TASK。
此时进行编译!结果报错了,根据错误提示,认为与LCD文件的编译相关,我不关心LCD的使用,所以直接屏蔽掉
将LCD_SUPPORTED=DEBUG 改成 xLCD_SUPPORTED=DEBUG;再次编译就没有毛病了!
至此,我们已经屏蔽掉了Z-stack协议栈启动过程中的UART输出。
接下来就是要在协议栈启动后,输出我们自己想要的东西;这个也很方便就能实现。
步骤二:通过UART发送我们自己的数据,根据自己的应用,在任务初始化函数中添加串口初始化;
void AutoResetTV_Init( uint8 task_id )
{
AutoResetTV_TaskID = task_id;
AutoResetTV_NwkState = DEV_INIT;
AutoResetTV_TransID = 0;
MT_UartInit ();//初始化串口
步骤三:在完成步骤二后,接下来就是在应用中添加发送函数了。
uint16 AutoResetTV_ProcessEvent( uint8 task_id, uint16 events )
{
afIncomingMSGPacket_t *MSGpkt;
(void)task_id; // Intentionally unreferenced parameter
if ( events & SYS_EVENT_MSG )
{
.......
// Send a message out - This event is generated by a timer
// (setup in AutoResetTV_Init()).
if ( events & AutoResetTV_SEND_PERIODIC_MSG_EVT )
{
//周期串口数据
HalUARTWrite (MT_UART_DEFAULT_PORT, "Hin", 3);
// Send the periodic message
AutoResetTV_SendPeriodicMessage();
.......
完成上述几个步骤,就实现了启动Z-stack协议栈禁用UART输出,协议栈启动完成后使用UART输出我们希望的数据!(当然,别忘了将头文件添加到你的应用c文件开头(*^__^*))
最后
以上就是贤惠帽子为你收集整理的ZStack-CC2530-2.5.1a 串口使用笔记(一)的全部内容,希望文章能够帮你解决ZStack-CC2530-2.5.1a 串口使用笔记(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复