其他分享
首页 > 其他分享> > 2021/10/13 智能家具 嵌入式实训 第三天 编写Systick代码 (5)

2021/10/13 智能家具 嵌入式实训 第三天 编写Systick代码 (5)

作者:互联网

先写Systick.h

extern关键字 用法

#ifndef _SYSTICK_H_
#define _SYSTICK_H_

#include "stm32f10x.h"

extern uint32_t TASK_Test[2];

uint8_t Systick_Config(uint32_t load);
void Delay_Sys_nms(uint8_t time);

#endif

定义一个外部变量 

TASK_Test【2】 uint32_t 型号 定义使能函数 和delay函数

 

再写Systick.c

#include "Systick.h"

uint32_t SYS_Run_Time = 0;    //记录系统运行时间
uint32_t TASK_Test[2] = {0,2000}; //0-2000ms
/***********************************************************************************
函数功能: 滴答定时器初始化
形参:load -- 重装载值
返回值:无
***********************************************************************************/
uint8_t Systick_Config(uint32_t load)
{
    if(SysTick_Config(load))  //如果重载
    return 1;    
}
void SysTick_Handler(void)  //计数
{
    SYS_Run_Time++;
    TASK_Test[0]++;
}
/***********************************************************************************
函数功能: 滴答定时器函数接口
72000/72000000
***********************************************************************************/
/*
* 时间片轮法
*/
void Delay_Sys_nms(uint8_t time)
{
    uint32_t Time_end =0;
    Time_end = SYS_Run_Time + time;   //结束时间=运行时间+延迟的时间
    while(SYS_Run_Time <= Time_end); //直到 运行时间<=结束时间
}

 

最后main

#include "main.h"

int main(void)
{

    LED_Config(ON); 
    Beep_Config(OFF);  //刚开始关闭
    KEY_Config();
    Systick_Config(72000);
    while(1)
    {       
        // 时间片任务 
        if(TASK_Test[0]>=TASK_Test[1])
        {
            BEEP_TOGGLE;
            TASK_Test[0]=0;
        }
        LED_Breath(); //呼吸灯
        if(KEY_GetVal()==1) //led1
            BEEP_TOGGLE;//BEEP翻转 相当于开
        
    }
}

 

#include "main.h"

int main(void)
{

    LED_Config(OFF); 
    Beep_Config(OFF);  //刚开始关闭
    KEY_Config();
    Systick_Config(72000);
    while(1)
    {       
        // 时间片任务 
        if(TASK_Test[0]>=TASK_Test[1])
        {
            LED_Breath(); //呼吸灯
            TASK_Test[0]=0;
        }
        
        //LED_Twinkle(); //闪烁灯
        //Beep_Twinkle();//蜂鸣器间断响
//        if(KEY_GetVal()==1) //led1
//            BEEP_TOGGLE;//BEEP翻转 相当于开
        
    }
}

 

源代码:https://wwa.lanzoui.com/iXvavvd5dna

 

 

标签:10,13,TASK,void,Systick,Test,Config,uint32
来源: https://www.cnblogs.com/halfup/p/15410239.html