你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【MCU实战经验】STM32F103不占用定时器(包括SysTick)实现精确延时

[复制链接]
zww 发布时间:2014-4-19 18:19
分享一个我以前在原子的论坛发的贴:
0 l9 T2 c+ q8 G, f2 ~( P: m在学习和使用STM32F103系列MCU中,研究了一下CM3手册,发现调试组件中有对CPU时钟进行计数的功能(CYCCNT),如下图:, x2 X2 b' s  u! A8 n: f2 L2 c
  
1 d: l9 h7 \& L. z 9 a* v4 u! p- O4 }5 F' q7 I: Q! L  Q
 
* M& @& Y# V! f/ A+ c: W" N" O因而可以利用它进行延时。代码如下:0 B' O7 v2 _( f7 _- u

2 A8 n* F8 M  z8 K- Z4 ~#define  DWT_CR      *(volatile u32  *)0xE0001000
! j/ X/ T! N( f7 b' r! \0 c! h) L#define  DWT_CYCCNT  *(volatile u32 *)0xE0001004! d- s. p0 q4 |5 F& k$ M) |
#define   DEM_CR      *(volatile u32 *)0xE000EDFC
- I) ]( j7 v4 g) \" R* Z8 J#define  DBGMCU_CR   *(volatile u32  *)0xE0042004
+ j) @/ ~1 Q- K% D# b" B  y#define  DEM_CR_TRCENA                   (1
收藏 1 评论13 发布时间:2014-4-19 18:19

举报

13个回答
dsdsadsa 回答时间:2014-4-19 18:29:34

RE:【MCU实战经验】STM32F103不占用定时器(包括SysTick)实现精确延时

谢谢楼主分享,以后多交流
一灯一登 回答时间:2014-4-21 22:38:37

回复:【MCU实战经验】STM32F103不占用定时器(包括SysTick)实现精确延时

佩服 楼主的观察力和执行力
putiandiao 回答时间:2014-4-30 08:27:08

RE:【MCU实战经验】STM32F103不占用定时器(包括SysTick)实现精确延时

在延时里面,不还是在无限循环判断吗?也是比较消耗CPU的吧?
6874577 回答时间:2015-1-6 09:46:34
说的真好
流浪的方丈2015 回答时间:2015-1-6 13:39:22
感觉不靠谱
ataudio 回答时间:2015-1-6 14:09:52
有没有实际使用?精度能到us还是ns?
steven陈 回答时间:2015-1-17 22:31:56
ataudio 发表于 2015-1-6 14:09" w0 g6 ?2 N/ K! Q  m
有没有实际使用?精度能到us还是ns?
! Z' s$ O: Y, f- Q; a3 N% ?
精确到ms,也可以用来产生1s的间隔。* J/ D2 D. Z" J% d9 c* x
#include "stm32f10x.h"9 o. a* D# Q* N2 u0 Z, |  y
#include "usart1.h"
; m0 z$ k, R8 ?; [+ @2 B#include "DWT_Delay.h"
7 P" |* p4 g* z; a- f+ @& s& v9 M  b6 C' S+ P
8 B9 t- Q, y0 r0 ?. H# u
/*
# @4 F/ b5 \8 P( Y1 g * 函数名:main9 w( P, a: k& S/ m) O) Z4 _
* 描述  :主函数
$ |, b) c* o6 G' H* B5 A * 输入  :无
6 \  m: _2 J4 v2 p3 l/ {- u * 输出  :无
" ?* q" v3 z# m. E */
4 H' p3 D, C4 I1 G* `3 Iint main(void)
2 V# Y2 _* o) w% \. @- |3 `# A{        + x6 u; C4 `  z0 v
        int i=0;
0 a6 f  {% u! o! D        int j;
, o8 E1 v: C* M, F2 j9 j$ ?        /* USART1 config 115200 8-N-1 */
" \6 ?' y. d1 H' T9 m        USART1_Config();
! w9 I2 Q4 A& i" ]' Q$ q( r8 X+ d5 r        DelayInit(SystemCoreClock);
  r3 D3 l% C+ j" s( V. A2 X9 a# e        for(j=0;j<20;j++)
, ?1 C7 Z7 P4 k& @        {/ Z. @. R' D- {9 z0 d4 W
                printf("%d",i);, `% e/ N5 D% N: ?' d/ r
                printf("\r\n");, R- Y7 E  A9 j2 K0 A) |* a, D
                Delayms(1000);
3 X+ k$ N. @9 ?* y" t  J; {- J                i=i+1;  c) C( G$ `' q. S3 c* w. u
        }
wyxy163@126.com 回答时间:2015-1-18 21:57:19
提示: 作者被禁止或删除 内容自动屏蔽
埃斯提爱慕 回答时间:2015-1-18 22:12:30
提示: 作者被禁止或删除 内容自动屏蔽
hanmcustm 回答时间:2015-1-18 22:54:47
阻塞CPU吧
ataudio 回答时间:2015-1-19 09:05:10
论坛理网友的这个帖子计时方式更好一些:
0 ^# l( V& q; Z5 t& g% [https://www.stmcu.org.cn/module/ ... read&tid=598792
# w" j" v1 q% _+ k  s3 s4 }% ]% h天天小宇---------------[原创] 【经验分享】STM32中实用的精确延时方法
AndyYau-268557 回答时间:2015-1-19 15:07:54
用tick就行了
seasky001 回答时间:2018-12-25 15:58:22
了解一下

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版