OpenEdv-开源电子网

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

写的一个小代码运行不了,求大神来看看

[复制链接]

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
发表于 2018-4-18 22:40:43 | 显示全部楼层 |阅读模式
10金钱
主要是通过ADC得到一个电压值,把这个电压值在显示屏上显示出来,而且设置判断,当这个电压值小于3 的时候PA8会输出脉冲信号。个人觉得是不是if语句里面有问题?
[mw_shl_code=c,true]int main(void)
{
  int a;
        int value;
        float temp;
        delay_init();
  MOTOR_Init();
        delay_init();                     //延时函数初始化          
        uart_init(9600);                 //串口初始化为9600
        adc_init();                                  //ADC初始化          
  LCD_Init();         
        LCD_ShowString(15,150,200,24,24,"VOL:0.0000V");
        while(1)
        {
          a=Get_Adc(ADC_Channel_1);
                temp=(float)a*(3.3/4096);
                a=temp;
                LCD_ShowxNum(63,150,a,1,24,0);
                temp-=a;
                temp*=10000;
          LCD_ShowxNum(87,150,temp,4,24,0X80);
                printf("V:%f v\r\n",temp);
                value=3;
                if (temp<value)//电压小于3,发送200hz的脉冲信号
                {                       
                while(1){
                        GPIO_SetBits(GPIOA,GPIO_Pin_8);
                        delay_ms(5);
      GPIO_ResetBits(GPIOA,GPIO_Pin_8);
                        delay_ms(5);     
            }
     }
                delay_ms(1000);
         }


}[/mw_shl_code]

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-4-19 01:45:04 | 显示全部楼层
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-4-19 09:02:46 | 显示全部楼层
你这段代码执行一次就死循环了。
回复

使用道具 举报

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
 楼主| 发表于 2018-4-19 09:22:24 | 显示全部楼层
HXYDJ 发表于 2018-4-19 09:02
你这段代码执行一次就死循环了。

请问下为什么呢,刚写代码不是很懂
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-19 09:26:25 | 显示全部楼层
ljw285 发表于 2018-4-19 09:22
请问下为什么呢,刚写代码不是很懂

你第二个while(1)不是死循环吗,没有出口。
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-4-19 09:36:02 | 显示全部楼层
你的程序逻辑只要电压第一次小于3就一直输出脉冲了,出不来了
回复

使用道具 举报

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
 楼主| 发表于 2018-4-19 09:42:06 | 显示全部楼层
szczyb1314 发表于 2018-4-19 09:36
你的程序逻辑只要电压第一次小于3就一直输出脉冲了,出不来了

可是我没有检测到脉冲啊,就是说没有进入到循环里面
回复

使用道具 举报

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
 楼主| 发表于 2018-4-19 09:42:17 | 显示全部楼层
candylife9 发表于 2018-4-19 09:26
你第二个while(1)不是死循环吗,没有出口。

可是我没有检测到脉冲啊,就是说没有进入到循环里面
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-4-19 09:43:19 | 显示全部楼层
ljw285 发表于 2018-4-19 09:42
可是我没有检测到脉冲啊,就是说没有进入到循环里面

PA8没初始化
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
 楼主| 发表于 2018-4-19 10:02:46 | 显示全部楼层

找到问题了,int和float不能直接判断
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-10-11
在线时间
4 小时
发表于 2018-4-19 10:25:50 | 显示全部楼层
可能是因为temp value 数据类型不一致,另外第二个while执行时不退出?
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-19 10:45:17 | 显示全部楼层
ljw285 发表于 2018-4-19 10:02
找到问题了,int和float不能直接判断

你这程序问题挺多的。。。一个个调吧。
回复

使用道具 举报

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
 楼主| 发表于 2018-4-19 10:54:16 | 显示全部楼层
licupt 发表于 2018-4-19 10:25
可能是因为temp value 数据类型不一致,另外第二个while执行时不退出?

小白想再问一下,第二个while的时候怎么执行循环的时候也更新temp?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 17:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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