STM32W108无线射频模块UART通信应用实例

基于STM32W108芯片,编写串口測试程序,測试串口通信。完毕PC通过串口与STM32W108进行通信。

开发环境与硬件平台

硬件:STM32W108无线开发板,5V1A电源。J-LINK烧写器,串口线。PC机等。

软件:IAREmbedded Workbench开发工具。SimpleMac协议栈。

硬件连接的原理图,PB2是芯片STM32W108的接收端,PB1是芯片STM32W108的发送端。

 

 

硬件规划:当中用到的管脚有PB1,PB2,通过PB2接收PC机发送的数据,利用PB1将STM32W108的数据发送给PC机,实现两者的串口通信。

软件设计与规划

本实例调用__io_getcharNonBlocking(int8u*data)函数实现通过串口读取PC机发送的信息。调用printf()函数将信息输出到PC机。

測试程序的流程图如图8.10所看到的:首先初始化对应的硬件部分,本实例中用到了LED,串口等硬件设备;其次等待PC机串口输入,并进行推断。假设收到的数据为‘y’或’Y’,则点亮LED1。假设收到的数据为‘n’或‘N‘,则关闭LED1。假设收到是数据为‘?’。则输出全部符号的功能。假设输入非以上五种字符。则提示错误信息。

 

測试程序编写

编写測试程序源文件main.c:

/*****************************************************************

文件名称:main.c

版本:v1.0

创建日期:2012-12-29

硬件描写叙述:无

主要函数描写叙述:main( )函数实现串口通信。

*****************************************************************/

#include  PLATFORM_HEADER

#include  BOARD_HEADER

#include  <stdio.h>

#include  <stdlib.h>

#include  <string.h>

#include  "error.h"

#include  "hal/hal.h"

#include  "include/phy-library.h"

#include  "hal/micro/cortexm3/iap_bootloader.h"

 

/**************************************************************************

功能描写叙述:完毕串口通信功能

输入參数:无

输出參数:无

*************************************************************************/

int main(void)

