打印
[STM32F1]

stm32死延时,不用定时器,到底有没有靠谱的方法?st公司能给个办法不?

[复制链接]
8217|50
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2014-9-25 21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
st能给弄下。给个方法
沙发
xlsbz|  楼主 | 2014-9-25 22:32 | 只看该作者
最近,香班主,似乎不知忙(⊙o⊙)啥?了?

使用特权

评论回复
板凳
渤海三叠浪| | 2014-9-25 22:37 | 只看该作者
我查了下。似乎没办法。

使用特权

评论回复
地板
bhsdlmj| | 2014-9-25 22:39 | 只看该作者
延时不准。确实奇葩芯片

使用特权

评论回复
5
misra| | 2014-9-25 22:41 | 只看该作者
你到***那里问问吧!这里够呛

使用特权

评论回复
6
misra| | 2014-9-25 22:42 | 只看该作者
misra 发表于 2014-9-25 22:41
你到***那里问问吧!这里够呛

啊 莫那里问问

使用特权

评论回复
7
misra| | 2014-9-25 22:42 | 只看该作者
misra 发表于 2014-9-25 22:42
啊 莫那里问问

***

使用特权

评论回复
8
misra| | 2014-9-25 22:42 | 只看该作者
misra 发表于 2014-9-25 22:42
***

阿 莫

使用特权

评论回复
9
原野之浪| | 2014-9-25 22:45 | 只看该作者
xlsbz 发表于 2014-9-25 22:32
最近,香班主,似乎不知忙(⊙o⊙)啥?了?

问问副版主grand

使用特权

评论回复
10
李富贵| | 2014-9-25 22:57 | 只看该作者
这个内核问题不是ST设计的好不好。

使用特权

评论回复
11
airwill| | 2014-9-26 06:09 | 只看该作者
从 51 开始 mcu 的发展,随着处理器性能的提高,开始使用流水线以减少指令周期数,后来用缓存优化存储器总线的访问。
通常越高性能的 MCU 越没有肯定的指令周期数。所以,到 STM32 你还在用指令循环做长时间的延时,你就 OUT 了。
赶快在编程技术上跟上技术发展的步伐吧!知道吗?你那指令循环的延时时间里,本来 MCU 可以做很多很多的事情的,却被你用来延时傻等了,何等的浪费哪?!
其实,Cortex-M3 内核里的 Systick 就是专门给做时间基准用的。当然借助别的定时器也一样可以实现。你看看 STM32 提供了多么丰富的定时器资源哪,不要去纠结于那过去的老办法,赶快使用新的武器武装头脑吧。

使用特权

评论回复
12
xlsbz|  楼主 | 2014-9-26 08:07 | 只看该作者
李富贵 发表于 2014-9-25 22:57
这个内核问题不是ST设计的好不好。

嗯   大侠 是内核原因。但是ST怎么没给个文档啥的。网上不少人都问的啊。

使用特权

评论回复
13
xlsbz|  楼主 | 2014-9-26 08:12 | 只看该作者
airwill 发表于 2014-9-26 06:09
从 51 开始 mcu 的发展,随着处理器性能的提高,开始使用流水线以减少指令周期数,后来用缓存优化存储器总 ...

Systick是做时基没错。但是时基是可以让用户设置的。西门子PLC有1ms 10ms100ms。
现在若用户设置10ms。那么我485使能持续1ms怎么实现?
难道开个定时器不成?
别的定时器可能还有别的用处呢
ST芯片设计是系列产品  
那我的不同板卡产品也要出系列,意味着代码尽量兼容。
不同模块要尽量独立。

使用特权

评论回复
14
diweo| | 2014-9-26 08:26 | 只看该作者
有1个定时器,就等于有了无数个定时器。
有了systick,你可以同时实现1ms,10ms,100ms,1000ms任意个时基的组合。
只需注意在这些时基的最小公倍数的那个时间的总的处理时间小于systick的周期即可。
在一些不重要的场合,就算超过了也没事,只不过是延迟一个时基得到处理。

使用特权

评论回复
15
xlsbz|  楼主 | 2014-9-26 08:34 | 只看该作者
diweo 发表于 2014-9-26 08:26
有1个定时器,就等于有了无数个定时器。
有了systick,你可以同时实现1ms,10ms,100ms,1000ms任意个时基的组 ...

你说的我明白。准确讲是时基的整数倍都能实现。

若我得用户把时基设置成10ms,怎么实现1ms???

使用特权

评论回复
16
airwill| | 2014-9-26 08:36 | 只看该作者
楼上的办**是时基的真正含义。
以定数时基作为时间基本单元。任何其他定时可以以时基的溢出累计值作为计时比较。
也可以在时基中断里触发中断服务;定时累加会累减,触发事件 ……
办法很多,希望楼主多查些资料,多学习一些方法。

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
yanyanyan168 + 4 赞一个!
17
lu50211| | 2014-9-26 08:37 | 只看该作者
xlsbz 发表于 2014-9-26 08:34
你说的我明白。准确讲是时基的整数倍都能实现。

若我得用户把时基设置成10ms,怎么实现1ms???


你不会建议客户改成时基1ms或者更小呀

使用特权

评论回复
18
diweo| | 2014-9-26 08:38 | 只看该作者
xlsbz 发表于 2014-9-26 08:34
你说的我明白。准确讲是时基的整数倍都能实现。

若我得用户把时基设置成10ms,怎么实现1ms???

软件上能不能处理一下,核心功能的时基不能改变,功能性的时基可以由用户改变。但实际上总体都用同一个最小基准。

使用特权

评论回复
19
xlsbz|  楼主 | 2014-9-26 08:42 | 只看该作者
diweo 发表于 2014-9-26 08:38
软件上能不能处理一下,核心功能的时基不能改变,功能性的时基可以由用户改变。但实际上总体都用同一个最 ...

改变时基主要为了降低负载,比如需要采高频速度

使用特权

评论回复
20
xlsbz|  楼主 | 2014-9-26 08:45 | 只看该作者
lu50211 发表于 2014-9-26 08:37
你不会建议客户改成时基1ms或者更小呀

实在不行  只能如此了。当然对用户来讲 最好是傻瓜操作

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