STM32F4xx的SysTick定时器应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32F4xx的SysTick定时器应用

本例程为STM32F4XX(M4内核)关于systick应用的程序。

主函数main.c文件如下:

#include "stm32f4xx.h"

/**************************************************************************\

** 文件名: mian.c *****************************************************

** 库版本:STM32F4xx_DSP_StdPeriph_Lib_V1.0.1 ***********************

** 工作环境: RealView MDK-ARM 4.23 ***********************************

** 作者: 曾有根***************************************************

** 生成日期: 2012-08-03 ************************************************

** 功能:SysTick的应用,精确延时,使led灯翻转********************

\************************************************************************/

extern void led_init(void);

extern void TimingDelay_Decrement(void);

extern void Delay(__IO uint32_t nTime);

int main()

{

SystemInit();

led_init();

if (SysTick_Config(168000)) //时钟节拍中断时10ms一次,用于定时,168000也可以用SystemCoreClock / 1000 替代

{

while (1);

}

while(1)

{

GPIO_SetBits(GPIOE,GPIO_Pin_7 | GPIO_Pin_8 );

Delay(500); //延时500ms,led灯1s闪烁一次

GPIO_ResetBits(GPIOE,GPIO_Pin_7 | GPIO_Pin_8 );

Delay(500);

}

}

相关配置systick_config.c文件如下:

#include "stm32f4xx.h"

static __IO uint32_t TimingDelay;

void led_init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

/* Enable the GPIO_LED Clock */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);

/* Configure the GPIO_LED pin */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8; //led IO口

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//模式:输出

// GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;

// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉,硬件自带上拉电阻,故此处不需要软件上拉,若不屏蔽则led灯很暗

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50M翻转

GPIO_Init(GPIOE, &GPIO_InitStructure);

}

void TimingDelay_Decrement(void)//记得将此函数加入stm32f4xx_it.c文件中(第143行),并申明外部函数

{

if (TimingDelay != 0x00)

{

TimingDelay--;

}

}

void Delay(__IO uint32_t nTime)

{

TimingDelay = nTime;

while(TimingDelay != 0);

}

另外,在stm32f4xx_it.c文件中,需打开中断,操作如下:将此函数打开,并在stm32f4xx_it.c的前面申明extern void TimingDelay_Decrement(void);

void SysTick_Handler(void)

{

TimingDelay_Decrement(); //本行程序原本是屏蔽了的,切记要打开

}

未屏蔽程序如下:

说明:已经经本人下载至STM32F4的开发板上成功调试,LED能够正常的翻转!可供广大奋斗在前线的机油们参考!

相关文档
最新文档