{   

     u8 ch; //存放从串口调试助手得到的字符

    halInit();  //初始化硬件电路

     uartInit(115200, 8, PARITY_NONE, 1); //UART配置

 

     //配置PA4和PA5作为复用输出引脚,用于数据包的跟踪

     halGpioConfig(PORTA_PIN(4),GPIOCFG_OUT_ALT);

     halGpioConfig(PORTA_PIN(5),GPIOCFG_OUT_ALT);

    GPIO_IRQDSEL  = PORTB_PIN(2); //将IRQD与PB2/SC1RXD连接

     GPIO_INTCFGD = (3<<GPIO_INTMOD_BIT); //同意IRQD中断

     INT_GPIOFLAG = INT_IRQDFLAG;

     INT_PENDCLR = INT_IRQD;

     INTERRUPTS_ON();

     halInitLed(); //LED初始化

     printf(" y|Y     Turn On  LED1\n n|N     Turn Off LED1\n ?

     Help Command\n");

     while(TRUE)

     {       

         while ((!__io_getcharNonBlocking(&ch))); //循环等待FES2440发出的命令

         if(ch=='y'||ch=='Y')  //假设命令是'y'或’Y’,点亮LED_D1

         {          

             halSetLed(LED_D1);  //点亮LED_D1

         }       

         else if(ch=='n'||ch=='N') //假设命令是'n'或’N’。关闭LED1

         {                     

             halClearLed(LED_D1); //关闭LED_D1

         }

         else if(ch=='?') //假设命令是'?',解释各个命令的功能

         {

              printf(" y|Y     Turn On  LED1\n n|N     Turn Off LED1\n

?     Help Command\n");

         }

         else

         {

             printf("Error Command, Please Input '?

' for Help\n");

         }

 

         //中断又一次置位

         INT_GPIOFLAG = INT_IRQDFLAG;

         INT_PENDCLR = INT_IRQD;

    }

}

測试结果及分析

 

測试程序主要是通过串口控制LED1灯的闪烁。无线节点串口与PC机串口相连,打开串口调试助手,设置串口

 

打开串口之后。使用J-link将程序烧到开发板,重新启动实验平台上的STM32W108模块。

 

 

通过键盘在串口发送区输入字符’Y’或’y’,点击发送button。将信息发送给无线模块,此时LED1被点亮。如图所看到的;输入字符’n’或’N’,将关闭LED1;输入字符’M’,

 

 

STM32W108无线射频模块串行通信接口编程实例的更多相关文章

  1. STM32W108无线射频模块通用IO接口应用实例

    STM32W108无线射频模块通用IO接口应用实例 本实例编写STM32W108的GPIO測试程序,通过控制GPIO引脚,实现对LED灯的控制. 开发环境与硬件说明 硬件:STM32W108无线开发板 ...

  2. C#事件与接口编程实例

    很多初学c#的朋友对于事件与接口感到迷惑不解,不明白它们之间的关系,下面我就用实例来简单的分析讲解一下. 事件,用event修饰符来代表一个事件,我们要创建一个C#事件必须按以下顺序来扫行: 1,创建 ...

  3. yii2 restful api——app接口编程实例

    <?php namespace common\components; use common\models\Cart; use common\models\User; use Yii; use y ...

  4. C语言与MATLAB接口 编程与实例 李传军编着

    罗列一下以前自己学习C语言与MATLAB混编的笔记,顺便复习一遍. <C语言与MATLAB接口 编程与实例 李传军编着>(未看完,目前看到P106) 目录P4-8 ************ ...

  5. 蓝牙防丢器原理、实现与Android BLE接口编程

    本文是对已实现的蓝牙防丢器项目的总结,阐述蓝牙防丢器的原理.实现与android客户端的蓝牙BLE接口编程.在这里重点关注如何利用BLE接口来进行工程实现,对于BLE的协议.涉及到JNI的BLE接口内 ...

  6. [yueqian_scut]蓝牙防丢器原理、实现与Android BLE接口编程

    本文是对已实现的蓝牙防丢器项目的总结,阐述蓝牙防丢器的原理.实现与Android客户端的蓝牙BLE接口编程.在这里重点关注如何利用BLE接口来进行工程实现,对于BLE的协议.涉及到JNI的BLE接口内 ...

  7. 基于VC的串行通信技术应用实例

    在工业控制中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.   本文将介绍在Windows平台下串行通信的工作机制和用Visual C++设计串行通信程序的 ...

  8. 【GoLang】golang 面向对象编程 & 面向接口编程

    005.面向对象&接口编程 1 面向函数编程 1.1 将数据作为参数传递到函数入参 1.2 对象与函数是分离的 2 面向对象编程 2.1 使用者看起来函数作为对象的属性而非参数 2.2 函数属 ...

  9. SAP接口编程 之 JCo3.0系列(01):JCoDestination

    SAP接口编程 之 JCo3.0系列(01):JCoDestination 字数2101 阅读103 评论0 喜欢0 JCo3.0是Java语言与ABAP语言双向通讯的中间件.与之前1.0/2.0相比 ...

随机推荐

  1. 7.第一次使用java连接mongodb遇到的问题

    转自:https://blog.csdn.net/u010523770/article/details/54585883 新版本的mongodb的驱动包是依赖bson.jar和mongodb_driv ...

  2. 111.final与override

    #include <iostream> using namespace std; class myclass { public: //后面加一个final,则禁止虚函数被子类重写 //fi ...

  3. BZOJ 4003 左偏树

    思路: 用到了左偏树合并复杂度是logn的性质 一开始先BFS一遍 打标记的左偏树 //By SiriusRen #include <cstdio> #include <cstrin ...

  4. spring-cloud导入eclipse时,@slf4j注解为什么找不到log变量

    原因是缺少插件Lomboz. Lomboz是一个基于LGPL的开源J2EE综合开发环境的Eclipse插件,对编码,发布,测试,以及debug等各个软件开发的生命周期提供支持,支持JSP,EJB等.L ...

  5. The method getDispatcherType() is undefined for the type HttpServletRequest错误解决方法

    使用Eclipse Luna版本,jdk1.7和tomcat8.0开发JAVA EE应用.写一个简单的JSP部署后访问报JSP编译错误,具体错误信息如下: The method getDispatch ...

  6. 安装、配置Vmware Esx Server 3.5视频全过程

    Vmware Esx server 的特点是它无需任何操作系统就可在硬件上运行,它的内核是VMware自己开发的VMkernel,可以理解成为Windows系统内核NTOSKRNL.另外它完全依靠Li ...

  7. stat---显示文件的状态信息

    stat命令用于显示文件的状态信息.stat命令的输出信息比ls命令的输出信息要更详细. 语法 stat(选项)(参数) 选项 -L:支持符号连接: -f:显示文件系统状态而非文件状态: -t:以简洁 ...

  8. Silverlight 应用程序中未处理的错误

    Silverlight 开发中遇到个错误: SCRIPT5022: Silverlight 应用程序中未处理的错误 代码: 2108 类别: InitializeError 消息: 无法下载初始屏幕或 ...

  9. 【Cocos游戏实战】功夫小子第五课之帮助场景和选关功能的实现

    功夫小子之帮助场景和选关功能的实现 转载请注明出处:http://blog.csdn.net/suool/article/details/46661231 本节课的视频教程地址是: hmsr=teac ...

  10. Codeforces 429D Tricky Function 近期点对

    题目链接:点击打开链接 暴力出奇迹. 正解应该是近期点对.以i点为x轴,sum[i](前缀和)为y轴,求随意两点间的距离. 先来个科学的暴力代码: #include<stdio.h> #i ...