6回答

0收藏

【望月追忆】带你入门STM32F0之二:点亮你的小灯----SysTick...

STM32技术交流小组 STM32技术交流小组 7414 人阅读 | 6 人回复 | 2012-12-06

本帖最后由 upc_arm 于 2012-12-6 17:07 编辑

初始化SysTick
使得每隔1ms来一次中断
本函数实现延时 n ms
  1. void SysTick_Delay_nms(uint32_t nms)
  2. {
  3.         if (SysTick_Config(SystemCoreClock / 1000))
  4.         {
  5.                 while(1);
  6.         }
  7.         TimingDelay = nms;
  8.         while(TimingDelay != 0);
  9. }
复制代码
注意中断函数  前面引用
  1. #include "Main.h"
复制代码
  1. void SysTick_Handler(void)
  2. {
  3.         TimingDelay_Decrement();
  4. }
复制代码
其中 TimingDelay_Decrement 实现在main文件中:
  1. void TimingDelay_Decrement(void)
  2. {
  3.   if (TimingDelay != 0x00)
  4.   {
  5.     TimingDelay--;
  6.   }
  7. }
复制代码
把这个函数声明放到main.h头文件中:
  1. #ifndef __MAIN_H
  2. #define __MAIN_H

  3. void TimingDelay_Decrement(void);

  4. #endif /* __MAIN_H */
复制代码
main函数

  1.   LED_Init();
  2.   while (1)
  3.   {
  4.                 GPIO_SetBits(LED_PORT, LED1_PIN | LED2_PIN);
  5.                 SysTick_Delay_nms(1000);
  6.                 GPIO_ResetBits(LED_PORT, LED1_PIN | LED2_PIN);
  7.                 SysTick_Delay_nms(1000);
  8.   }
复制代码
分享到:
回复

使用道具 举报

回答|共 6 个

倒序浏览

沙发

sugar-352625

发表于 2012-12-6 17:43:23 | 只看该作者

简洁有效,希望LZ坚持发文章啊。
板凳

青风

发表于 2012-12-6 18:23:49 | 只看该作者

这个要支持
我的淘宝店:http://qfv5.taobao.com/
地板

MMzhang-319191

发表于 2012-12-11 14:05:40 | 只看该作者

顶一个啊
心中有曲自然嗨!!!
5#

repo_3007473

发表于 2012-12-19 10:54:32 | 只看该作者

最想提升的就是ARM的编程思路与构架、
6#

迷途-338195

发表于 2013-1-6 12:20:49 | 只看该作者

   支持
        
7#

蝶舞娇阳

发表于 2013-12-28 12:56:46 | 只看该作者

顶一个,哈哈哈
关闭

站长推荐上一条 /3 下一条