【蓝桥杯】SysTick来实现延时函数

毫秒函数函数

stm32f10x_it.c

u32 delaytime;
void delay_ms(u32 time)
{
	delaytime=time;
	while(delaytime!=0);
}
...
void SysTick_Handler(void)
{
	delaytime--;
}

直接在stm32f10x_it.c文件中写上述代码,SysTick_Handler()的空函数在stm32f10x_it.c文件底部

【蓝桥杯】SysTick来实现延时函数_第1张图片
【蓝桥杯】SysTick来实现延时函数_第2张图片

更改SysTick_Config

因为之后要用到我们的延时函数来打断外部中断对按键进行消抖,所以要更改SysTick_Config的中断优先级。

然而SysTick_Config()函数在内核文件"core_cm3.h"中:
【蓝桥杯】SysTick来实现延时函数_第3张图片
比赛规定内核文件是不允许被修改的,我们直接把这个函数复制出来放到main.c中,重新命名为"SysTick_Config1()"

将这一行代码:

 NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);

修改为:

NVIC_SetPriority (SysTick_IRQn, 1);

复制粘贴和修改后main.c里的SysTick_Config1()

你可能感兴趣的:(蓝桥杯)