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

STM32F411【Nucleo】第七课--定时器(基于keil5.15)

[复制链接]
颩色四葉愺 发布时间:2015-8-20 23:24
好久没来论坛逛了,一直在忙着智能车和企业项目,智能车只拿了华南赛二等无缘国赛,企业的项目也即将结束,我也该来更新更新论坛帖子了4 L& _; V& Q7 Z: U& _. e, r2 `
这块板子的定时器也很容易配置   这里我就用定时器让板载的LED灯闪烁吧!
+ U8 Y* [$ a7 C' h" t$ G4 F, p! W' ^. x' g7 l6 k5 v
(1)建立工程,新建工程的步骤就不说了!请参考我之前的帖子:: o" m- G, O2 T( M  e
STM32F411【Nucleo】第一课--新建工程(基于keil 5.13)
1 F( \+ D" [+ M(2)led配置就不讲了,参考我以前写的点亮led的帖子:8 b: B9 W* Y4 ?5 s+ o
STM32F411【Nucleo】第二课--led灯(基于keil5.13)
* Z4 E: R* R" g2 V9 r4 M% ~" o(3)新建bsp_time.c和bsp_time.h1 y/ V. P/ K7 M# d( W. b
bsp_time.c文件如下:
6 @" x1 Y# f1 Y
  1. #include "bsp_time.h"
    * v3 W( C% i9 n
  2. /*% |& M8 j( T5 E2 V
  3. *****************
    & [+ Q' e1 {5 U  h
  4. 通用定时器3初始化
    6 o- E9 _: U% a7 S1 W, g( o
  5. arr:自动重装值9 E& x, n9 e; S. u
  6. psc:时钟预分频数
    4 p$ d- t, _0 w+ r6 p
  7. 定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us ! c" G2 I2 l7 p
  8. Ft:定时器工作频率,单位MHz% s2 u1 |% g. C! {* z
  9. *****************
    . L$ Q- q, {  l* T" d! V7 i4 ^5 b
  10. */
    / J% t8 Y5 A; B$ ~# T& F
  11. void TIM3_Init(u16 arr,u16 psc)0 D7 `% i# s, g. b! Y9 @3 O9 G) |
  12. {
    5 b# U' w+ ^9 z- [
  13.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    & T% M9 P& M" N
  14.         NVIC_InitTypeDef NVIC_InitStructure;
    ; F! \& |* J, y2 l- I! Y7 |
  15.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能TIM3时钟* S- l4 F) L5 ^5 Y. E  H
  16.         , d# j. N+ o$ N+ o3 V3 f
  17.         TIM_TimeBaseInitStructure.TIM_Period=arr;//自动重装载值
    / [! j$ f) |& o/ M
  18.         TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//定时器分频
    7 m5 D$ ?; l+ \' B% z& N0 t9 Q" g1 @
  19.         TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式% C3 f! N6 N; x6 h2 l* l
  20.         TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
    $ P0 k' N) L* q. t' s% F  M' R
  21.        
      a: v% E9 Q# X( l/ \7 O
  22.         TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化定时器3
    5 m/ ]1 ]1 g0 d! k/ @8 \  C
  23.         6 g0 k1 ~; F$ [7 U
  24.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//允许定时器3更新中断  K: o: }+ f. K
  25.        
    / C2 e! S3 m9 L$ j1 u0 x5 Z
  26.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//定时器3中断
    * R$ R' H( L% g7 R0 b$ O# W
  27.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;//抢占优先级1
    + ?; v+ h4 t' u8 R9 e8 i9 n. D) T
  28.         NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02;//子优先级32 |' m; _( G9 b4 C& H" B
  29.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;) j/ N% E8 C- A$ D( ]
  30.         NVIC_Init(&NVIC_InitStructure);//初始化NVIC/ m9 r( @3 ^* m5 i/ e
  31.        
    ' l* W% ]; r  u9 ?8 f; c
  32.         TIM_Cmd(TIM3,ENABLE);//使能定时器3
    3 ]4 @( U+ ]; u1 n# L
  33. }# {! I8 o" T& N. ^/ y
