zigbee与Stm32串口通信(通过串口通信来控制开关灯)

首先我们需要对zigbee进行编程:

软件IAR

#include 
#include 

#define  uint  unsigned int
#define  uchar unsigned char

//函数声明
void Delay(uint);
void initUARTSEND(void);
void UartTX_Send_String(char *Data,int len);

char Txdata[50]="1\r\n";
char kaideng[30]="2\r\n";
/****************************************************************
    延时函数											
****************************************************************/
void Delay(uint n)
{
	uint i;
	for(i=0;i

该代码执行的是让P0_2与P0_3作为串口UART发送消息,发送的消息为1与2,来回发送。

然后再STM32编程,

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"

 int main(void)
 {    

 
    delay_init();             //延时函数初始化    
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
    uart_init(115200);     //串口初始化··    为115200
    LED_Init();               //初始化与LED连接的硬件接口 
 
    while(1)
    {
        if(USART_RX_STA&0x8000)
        {                       
            if(USART_RX_BUF[0] =='1')
            {
                GPIO_SetBits(GPIOA,GPIO_Pin_8); //LED0输出低
            printf("正在关灯:\r\n");
                
            printf("\r\n\r\n");//插入换行
                
            USART_RX_STA=0;
            }
            if(USART_RX_BUF[0] =='2')
            {
                GPIO_ResetBits(GPIOA,GPIO_Pin_8); //开灯
            printf("正在开灯:\r\n");
            printf("\r\n\r\n");//插入换行
            USART_RX_STA=0;
            }
        }

    }     
}
 


 

写入当收到消息为1时,开灯,消息为2时,关灯

此时注意。需要进行换行,\r\n 在ZIGBEE那边的发送字符串也需要加入换行代码,之前没有加,导致了出错。

然后接线,PA9接P0_2,    PA10接P0_3

5V接5V,RND接RND;

你可能感兴趣的:(嵌入式,stm32,单片机,arm)