新手入门
积分 14
金钱 14
注册时间 2016-4-4
在线时间 2 小时
2 金钱
我想请问一下,现在终端节点发送数据给协调器,是以报文的反式。 HalUARTWrite (UART0, afRxData, 10); uint8 afRxData[30]={0}; 其中afRxData[4]是温度的数据,afRxData[5]是湿度的数据。现在协调器通过TX RX发送数据给STM32的串口2,然后
通过串口1把接受到的afRxData打印出来。发现数据不一致,不知道哪里错了?
串口中断部分函数
u16 USART2_RX_STA=0;
void USART2_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
res =USART_ReceiveData(USART2);
if(USART2_RX_STA<USART2_MAX_RECV_LEN)
{
TIM_SetCounter(TIM4,0);
if(USART2_RX_STA==0)TIM4_Set(1); //开启定时器中断
USART2_RX_BUF[USART2_RX_STA++]=res;
}else
{
USART2_RX_STA|=1<<15;
}
}
}
//定时器中断
void TIM4_IRQHandler(void)
{
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)//êǸüDÂÖD¶Ï
{
USART2_RX_STA|=1<<15; //强制接收
TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); //
TIM4_Set(0);
}
}
//main 函数
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(9600);
USART2_Init(38400);
LED_Init(); //
KEY_Init();
while(1)
{
delay_ms(1000);
printf("The data is %s\r\n",USART2_RX_BUF);
Õa¾ä»°±£Ö¤¿éòÔ¼ìDø·¢Ëíêy¾Yè¥μôμÄ»°3ìDòÖ»Äü·¢Ëíò»′Îêy¾Y£¬2¢ÇòÏYèëËàÑ-»·μ±ÖD
}
我来回答
ZIGBEE中的协调器通过串口把需要发送的数据写入串口