实验介绍
systick是一个24位的自动重装定时器
用systick做一个Delay,每隔500ms两个led交替闪烁
实验效果
500ms led
实验代码
建立两个文件,便于调用
c文件代码如下
#include "stm32f10x.h" // Device header
static __IO u32 TimingDelay;
void SysTick_Init(void)
{
/* SystemFrequency / 1000 1ms进中断
* SystemFrequency / 100000 10us进中断
* SystemFrequency / 1000000 1us进中断
*/
if (SysTick_Config(SystemCoreClock / 1000000 ))
{
/* Capture error */
while (1);
}
/* 关闭滴答定时器,需要时再开启 */
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
void Delay_us(__IO u32 nTime) //微秒延时
{
TimingDelay = nTime;
/* 开启定时器 */
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(TimingDelay != 0);
/* 关定时器*/
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
void Delay_ms(__IO u32 xms) //毫秒延时
{
while(xms--){Delay_us(1000);}
}
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
还需在it文件下的中断函数添加中断次数的递减函数
实验结果
非常成功