有计划地在调一个无线模块,原子的ATK8266,首先这个模块是一个串口wifi模块,通过串口发送指令给wifi模块来决定运行模式,随后进入某种模式中,来连续发送串口的给定的数据。
所以,具体的as函数大体应该为两块
1. 一串连续的串口字符来决定模式 2. 进入连续发送模式。
void atk_8266_at_response(u8 mode)
{ if(USART3_RX_STA&0X8000) //接收到一次数据了
{
USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加结束符
printf("%s",USART3_RX_BUF); //发送到串口
if(mode)USART3_RX_STA=0; } }
USART3_RX_STA 这个寄存器相当于一个串口接收中断,当一个信号发过来时,这个寄存器的值置高。
我们翻阅数据手册,其实有一个标志位可以表示buffer内暂存的数据内容
Channel_sts_reg0 0x0000002C的第2位,我们通过检测这个标志位,可以得到接收buffer内是否有数的标志,从而实现polled模式下的接收。
接下来贴具体代码:
//按照ATK8266的手册配置串口传输
/***************************** Include Files *********************************/
#include "xparameters.h"
#include "xstatus.h"
#include "xuartlite.h"
#include "xil_prin