1 Star 2 Fork 0

wangjiewen / STM32基础代码

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
bsp_systick.c 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
wangjiewen 提交于 2020-10-22 10:12 . first commit
/*
* @Author: your name
* @Date: 2020-05-27 20:55:28
* @LastEditTime: 2020-08-18 22:38:03
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \BF-103\bsp_systick.c
*/
#include "bsp_systick.h"
static __IO uint32_t g_runtime; //全局事件,每 1ms自增加1
static __IO int32_t TimingDelay;
static struct
{
Timer soft_timer[SOFT_TMR_COUNT];
uint8_t write;
uint8_t read;
}SoftTimerPool =
{
.write = 0,
.read = 0
};
void TimerDecrease()
{
for(int i = 0; i < SOFT_TMR_COUNT; i++)
{
if(CheckTimer(&SoftTimerPool.soft_timer[i]))
{
SoftTimerPool.soft_timer[i].timer_event();
if(SoftTimerPool.soft_timer[i].Mode == Auto)
SoftTimerPool.soft_timer[i].count = SoftTimerPool.soft_timer[i].Preload;
}
}
}
void StartOnceTimer(Timer * timer,uint32_t period,void * timercall)
{
timer->Mode = Once;
timer->Preload = period; //自动重装值,仅自动模式有效
timer->Flag = 0;
timer->count = period;
timer->timer_event = (void (*)(void))timercall;
}
void StartAutoTimer(Timer * timer,uint32_t period,void * timercall)
{
timer->Mode = Auto;
timer->Preload = period;
timer->Flag = 0;
timer->count = period;
timer->timer_event = (void (*)(void))timercall;
}
uint8_t CheckTimer(Timer * timer)
{
if(--timer->count == 0)
{
timer->Flag = 1;
return 1;
}
else
{
return 0;
}
}
//初始化延迟函数
//SYSTICK的时钟固定为AHB时钟的1/8
//SYSCLK:系统时钟频率
//配置中断时间为1ms
void SysTick_Init()
{
if(SysTick_Config(SystemCoreClock / 1000))
{
while(1);
}
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}
void delay_ms(u16 nms)
{
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
TimingDelay = nms;
while(TimingDelay != 0);
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}
void TimeDecrease()
{
if(TimingDelay != 0)
TimingDelay--;
}
void AddTimerToPool(Timer * timer)
{
if(SoftTimerPool.write > SOFT_TMR_COUNT)
SoftTimerPool.write = 0;
SoftTimerPool.soft_timer[SoftTimerPool.write] = *timer;
}
int test_getWirte()
{
return SoftTimerPool.write;
}
C
1
https://gitee.com/wangmimo/stm32-basic-code.git
git@gitee.com:wangmimo/stm32-basic-code.git
wangmimo
stm32-basic-code
STM32基础代码
master

搜索帮助