复制代码
bsp_time.h文件如下:
  1. #ifndef _BSP_TIME_H_: B! S, p5 N1 a' A
  2. #define _BSP_TIME_H_: N, m8 S! N1 J8 D
  3. : M3 h3 @! t  R0 Y6 |; y2 t
  4. #include "stm32f4xx.h"" _! v' g9 }" Q: o  ]9 r* Y
  5. void TIM3_Init(u16 arr,u16 psc);
    # F3 d7 w$ c' E: E7 w2 U- @, y

  6. - `' ^& V8 x2 ]8 g$ q
  7. #endif9 [. r; A1 b6 m  b. ~
复制代码
中断处理文件添加以下代码:% D/ U. A; D) T5 k
  1. void TIM3_IRQHandler(void)
    & h$ B/ I* T5 ^  C( S1 t
  2. {
    & U9 H5 \. ~3 t3 `2 u" t
  3.         if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET), T( j% Z& O9 @$ P
  4.         {
    7 [7 L# t; \1 T( @2 Y' y
  5.                 LED_TOGGLE;
    " N, u& H' C( o) l1 C; i/ q
  6.         }% B2 n: t) l  h! |" K
  7.         TIM_ClearITPendingBit(TIM3,TIM_IT_Update);- E" i; b( `2 o" v; G  t% O
  8. }
复制代码

. P2 @* Q. c* a* Smain函数:
$ t" u. w+ l; S
  1. #include "stm32f4xx.h"5 A$ p4 w. {3 c% I5 ?6 h4 P
  2. #include "bsp_time.h"2 {7 F8 \" v6 |. Y1 H
  3. #include "bsp_led.h"
    - R- m5 v. @7 J4 m: B  X
  4. int main(void)
    8 e: V$ v2 m) F0 R: q: R9 \" B+ W
  5. {7 H; J/ U* j- o3 N9 W
  6.         LED_GPIO_Config();, ?8 y5 ^/ ]- e
  7.         TIM3_Init(9999,9999);
    - e/ N. F( O" G1 z
  8.         while (1)" L& P* D7 z! [4 J9 W
  9.         {
    # G0 R8 [( O6 {
  10.         }
    * N+ Z( p. U3 C1 p/ p3 k8 G6 S. l
  11. }
    0 T- {' c, Z: v: }
  12. ! ~: A1 h& n# W6 r2 p  c! ?
  13. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
    , K% Z- E6 ^7 ]6 k. e
复制代码
编译下载后,led灯每隔一秒闪烁一次2 o  q% ~' ?7 b. L4 W' h
* x3 c3 a; D( a' k# A# |; H- t
源码 7.定时器.rar (6.51 MB, 下载次数: 221)
赞 收藏 2 评论7 发布时间:2015-8-20 23:24

举报

7个回答
颩色四葉愺 回答时间:2015-8-20 23:31:46
打个小广告,希望管理员理解 QQ截图20150820232752.png ) n6 y/ V' t: z4 j
有兴趣一起组队么,我有一个项目,希望找些志同道合的人,毕竟大家都是玩STM的,有兴趣的发短信给我呗或者加我QQ QQ:907304747" d2 |% g2 E+ r& V
chendiand 回答时间:2015-8-21 12:11:56
赞一个
netlhx 回答时间:2015-8-21 20:23:22
二等奖也不错了,
kingming 回答时间:2017-2-15 16:26:18
定时器工作频率如何看呢,楼主
颩色四葉愺 回答时间:2017-2-20 20:24:54
kingming 发表于 2017-2-15 16:262 l4 ^9 f( |3 i2 |0 h
定时器工作频率如何看呢,楼主

/ {- t( Z0 J) U0 M用示波器看
日天男 回答时间:2017-2-20 21:03:31
楼主是哪里的啊
huaimaoatangge 回答时间:2018-9-3 13:35:23
请问楼主,F411的资料网上有卖的么?

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版