系统定时器原理以及结构
系统定时器的时间计算
SysTick结构体
SysTick固件库函数
SysTick中断优先级
SysTick应用
1.编写一个us延时的函数
2.编写一个ms延时的函数
SysTick.c
#include "stm32f10x.h" // Device header
#include "SysTick.h"
void ms_delay(uint32_t ms)
{
uint32_t i;
SysTick_Config(72000);
for(i=0;i<ms;i++)
{
while( !( (SysTick->CTRL) &(1<<16) ) );
}
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}
void us_delay(uint32_t us)
{
uint32_t i;
SysTick_Config(72);
for(i=0;i<us;i++)
{
while( !( (SysTick->CTRL) &(1<<16) ) );
}
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}
SysTick.h
#include "stm32f10x.h"
void ms_delay(uint32_t ms);
void us_delay(uint32_t us);
main.c
#include "stm32f10x.h" // Device header
#include "usart.h"
#include "led.h"
#include "tim.h"
#include "motor.h"
#include "SysTick.h"
void delay(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i=12000;
while(i--);
}
}
int main(void)
{
LED_Init();
GPIO_SetBits( GPIOC, GPIO_Pin_13);
while(1)
{
GPIO_ResetBits( GPIOC, GPIO_Pin_13);
ms_delay(500);
GPIO_SetBits( GPIOC, GPIO_Pin_13);
ms_delay(500);
}
}