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

[复制链接]
10008|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 来自手机 | 显示全部楼层
延时不准。确实奇葩芯片
misra 发表于 2014-9-25 22:41 来自手机 | 显示全部楼层
你到***那里问问吧!这里够呛
misra 发表于 2014-9-25 22:42 来自手机 | 显示全部楼层
misra 发表于 2014-9-25 22:41
你到***那里问问吧!这里够呛

啊 莫那里问问
misra 发表于 2014-9-25 22:42 来自手机 | 显示全部楼层
misra 发表于 2014-9-25 22:42
啊 莫那里问问

***
misra 发表于 2014-9-25 22:42 来自手机 | 显示全部楼层
misra 发表于 2014-9-25 22:42
***

阿 莫
原野之浪 发表于 2014-9-25 22:45 来自手机 | 显示全部楼层
xlsbz 发表于 2014-9-25 22:32
最近,香班主,似乎不知忙(⊙o⊙)啥?了?

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

嗯   大侠 是内核原因。但是ST怎么没给个文档啥的。网上不少人都问的啊。
 楼主| xlsbz 发表于 2014-9-26 08:12 | 显示全部楼层
airwill 发表于 2014-9-26 06:09
从 51 开始 mcu 的发展,随着处理器性能的提高,开始使用流水线以减少指令周期数,后来用缓存优化存储器总 ...

Systick是做时基没错。但是时基是可以让用户设置的。西门子PLC有1ms 10ms100ms。
现在若用户设置10ms。那么我485使能持续1ms怎么实现?
难道开个定时器不成?
别的定时器可能还有别的用处呢
ST芯片设计是系列产品  
那我的不同板卡产品也要出系列,意味着代码尽量兼容。
不同模块要尽量独立。
diweo 发表于 2014-9-26 08:26 | 显示全部楼层
有1个定时器,就等于有了无数个定时器。
有了systick,你可以同时实现1ms,10ms,100ms,1000ms任意个时基的组合。
只需注意在这些时基的最小公倍数的那个时间的总的处理时间小于systick的周期即可。
在一些不重要的场合,就算超过了也没事,只不过是延迟一个时基得到处理。
 楼主| xlsbz 发表于 2014-9-26 08:34 | 显示全部楼层
diweo 发表于 2014-9-26 08:26
有1个定时器,就等于有了无数个定时器。
有了systick,你可以同时实现1ms,10ms,100ms,1000ms任意个时基的组 ...

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

若我得用户把时基设置成10ms,怎么实现1ms???
airwill 发表于 2014-9-26 08:36 | 显示全部楼层
楼上的办**是时基的真正含义。
以定数时基作为时间基本单元。任何其他定时可以以时基的溢出累计值作为计时比较。
也可以在时基中断里触发中断服务;定时累加会累减,触发事件 ……
办法很多,希望楼主多查些资料,多学习一些方法。

评分

参与人数 1威望 +4 收起 理由
yanyanyan168 + 4 赞一个!

查看全部评分

lu50211 发表于 2014-9-26 08:37 | 显示全部楼层
xlsbz 发表于 2014-9-26 08:34
你说的我明白。准确讲是时基的整数倍都能实现。

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


你不会建议客户改成时基1ms或者更小呀
diweo 发表于 2014-9-26 08:38 | 显示全部楼层
xlsbz 发表于 2014-9-26 08:34
你说的我明白。准确讲是时基的整数倍都能实现。

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

软件上能不能处理一下,核心功能的时基不能改变,功能性的时基可以由用户改变。但实际上总体都用同一个最小基准。
 楼主| xlsbz 发表于 2014-9-26 08:42 | 显示全部楼层
diweo 发表于 2014-9-26 08:38
软件上能不能处理一下,核心功能的时基不能改变,功能性的时基可以由用户改变。但实际上总体都用同一个最 ...

改变时基主要为了降低负载,比如需要采高频速度
 楼主| xlsbz 发表于 2014-9-26 08:45 | 显示全部楼层
lu50211 发表于 2014-9-26 08:37
你不会建议客户改成时基1ms或者更小呀

实在不行  只能如此了。当然对用户来讲 最好是傻瓜操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部