OpenEdv-开源电子网

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

ledc实验中,main 函数执行了两次?

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2021-1-24
在线时间
1 小时
发表于 2021-1-24 19:59:10 | 显示全部楼层 |阅读模式
1金钱
裸机运行这个程序的时候,led灯总共闪烁了10次,也就是说这个main函数被执行了两次。在第一次执行 break后,又重启了一次。
这个什么原因呢?
  1. int main(void) {
  2.         clk_enable();
  3.         led_init();

  4.         int x = 1;
  5.         while(1) {
  6.                 led_off();
  7.                 delay(500);

  8.                 led_on();
  9.                 delay(500);

  10.                 if(x == 5) {
  11.                         break;
  12.                 }
  13.                 x++;
  14.         }
  15.         return 0;
  16. }
复制代码


最佳答案

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

你不要break, main函数不能执行完!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-1-24 19:59:11 | 显示全部楼层
你不要break, main函数不能执行完!!!
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8207
金钱
8207
注册时间
2020-5-11
在线时间
3702 小时
发表于 2021-1-25 10:39:19 | 显示全部楼层
调试一下看break之后它干了啥
一般不这样搞啊,谁知道main函数返回之后接下来是啥?
所以main里都是有while(1)死循环且不会有break;
专治疑难杂症
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2021-1-25 12:27:23 | 显示全部楼层
跑飞了
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2020-7-16
在线时间
50 小时
发表于 2021-1-26 13:08:36 | 显示全部楼层
程序指针非法了,主循环不能break啊
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2021-1-27 11:28:22 | 显示全部楼层
裸机main函数不能return。它是最顶层的执行,要返回哪里呢?未可知。

就跟Linux下init进程不能杀死是一样的道理
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 22:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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