📄 systick.c
字号:
#include "stm32f10x.h"
#include <stdio.h>
#include "button.h"
#include "systick.h"
#include "adc.h"
#define TMR_COUNT 4 /* 软件定时器的个数 */
SOFT_TMR g_Tmr[TMR_COUNT];
static void SoftTimerDec(SOFT_TMR *_tmr)
{
if (_tmr->flag == 0)
{
if (_tmr->count > 0)
{
if (--_tmr->count == 0)
{
_tmr->flag = 1;
}
}
}
}
void SysTick_ISR(void)
{
uint8_t i;
static uint8_t s_count = 0;
for (i = 0; i < TMR_COUNT; i++)
{
SoftTimerDec(&g_Tmr[i]);
}
if (++s_count >= 10)
{
s_count = 0;
KeyPro(); /* 该函数在 button.c 中实现 */
AdcPro();
}
}
void DelayMS(uint32_t n)
{
/* 避免 n = 1 出现主程序死锁 */
if (n == 1)
{
n = 2;
}
g_Tmr[0].count = n;
g_Tmr[0].flag = 0;
/* while 循环体最好让CPU进入IDLE状态,已降低功耗 */
while (1)
{
CPU_IDLE();
if (g_Tmr[0].flag == 1)
{
break;
}
}
}
/*******************************************************************************
函数名:StartTimer
输 入: 定时器ID (0 - 3)
输 出:
功能说明:
*/
void StartTimer(uint8_t _id, uint32_t _period)
{
if (_id >= TMR_COUNT)
{
return;
}
g_Tmr[_id].count = _period;
g_Tmr[_id].flag = 0;
}
/*******************************************************************************
函数名:StartTimer
输 入: 定时器ID (0 - 3)
输 出: 返回 0 表示定时未到, 1表示定时到
功能说明:
*/
uint8_t CheckTimer(uint8_t _id)
{
if (_id >= TMR_COUNT)
{
return 0;
}
return g_Tmr[_id].flag;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -