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

STM32F411【Nucleo】第三课--sysTick定时器(基于keil5.13)

[复制链接]
颩色四葉愺 发布时间:2015-2-1 15:51
(1)建立工程,新建工程的步骤就不说了!请参考我之前的帖子:" g; I! s2 p( W3 R9 m
STM32F411【Nucleo】第一课--新建工程(基于keil 5.13)% q$ Y+ M* [' i/ g6 a' F
(2)新建文件 bsp_SysTick.c    bsp_Tick.h  记得建好文件要添加到工程中,头文件路径也要加上!9 s$ i( ~  j$ f/ I
  1. #include "bsp_SysTick.h"
    # Z. ~# g8 P7 i" p9 ~9 ^+ y
  2. ; Z. y! P% R4 k5 J
  3. static __IO u32 TimingDelay;
    $ V( `, U) S! K& W( x- N
  4. void Delay_ms(__IO u32 nTime)
    3 X0 F% i9 l2 y" S0 K
  5. { 8 A! W+ }) {" v! }
  6.         TimingDelay = nTime;       
    0 d; `$ ^+ O; {

  7. ; Y/ r9 R) Z. C) ~# C1 C! G1 `6 U
  8.         // 使能滴答定时器  3 A+ X  [! v. G
  9.         SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;
    4 Y3 U- Z. j7 @* H! l
  10. 5 I+ H" x  k. [' s- X: W  M; O
  11.         while(TimingDelay != 0);
    5 `# l$ B7 _1 u4 w3 I. [5 t8 X
  12. }; |0 |9 d7 x7 L" w$ e6 _5 Q

  13. % i7 F* `! @: k
  14. void SysTick_Init(void)
    $ {+ ^5 b* U4 e5 P) {
  15. {
    : j( o5 t) m: H* s" A- d( K' n
  16. /*
    3 u) m+ z" A: N# {1 ]
  17. * t : 定时时间
    & H9 _- U6 F9 {* q. R9 j
  18. * Ticks : 多少个时钟周期产生一次中断 - j- n+ ^, _2 K7 i8 j% p  h2 c
  19. * f : 时钟频率 100000000# q. x" l  R4 `& B
  20. * t = Ticks * 1/f = (100000000/1000) * (1/100000000) = 1ms
    " N, u8 f* z' ]( \- x  a
  21. */   R5 R& ^' i' k# u
  22.         if(SysTick_Config(SystemCoreClock/1000))$ @- Z1 L' x* v" Q' r
  23.         {
    0 l, j5 s8 s+ b
  24.                 while(1);7 {5 \5 B  |" \: q
  25.         }
    ( v5 m, U! }* M
  26.         SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
    8 }  K/ g0 n. s
  27. }" J9 Z) ?4 G& @0 E$ n* p, N
  28. //bsp_SysTick定时器中断调用& t( }( [1 Z4 |) V1 s& q- v
  29. void TimingDelay_Decrement(void)
    3 p- o% B+ C, t! C
  30. {
    $ K9 ~, t0 f0 n8 q4 |/ I! ?$ z
  31.         if (TimingDelay != 0x00)
    5 @5 ^' `6 a* \9 s
  32.         { " t6 }! I* \- y: S& R/ Q3 \" b
  33.                 TimingDelay--;3 X5 l$ i+ f5 M$ c# g
  34.         }
    8 L( j3 {/ m& o/ a% P
  35. }
复制代码
bsp_Tick.h' T" f% t" K6 a# r
  1. #ifndef _BSP_SYSTICK_H_
    0 K# K# i- r& P6 t2 d0 }2 A7 n3 b
  2. #define _BSP_SYSTICK_H_; Z6 j. z! D& ]2 F* R" D

  3. " ~3 d( k% k  E
  4. #include "stm32f4xx.h"
    ) W" R! K* }5 L3 M8 i+ I
  5. void Delay_ms(__IO u32 nTime);& n: p0 D* {% I: \, R' C0 `0 u
  6. void SysTick_Init(void);
    ' D. {2 a! B2 T7 i& t2 q3 q: \7 l9 p$ s

  7. ' T: B/ y3 A: j9 h' T. j; h% y
  8. #endif
复制代码
% m5 E0 I% Q6 {6 H. t) ]1 ]* f
(3)添加LED相关文件,参考我之前的帖子:
' u4 m3 i1 E) vSTM32F411【Nucleo】第二课--led灯(基于keil5.13)2 d4 `( C- B( ^5 s9 T
(4)修改mian.c
# L# A! `' c( }  B) B8 Z4 }5 ~
  1. #include "stm32f4xx.h"8 Q/ t- D; u) k( f9 g
  2. #include "bsp_led.h"" M: q* q1 o3 W) [) M3 W+ X
  3. #include "bsp_SysTick.h", c0 d8 r( c' i2 t% p7 `

  4. / E1 M" c7 m7 G6 h# [: x5 H$ r+ M/ V% J
  5. int main(void)  H! i$ o! }! C/ e  y1 Q! @
  6. {
    : a# v& X6 P8 q0 z9 p7 |
  7.         LED_GPIO_Config();/ y- R8 J3 x) P3 `
  8.         SysTick_Init();
    - R8 c, ?, K% A; V' s- W
  9.         - Z* u" C3 o) p* p: i4 H8 T
  10.   while (1)# ?3 ?1 u% Y) D$ ^" x, n5 w
  11.   {* o& y- s+ K+ ^. \2 t; S/ x  s' a7 F& f
  12.                 LED(ON);7 i8 Y/ ^3 ^: D/ K
  13.                 Delay_ms(1000);
    3 N+ T( I0 V+ B9 N. s& v; B* W
  14.                 LED(OFF);
    ' }. M& L# d2 H9 T& _) }8 ~0 h
  15.                 Delay_ms(1000);
    : L' O; n$ ]* c
  16.                 # m$ k7 v6 b& l. Y% c
  17.   }; j$ m1 G+ ^+ _$ Q3 [5 ?( ?4 U  o; _
  18. }, d9 c0 W& `+ U1 C( {& \
  19. 6 H5 L8 W+ T* V! i0 S- l
  20. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
(5)修改中断服务文件 stm32f4xx_it.c
" k2 C/ P! s2 ^1 ?开头声明一下我们在bsp_SysTick.c 编写的中断处理函数# r% G3 e) f/ F9 ~, \+ k
  1. #include "stm32f4xx_it.h"
    - S0 p, |& S0 I
  2. extern void TimingDelay_Decrement(void);
复制代码
修改SysTick_Handler函数* r6 \4 @- l( a- v% P
  1. void SysTick_Handler(void)) \7 O, W* ~, y
  2. {, p0 }: k, v& a% ]: q) W; s
  3.         TimingDelay_Decrement();       
      S2 p8 x& E! j5 T" s/ Q
  4. }
复制代码
( o0 E; S- o4 o) }

9 t* f& c8 }, k3 {( g4 _- A+ V编译后下载后就能看见板载led灯一闪一闪   频率接近1s   用频率分析仪查看周期达到(0.96s)算准了,没在学校!本可用示波器更加准确地检验!1 t5 Q0 o# V# c' [; q
& S9 d. `$ W# q6 b0 X5 u: i
附上代码:
+ e: ~8 |- M' M; \' z- K stm32f411re(Nucleo)原理图.pdf (1.03 MB, 下载次数: 50)
收藏 4 评论12 发布时间:2015-2-1 15:51

举报

12个回答
wyxy163@126.com 回答时间:2015-2-1 17:10:05
提示: 作者被禁止或删除 内容自动屏蔽
颩色四葉愺 回答时间:2015-2-1 17:21:41
数码小叶 发表于 2015-2-1 17:106 I+ L6 I* J0 W; j- b8 |' t% V
5.13出来了?
1 C0 B! P  ]( [/ Y* y2 x
出了好久了,不过有个BUG 器件改不了的,悲剧
feel-376797 回答时间:2015-2-1 17:27:33
谢谢分享
wyxy163@126.com 回答时间:2015-2-1 17:53:01
提示: 作者被禁止或删除 内容自动屏蔽
wyxy163@126.com 回答时间:2015-2-1 17:53:27
提示: 作者被禁止或删除 内容自动屏蔽
颩色四葉愺 回答时间:2015-2-1 18:13:37
keil官网啊MDK-ARM Version 5.13
sting 回答时间:2015-2-1 20:24:43
谢谢
112207301219 回答时间:2015-7-28 13:41:13
感谢分享
mark0668 回答时间:2015-7-28 14:46:24
感谢分享
huaimaoatangge 回答时间:2018-8-20 09:52:53
这也算是全面的了
huaimaoatangge 回答时间:2018-9-6 08:51:53
真的不错,顶
北区609 回答时间:2020-5-5 17:07:53
不错,感谢,手里的 NUCLEO-F411RE,运行起来了,下一步目标移植freertos
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版