打印

stm32 systick 软件定时器函数使用

[复制链接]
357|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
社畜一枚|  楼主 | 2019-11-24 08:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,
stm32 systick 软件定时器有几个函数,大家交流下,怎么使用,thanks
/*
*********************************************************************************************************
*        函 数 名: StartTimer
*        功能说明: 启动一个定时器,并设置定时周期。
*        形    参:        _id     : 定时器ID,值域【1,TMR_COUNT-1】。用户必须自行维护定时器ID,以避免定时器ID冲突。
*                                                  定时器ID = 0 已用于DelayMS()函数
*                                _period : 定时周期,单位10us
*        返 回 值: 无
*********************************************************************************************************
*/
void StartTimer(uint8_t _id, volatile uint32_t _period)
{
        if (_id >= TMR_COUNT)
        {
                /* while(1); 死机 */
                return;
        }

//        __set_PRIMASK(1);                  /* 关中断 */
        g_Tmr[_id].count = _period;
        g_Tmr[_id].flag = 0;
//        __set_PRIMASK(0);                  /* 开中断 */
        

}

/*
*********************************************************************************************************
*        函 数 名: CheckTimer
*        功能说明: 检测定时器是否超时
*        形    参:        _id     : 定时器ID,值域【1,TMR_COUNT-1】。用户必须自行维护定时器ID,以避免定时器ID冲突。
*                                                  0 用于
*                                _period : 定时周期,单位10us
*        返 回 值: 返回 0 表示定时未到, 1表示定时到
*********************************************************************************************************
*/
uint8_t CheckTimer(uint8_t _id)
{
        if (_id >= TMR_COUNT)
        {
                return 0;
        }

        if (g_Tmr[_id].flag == 1)
        {
                g_Tmr[_id].flag = 0;
                return 1;
        }
        else
        {
                return 0;
        }
        
//        return g_Tmr[_id].flag;
}

请大侠指点,多谢

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

397

主题

401

帖子

0

粉丝