stm32F103配置使用SysTick_Handler库函数
时间: 2023-12-01 19:03:46 浏览: 396
首先,在STM32F103的固件库中,SysTick_Handler函数已经在startup_stm32f10x_hd.s文件中定义,我们不需要手动编写该函数。而是需要在main函数中使用SysTick_Config函数对SysTick定时器进行配置。
以下是一个简单的例子:
```c
#include "stm32f10x.h"
#include "stm32f10x_conf.h"
void Delay(__IO uint32_t nTime);
int main(void)
{
/* 初始化SysTick定时器 */
if (SysTick_Config(SystemCoreClock / 1000))
{
/* 定时器初始化失败 */
while (1);
}
/* 系统时钟为72MHz,每个时钟周期为1/72MHz秒 */
/* SysTick_Config(SystemCoreClock / 1000) 的参数为72MHz时钟下,每1ms触发一次中断 */
while (1)
{
/* 延时一段时间 */
Delay(1000);
}
}
/* 延时函数,使用SysTick定时器 */
void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
/* SysTick中断处理函数 */
void SysTick_Handler(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
```
在该代码中,我们使用了SysTick_Config函数对SysTick定时器进行配置。SysTick_Config函数的参数为时钟周期数,即一次中断触发的时间间隔。在本例中,我们将时钟周期数设置为SystemCoreClock / 1000,即每1ms触发一次中断。
在main函数中,我们使用了一个简单的延时函数Delay来演示SysTick定时器的使用。Delay函数中,我们将一个计数器TimingDelay设置为需要延时的时间,然后在SysTick中断处理函数中递减该计数器,直到计数器为0时,延时结束。
最后,在代码中需要实现SysTick_Handler函数,该函数在SysTick定时器中断发生时被调用,我们在该函数中递减计数器TimingDelay。
阅读全文