OpenEdv-开源电子网

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

求助:死循环为什么不循环了

[复制链接]

1

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2019-12-15
在线时间
39 小时
发表于 2019-12-19 13:52:00 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 DavidWang 于 2019-12-19 15:31 编辑

初学者又进一坑,请大佬们指点:

void GetMTR(void)

{
         MotorSel=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);
}

int main(void)
{
         while (1)
          {
                  GetMTR();                        //读取GPIOA引脚6的状态,选择受控电机。

                  if (MotorSel==1)
                          GPIO_SetBits(GPIOB,GPIO_Pin_3);                        //GPIOB 引脚3置1
                  else
                          GPIO_ResetBits(GPIOB,GPIO_Pin_3);                        //GPIOB 引脚3置0

          }

}


以上是为了实时读取 MotorSel,并输出驱动指令。F8单步执行没有任何问题,去掉断点全部运行,根本不循环了........前面断点单步运行获得的状态不变了....为什么?





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

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2013-3-18
在线时间
82 小时
发表于 2019-12-19 22:02:07 | 显示全部楼层
单步运行慢,全速后比较快,是不是眼睛看不出来变化了,你只需要在全速之后,再设置断点试一下,就可以判断循环是不是在继续进行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-12-20 02:35:37 | 显示全部楼层
价格printf在里面输出个啥t++之类的,看下情况吧
回复

使用道具 举报

28

主题

294

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2018-3-26
在线时间
294 小时
发表于 2019-12-20 09:14:35 | 显示全部楼层
Debug时关闭看门狗
茵茵猪头
回复

使用道具 举报

0

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2019-3-6
在线时间
36 小时
发表于 2019-12-20 12:38:39 | 显示全部楼层
PA6、PB3这两个IO口初始化过没有?
回复

使用道具 举报

8

主题

293

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2018-8-16
在线时间
327 小时
发表于 2019-12-20 13:05:21 | 显示全部楼层
MotorSel用volatile声明。
回复

使用道具 举报

1

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2019-12-15
在线时间
39 小时
 楼主| 发表于 2019-12-21 11:29:35 | 显示全部楼层
QuiGonJinn 发表于 2019-12-20 12:38
PA6、PB3这两个IO口初始化过没有?

都初始化了
回复

使用道具 举报

1

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2019-12-15
在线时间
39 小时
 楼主| 发表于 2019-12-21 11:53:46 | 显示全部楼层
holy404290384 发表于 2019-12-19 22:02
单步运行慢,全速后比较快,是不是眼睛看不出来变化了,你只需要在全速之后,再设置断点试一下,就可以判断 ...

单步运行的时候,MotorSel可以从GPIO_Pin_6读到变化的输入。比如:MotorSel=1,但是,如果这个时候去掉断点全部运行,MotorSel就会保持=1,无论你怎么从外部改变GPIO_Pin_6的输入状态(高位触发),感觉就是没有执行GetMTR过程,怀疑就是不循环了。
回复

使用道具 举报

1

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2019-12-15
在线时间
39 小时
 楼主| 发表于 2019-12-22 00:17:12 | 显示全部楼层
brucewoo 发表于 2019-12-20 13:05
MotorSel用volatile声明。

试了,没什么变化。
回复

使用道具 举报

1

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2019-12-15
在线时间
39 小时
 楼主| 发表于 2019-12-22 00:18:55 | 显示全部楼层
htao 发表于 2019-12-20 09:14
Debug时关闭看门狗

关了,还是一样
回复

使用道具 举报

0

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2019-3-6
在线时间
36 小时
发表于 2019-12-26 11:30:37 | 显示全部楼层

初始化代码呢?

在哪里初始化的?

贴代码麻烦你贴全
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-21 01:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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