OpenEdv-开源电子网

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

stm32 记录程序运行时间

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-3-18
在线时间
0 小时
发表于 2014-3-19 14:50:43 | 显示全部楼层 |阅读模式

我想在程序中做一个超时的限制,就是在若超出一定时间去执行其他操作。像图中这样可以吗?t++;?我在考虑晶振的问题,执行一条语句需要的时间。怎样知道这样的t++;就是一毫秒呢?求大侠帮忙!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-3-18
在线时间
0 小时
 楼主| 发表于 2014-3-19 14:51:28 | 显示全部楼层
麻烦原子哥,解答呀~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-19 17:41:03 | 显示全部楼层
回复【楼主位】snow:
---------------------------------
t++,哪里要1ms啊。。。
你代码这样写,是没问题。
只是t++很容易就到10000了,你加个delay_ms(1);就差不多了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-19 18:20:52 | 显示全部楼层
回复【楼主位】snow:
---------------------------------
为什么要用软延时干等呢?设置一个定时器,到时间去检测一下事件有无发生,没有发生就执行别的任务。
回复 支持 反对

使用道具 举报

15

主题

90

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2014-3-2
在线时间
2 小时
发表于 2014-3-19 18:33:31 | 显示全部楼层
回复【4楼】ricefat:
---------------------------------
老师您好  我想仿真一下串口实验   无从下手  求指导  另外有没有一些仿真教程  我没怎么用过keil仿真
1369813157  衣冠民
回复 支持 反对

使用道具 举报

15

主题

90

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2014-3-2
在线时间
2 小时
发表于 2014-3-19 18:34:39 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子兄  我是一只小菜鸟  想仿真一下串口实验   无从下手  求指导  另外有没有一些仿真教程  我没怎么用过keil仿真
1369813157  衣冠民
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-19 18:47:43 | 显示全部楼层
回复【5楼】衣冠民:
---------------------------------
没有仿真过串口实验,那个似乎设置对了不会出问题
回复 支持 反对

使用道具 举报

15

主题

90

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2014-3-2
在线时间
2 小时
发表于 2014-3-19 18:52:49 | 显示全部楼层
回复【7楼】ricefat:
---------------------------------
嗯  首先谢谢您的解答   我现在正在学习阶段   所以仿真对我来说比较重要  我想学习一下  若有什么仿真的资料希望您能提供   我会自己研习的
1369813157  衣冠民
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-3-18
在线时间
0 小时
 楼主| 发表于 2014-3-19 21:42:08 | 显示全部楼层
回复【3楼】正点原子:

回复【楼主位】snow:
---------------------------------
t++,哪里要1ms啊。。。
你代码这样写,是没问题。
只是t++很容易就到10000了,你加个delay_ms(1);就差不多了。

---------------------------------
不是,我想实现的是从程序运行开始,到一段时间之后,要是运行超过1s之后去执行其他操作(超时弹出的功能),我不想用rtc,所以想知道用++t;可以吗?要是不行怎样做呢?
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-3-18
在线时间
0 小时
 楼主| 发表于 2014-3-19 21:44:00 | 显示全部楼层
回复【4楼】ricefat:
---------------------------------
我不是想检测事件有没有发生,我是想知道程序循环执行,超出一定时间时,去执行其他操作。谢谢回答!!还是知道错误啦~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-19 23:09:48 | 显示全部楼层
回复【9楼】snow:
---------------------------------
可以,就是执行很快。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-20 09:13:56 | 显示全部楼层
回复【10楼】snow:
---------------------------------
我的意思就是这个,用定时器,在溢出中断设置标志位,每次循环检测这个标志位来判断有无到时
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-3-18
在线时间
0 小时
 楼主| 发表于 2014-3-20 10:45:53 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
谢谢~
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-3-18
在线时间
0 小时
 楼主| 发表于 2014-3-20 10:46:04 | 显示全部楼层
回复【12楼】ricefat:
---------------------------------
谢谢~
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
发表于 2015-5-23 14:02:21 | 显示全部楼层
回复【12楼】ricefat:
---------------------------------
请问一下,怎么使某一条件满足时,执行计时功能,
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-1-7
在线时间
0 小时
发表于 2015-5-23 20:36:17 | 显示全部楼层
回复【15楼】yysforever:
---------------------------------
这样?
while(1)
{
   if(condition())
        delay_ms(1000);
}
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
发表于 2015-5-26 11:50:17 | 显示全部楼层
回复【16楼】Timingtime:
---------------------------------
如果用定时器呢
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-1-7
在线时间
0 小时
发表于 2015-5-26 12:50:03 | 显示全部楼层
回复【17楼】yysforever:
---------------------------------
设置好定时器配置,然后定义好服务程序。。。

比如TIM2_IRQHandler,如果条件满足就enable定时器,事件响应后就disable定时器
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
发表于 2015-5-26 14:55:36 | 显示全部楼层
回复【18楼】Timingtime:
---------------------------------
void TIM3_IRQHandler(void)   //TIM3中断
{

// if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 
// {
//
// TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源 
// }
//
 if(temp1 < 3.1)
   {
             TIM_Cmd(TIM3, ENABLE);

   }
else
{
 TIM3->CNT = 0;
      TIM_Cmd(TIM3, DISABLE); 

}
TIM_ClearITPendingBit(TIM3, TIM_IT_Update  ); 

}
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 00:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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