STM8L151系列 使用定时器计时,全局滴答器jiffes

发布者:暗里著迷最新更新时间:2020-02-24 来源: eefocus关键字:STM8L151系列  定时器计时  滴答器 手机看文章 扫描二维码
随时随地手机看文章

IAR软件,使用官方halt库


u32 g_counter = 0;      // 全局, jiffes 滴答时钟,时间计时器;

INTERRUPT_HANDLER(TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQHandler,21)// 计数器; 50ms 中断一次

{

//    disableInterrupts();    g_counter ++;

   TIM3_ClearITPendingBit(TIM3_IT_Update);

//    enableInterrupts();

}

 


#define  time_after(unknown,known)        ((long)(known) - (long)(unknown) < 0)

#define  time_before(unkonwn,known)       ((long)(unknown) - (long)(known) < 0)

#define  time_after_eq(unknown,known)     ((long)(unknown) - (long)(known) >= 0) //- - -

#define  time_before_eq(unknown,known)    ((long)(known) -(long)(unknown) >= 0)


extern u8 time3_has_start;

void SYS16M_time3_start(void)  

{

    //时钟配置

    CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE);


    //64分频,向上计数,每50ms定时中断一次

    TIM3_DeInit();

    TIM3_TimeBaseInit(TIM3_Prescaler_128, TIM3_CounterMode_Up, 6250); // 16M / 128 = 1/8M; (1/8M) / (1/50ms) = 6250

    TIM3_ARRPreloadConfig(ENABLE);

    TIM3_ITConfig(TIM3_IT_Update, ENABLE);

    TIM3_Cmd(ENABLE);


    time3_has_start = 1;

}


 


void SYS16M_time3_stop(void)  

{

    TIM3_Cmd(DISABLE);

    CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE);


    time3_has_start = 0;


}


u32 red_led_flash_time = 0;


void xxx_function(void)

{

    red_led_flash_time = 0;


    if(blue_led_flash_time == 0)

        blue_led_flash_time = g_counter;


    if(time_after(g_counter, blue_led_flash_time + ONE_SECOND))

        blue_led_on;

    else if(time_after(g_counter, blue_led_flash_time + TWO_SECOND))

        blue_led_off;

}


关键字:STM8L151系列  定时器计时  滴答器 引用地址:STM8L151系列 使用定时器计时,全局滴答器jiffes

上一篇:stm8s开发(三) UART的使用:串口通信
下一篇:STM8L151 DAC

推荐阅读最新更新时间:2024-11-08 21:37

STM8L151系列单片机PWM配置时注意事项
使用STM8开发环境:IAR for STM8 用TIM1_CH3输出PWM波,输出引脚是PD5 使用的单片机STM8L151 对于STM8L,默认时钟源是关闭的,需要先打开才能配置寄存器 void Time1_Init(void) { CLK_PeripheralClockConfig(CLK_Peripheral_TIM1,ENABLE);//开启TIM1时钟 TIM1_DeInit(); TIM1_TimeBaseInit(1599,TIM1_CounterMode_Up,2000,0); //分频1600,向上计数,TIM1_ARR=20000,重复计数器为0 TIM1_OC3Init(TIM1_OCM
[单片机]
STM32 SysTick---系统滴答定时器
简介: Systick也叫系统滴答定时器,滴答定时器就是一个非常基本的倒计时定时器。它存在的意义是为系统提供一个时基,能够给操作系统提供一个硬件上的中断。使用Systick能够精准延时,对于时间要求严格的场所,意义十分重大,我将写一个流水灯改进版----精确延时(可调控)的流水灯。 Systick timer Systick是一个24位的定时器,一次最多可以计数2^24个时钟脉冲,这个脉冲计数值保存在当前计数值寄存器STK_VAL(Systick current value register)中,只能向下计数,每接收到一个时钟脉冲,STK_VAL的值就会向下减1,当减到0时,硬件会自动把重装载寄存器STK_LOAD(Sys
[单片机]
STM32 SysTick---系统<font color='red'>滴答</font><font color='red'>定时器</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved