OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3228|回复: 2

新手求助

[复制链接]

2

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-4-8
在线时间
5 小时
发表于 2017-4-8 11:26:32 | 显示全部楼层 |阅读模式
1金钱
刚开始学STM32,想用串口控制LED的亮灭,但是不知道为什么用上面的可以,用strcmp进行比较时不行?主程序如下:
int main()
{
        u8 t,f=0;
        u8 len;
        delay_init(72);
        LED_Init();
        NVIC_Configuration();
        uart_init(9600);

        while(1)
        {         
                 if(USART_RX_STA&0x80)
                 {
                         len=USART_RX_STA&0X3F;
                         printf("\n您发送的消息为:\n");
                         for(t=0;t<len;t++)
                         {        
                                  rd[t]=USART_RX_BUF[t];
                                 USART1->DR=USART_RX_BUF[t];           
                                 while((USART1->SR&0X40)==0);
                         }
                         printf("\r\n\r\n");
                         f=1;
                         USART_RX_STA=0;
                 }
                 if(f)
                 {

                        if(rd[0]=='l'&&rd[1]=='e'&&rd[2]=='d'&&rd[3]=='o'&&rd[4]=='n')
                         {
                                 LED1=0;
                                 printf("\nled_on_ok\n");
                         }
                         if(rd[0]=='l'&&rd[1]=='e'&&rd[2]=='d'&&rd[3]=='o'&&rd[4]=='f'&&rd[5]=='f')
                         {
                                 LED1=1;
                                 printf("\nled_off_ok\n");
                         }                                                                                            
                   /*if(strcmp(rd,"ledon")==0)
                         {
                                 LED1=0;
                                 printf("\nled_on_ok\n");
                         }
                  if(strcmp(rd,"ledoff")==0)
                         {
                                 LED1=1;
                                 printf("\nled_off_ok\n");
                         } */
                         f=0;
                 }  
        }
}


最佳答案

查看完整内容[请看2#楼]

rd这个字符数组后面加上个‘\0’,strcmp是比较两个字符串,rd是字符数组得加个字符串结束标志
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2017-4-8 11:26:33 | 显示全部楼层
rd这个字符数组后面加上个‘\0’,strcmp是比较两个字符串,rd是字符数组得加个字符串结束标志
回复

使用道具 举报

2

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-4-8
在线时间
5 小时
 楼主| 发表于 2017-4-8 11:55:13 | 显示全部楼层
szczyb1314 发表于 2017-4-8 11:42
rd这个字符数组后面加上个‘\0’,strcmp是比较两个字符串,rd是字符数组得加个字符串结束标志

谢谢,已解决
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-22 08:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表