野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23919|回复: 8

点灯的时候为啥会双倍的循环 求大佬救命

[复制链接]
发表于 2021-2-24 14:03:40 | 显示全部楼层 |阅读模式
QQ图片20210224135404.png
为啥这灯会双倍的亮灭啊     这会亮灭4次
改成z<1会亮灭2次
求大佬解答一下疑惑
回复

使用道具 举报

发表于 2021-2-24 14:42:33 | 显示全部楼层
把配置输出的代码放到while循环之前试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-24 15:05:27 | 显示全部楼层
ZZZ_XXJ 发表于 2021-2-24 14:42
把配置输出的代码放到while循环之前试试

void delay (void)
{
        unsigned char i,j,k;
        for(i=20;i>0;i--)
        for(j=220;j>0;j--)
        for(k=248;k>0;k--);
}

int main(void)
{   
           int z;
           //打开GPIO端口时钟
           *( unsigned int *)0x40021018 |=( (1) << 3 );
           //配置IO口为输出
           *(unsigned int *)0x40010C00 &=~( (0x0f) << (4*0)); //先清零
           *(unsigned int *)0x40010C00 |=( (1) << (4*0));    //再赋值
   while(z<2)
         {
           //控制ODR寄存器
     *(unsigned int *)0x40010C0C &=~( 1 << 0 ); //亮
           delay();
           *(unsigned int *)0x40010C0C |= ( 1 << 0 ); //灭
           delay();
                 z=z+1;
         }
}

一样还是4次
回复 支持 反对

使用道具 举报

发表于 2021-2-24 20:24:20 | 显示全部楼层
774520909 发表于 2021-2-24 15:05
void delay (void)
{
        unsigned char i,j,k;

定义z的时候应该给Z赋一个初值0,不赋初值的话Z有可能是任意值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-25 13:09:01 | 显示全部楼层
ZZZ_XXJ 发表于 2021-2-24 20:24
定义z的时候应该给Z赋一个初值0,不赋初值的话Z有可能是任意值

一样的  应该定义int初始值就是0吧     赋值0了还是4次闪烁
回复 支持 反对

使用道具 举报

发表于 2021-2-25 15:27:26 | 显示全部楼层
774520909 发表于 2021-2-25 13:09
一样的  应该定义int初始值就是0吧     赋值0了还是4次闪烁

会不会是你的程序跑飞了啊,当Z=2的时候程序就退出while循环了。要不你设置个死循环,然后用if试试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-25 17:41:42 | 显示全部楼层
美羊羊是公羊 发表于 2021-2-25 15:27
会不会是你的程序跑飞了啊,当Z=2的时候程序就退出while循环了。要不你设置个死循环,然后用if试试。 ...

虽然不知道因为啥    是这样的   谢谢大佬
回复 支持 1 反对 0

使用道具 举报

发表于 2021-2-26 09:08:24 | 显示全部楼层
774520909 发表于 2021-2-25 13:09
一样的  应该定义int初始值就是0吧     赋值0了还是4次闪烁

不是的,如果想让一个变量定义的时候等于0,那最好是先赋值为0,因为定义的时候存放变量的那块内存可能原本有一些垃圾值
还是一样的话,那感觉或许是程序跑飞了,因为main函数最后没有while(1)死循环让程序保持运行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-26 12:34:04 | 显示全部楼层
ZZZ_XXJ 发表于 2021-2-26 09:08
不是的,如果想让一个变量定义的时候等于0,那最好是先赋值为0,因为定义的时候存放变量的那块内存可能原 ...

是这样的   谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 21:37 , Processed in 0.070029 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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