OpenEdv-开源电子网

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

用mini板子写程序时,一个主函数中同时有两个if语句。

[复制链接]

8

主题

14

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-4-16
在线时间
4 小时
发表于 2019-4-16 16:21:51 | 显示全部楼层 |阅读模式
if(humidity<20)        GPIO_ResetBits(GPIOD, GPIO_Pin_2);
                else GPIO_SetBits(GPIOD, GPIO_Pin_2);
               
                if(24<temperature<26)
{
                        TIM1_PWM_Init(899,0); //2&#187;·&#214;&#198;μ&#161;£PWM&#198;μ&#194;ê=72000/(89+1)=800Khz
                TIM_OC1PolarityConfig(TIM1,TIM_OCPolarity_Low);        //μíμ&#231;&#198;&#189;óDD§                               
                TIM_SetCompare1(TIM1,450);
}
else if(temperature>26)
        {       
                TIM1_PWM_Init(899,0); //2&#187;·&#214;&#198;μ&#161;£PWM&#198;μ&#194;ê=72000/(899+1)=80Khz
                        TIM_OC1PolarityConfig(TIM1,TIM_OCPolarity_Low);        //μíμ&#231;&#198;&#189;óDD§                       
                TIM_SetCompare1(TIM1,45);               
        }
else GPIO_SetBits(GPIOA, GPIO_Pin_8);

求问大佬,这样的程序可以吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-4-15
在线时间
29 小时
发表于 2019-4-17 09:28:21 | 显示全部楼层
应该要这样写吧if((temperature<26)&(temperature>24))
回复 支持 1 反对 0

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-4-16 20:46:54 | 显示全部楼层
“if(24<temperature<26)”这个不对
回复 支持 反对

使用道具 举报

8

主题

571

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2922
金钱
2922
注册时间
2016-5-13
在线时间
185 小时
发表于 2019-4-17 10:01:21 | 显示全部楼层
if((24<temperature)&&(temperature<26))
{
......
}
else  if(temperature>=26){
......
}
else {
......
//这里只有if(temperature<=24)的情况
}
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

8

主题

571

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2922
金钱
2922
注册时间
2016-5-13
在线时间
185 小时
发表于 2019-4-17 10:05:21 | 显示全部楼层

if((24<temperature)&&(temperature<26))
{
......
}
else  if(temperature>26){
......
}
else {
......
//这里有(temperature<=24)的情况 和(temperature==26)的情况,所以这种写法是不对的
}
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2019-4-17 10:47:52 | 显示全部楼层
本帖最后由 弦子的弦 于 2019-4-17 10:52 编辑

你这样写的话,会出现逻辑问题。
[mw_shl_code=c,true]#include <stdio.h>
int num = -12;

int main(void) {
        // your code goes here
        if(-2<num<-18)
                printf("num 的值在(-2,-18)之间");
        else
            printf("num 的值不在(-2,-18)之间");
        return 0;
}[/mw_shl_code]
这段代码最后会打印出:"num 的值不在(-2,-18)之间",C会先判断 -2<num,结果是真的,所以返回真(一个非零数,一般是1),接着再判断1<-18,结果是假,返回了0,就进入了else语句了。
回复 支持 反对

使用道具 举报

8

主题

14

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-4-16
在线时间
4 小时
 楼主| 发表于 2019-4-17 15:30:52 | 显示全部楼层

谢谢,我先自己再改一改!
回复 支持 反对

使用道具 举报

8

主题

571

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2922
金钱
2922
注册时间
2016-5-13
在线时间
185 小时
发表于 2019-4-17 18:10:56 | 显示全部楼层
一定要养成代码规范的好习惯哦。比如这样写:
void main(){
        ......
        TIM1_PWM_Init(899,0);
        TIM_OC1PolarityConfig(TIM1,TIM_OCPolarity_Low);
        ......
        While(1){
                ......
                if(humidity<20){
                        GPIO_ResetBits(GPIOD, GPIO_Pin_2);
                }
                else {
                        GPIO_SetBits(GPIOD, GPIO_Pin_2);
                }              
                if((24<temperature)&&(temperature<26)){                                                  
                        TIM_SetCompare1(TIM1,450);
                }
                else if(temperature>=26){                           
                        TIM_SetCompare1(TIM1,45);               
                }
                else {
                        GPIO_SetBits(GPIOA, GPIO_Pin_8);
                }
                ......
        }//end while
}//end main
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 01:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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