主要是一个函数的使用,
串口助手发送的数据1
这个是接收1
if(USART_RX_BUF[0]=='1')
主函数这样写会
接收数据1 使LED闪烁
int main(void)
{
u8 t;
u8 len;
u8 mark=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n");
for(t=0;t<len;t++)
{
USART1->DR=USART_RX_BUF[t];
while((USART1->SR&0X40)==0);//等待发送结束
}
if(USART_RX_BUF[0]=='1')
{
mark=1;
if(mark==1)
{
for(i=0;i<20;i++)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_1); //LED0输出低
GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1输出高
delay_ms(300);
GPIO_SetBits(GPIOC,GPIO_Pin_1);//LED0输出高
GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1输出低
delay_ms(300);
}
i=0;
mark=0;
GPIO_ResetBits(GPIOC,GPIO_Pin_1); //LED0输出低
GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1输出低
}
USART_RX_BUF[0]='\0';
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}
}
}
要是想另一种如果发送abc三个字符串点亮的话
if(USART_RX_BUF[0]=='a'&&USART_RX_BUF[1]=='b'&&USART_RX_BUF[2]=='c')
{
...
...
}