STM32W108无线射频模块串行通信接口编程实例
来源:互联网 发布:网络安全教育讲话稿 编辑:程序博客网 时间:2024/05/01 07:23
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’,点击发送按钮,将信息发送给无线模块,此时LED1被点亮,如图所示;输入字符’n’或’N’,将关闭LED1;输入字符’M’,
- STM32W108无线射频模块串行通信接口编程实例
- STM32W108无线射频模块串行通信接口
- STM32W108无线射频模块两节点之间通信实例
- STM32W108无线射频模块多节点之间通信实例
- STM32W108无线射频模块通用IO接口应用实例
- STM32W108无线射频模块外部中断接口应用实例
- STM32W108无线射频模块通用IO接口
- STM32W108无线射频模块协议栈接口
- STM32W108无线ZigBee射频模块
- STM32W108无线射频模块AD转换器应用实例
- STM32W108无线射频模块AD转换器
- STM32W108无线ZigBee射频模块复位模块原理
- STM32W108无线射频模块中断控制器(NVIC)
- STM32W108无线射频模块802.15.4/ZigBee协议栈
- SM32W108无线射频模块两节点之间通信实例
- SM32W108无线射频模块多个节点之间通信实例
- STM32W108无线ZigBee射频芯片引脚说明(上篇)
- STM32W108无线ZigBee射频芯片引脚说明(下篇)
- java生成说明文档
- Hdu 5115 ---区间dp(2014北京现场赛D题)
- 数组-08. 字符串转换成十进制整数
- Linux struct itimerval用法
- 外部类监听事件的点击事件
- STM32W108无线射频模块串行通信接口编程实例
- Android控件详解之Textview
- JS面向对象的程序设计
- linux 共享内存
- db dw dd 与equ的区别
- 使用libxml解析HTML -- DTHTMLParser
- pandas的read_csv()函数读取的文件路径问题
- 数组-02. 打印杨辉三角
- 01 storm 源码阅读 storm的进程间消息通信实现netty server实现