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

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

[复制链接]
颩色四葉愺 发布时间:2015-2-1 15:51
(1)建立工程,新建工程的步骤就不说了!请参考我之前的帖子:
STM32F411【Nucleo】第一课--新建工程(基于keil 5.13)
(2)新建文件 bsp_SysTick.c    bsp_Tick.h  记得建好文件要添加到工程中,头文件路径也要加上!
  1. #include "bsp_SysTick.h"

  2. static __IO u32 TimingDelay;
  3. void Delay_ms(__IO u32 nTime)
  4. {
  5.         TimingDelay = nTime;       

  6.         // 使能滴答定时器  
  7.         SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;

  8.         while(TimingDelay != 0);
  9. }

  10. void SysTick_Init(void)
  11. {
  12. /*
  13. * t : 定时时间
  14. * Ticks : 多少个时钟周期产生一次中断
  15. * f : 时钟频率 100000000
  16. * t = Ticks * 1/f = (100000000/1000) * (1/100000000) = 1ms
  17. */
  18.         if(SysTick_Config(SystemCoreClock/1000))
  19.         {
  20.                 while(1);
  21.         }
  22.         SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
  23. }
  24. //bsp_SysTick定时器中断调用
  25. void TimingDelay_Decrement(void)
  26. {
  27.         if (TimingDelay != 0x00)
  28.         {
  29.                 TimingDelay--;
  30.         }
  31. }
复制代码
bsp_Tick.h
  1. #ifndef _BSP_SYSTICK_H_
  2. #define _BSP_SYSTICK_H_

  3. #include "stm32f4xx.h"
  4. void Delay_ms(__IO u32 nTime);
  5. void SysTick_Init(void);

  6. #endif
复制代码

(3)添加LED相关文件,参考我之前的帖子:
STM32F411【Nucleo】第二课--led灯(基于keil5.13)
(4)修改mian.c
  1. #include "stm32f4xx.h"
  2. #include "bsp_led.h"
  3. #include "bsp_SysTick.h"

  4. int main(void)
  5. {
  6.         LED_GPIO_Config();
  7.         SysTick_Init();
  8.        
  9.   while (1)
  10.   {
  11.                 LED(ON);
  12.                 Delay_ms(1000);
  13.                 LED(OFF);
  14.                 Delay_ms(1000);
  15.                
  16.   }
  17. }

  18. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
(5)修改中断服务文件 stm32f4xx_it.c
开头声明一下我们在bsp_SysTick.c 编写的中断处理函数
  1. #include "stm32f4xx_it.h"
  2. extern void TimingDelay_Decrement(void);
复制代码
修改SysTick_Handler函数
  1. void SysTick_Handler(void)
  2. {
  3.         TimingDelay_Decrement();       
  4. }
复制代码


编译后下载后就能看见板载led灯一闪一闪   频率接近1s   用频率分析仪查看周期达到(0.96s)算准了,没在学校!本可用示波器更加准确地检验!

附上代码:
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

出了好久了,不过有个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 手机版