• 呼吸灯


    void Breathe_LED(void);


    // 定时器4中断(1ms)
    #pragma vector = TIM4_UIF_vector
    __interrupt void TIM4_OVF_IRQHandler(void)
    {

    if( ++sG_CurTime.ms>=1000 )
    {
    sG_CurTime.ms = 0;

    sG_CurTime.secFlag = 0xFF;

    sG_CurTime.second++;

    if (sG_CurTime.second >= 60)
    {
    sG_CurTime.second -= 60;
    }
    }
    Breathe_LED();

    TIM4_SR1 = 0xFE; 
    }

    void Breathe_LED(void) 
    {

    static u16 X = 1000;    
    u8 cnt = 8;

    // 对3取余:结果只能是0 1 2 
    if((sG_CurTime.second %3) != 0)
    {
    if( (sG_CurTime.second % 3 ) & 0x1 == 1)   // Z和0x00000001与,是1,也就是说Z的最低位是1,当前是奇数秒。
    {

    X--;              // PWM值递减

    TIM3_CCR1H = ((X/cnt) & 0xFF00 )>>8; 

    TIM3_CCR1L = (X/cnt) & 0xFF;
    // 小技巧:把这里的PWM递减值,分为1000/8 = 125个档位区间.这里X=1000与X= 999,最终对应板子输出的PWM值是一样的


    TIM2_CCR1H = ((X/cnt) & 0xFF00 )>>8;
    TIM2_CCR1L = (X/cnt) & 0xFF;

    TIM2_CCR2H = ((X/cnt) & 0xFF00 )>>8;
    TIM2_CCR2L = (X/cnt) & 0xFF;

    }
    else if( (sG_CurTime.second % 3 ) & 0x1 == 0) // 只要Z是偶数,都满足Z&0x00000001 =0。但是这里还有一个前提条件,Z不是3的整数倍。
    {
    TIM3_CCR1H = 0x00;
    TIM3_CCR1L = 0x00;

    TIM2_CCR1H = 0x00;
    TIM2_CCR1L = 0x00;

    TIM2_CCR2H = 0x00;
    TIM2_CCR2L = 0x00;
    }

    }
    else{  // Z是3的整数倍,跳到这里。

    TIM3_CCR1H = ( (sG_CurTime.ms/cnt) & 0xFF00)>>8;
    TIM3_CCR1L = (sG_CurTime.ms/cnt) & 0xFF;

    TIM2_CCR1H = ( (sG_CurTime.ms/cnt) & 0xFF00)>>8;
    TIM2_CCR1L = (sG_CurTime.ms/cnt) & 0xFF;

    TIM2_CCR2H = ( (sG_CurTime.ms/cnt) & 0xFF00)>>8;
    TIM2_CCR2L = (sG_CurTime.ms/cnt) & 0xFF;
    X = 1000; // 在奇数秒内 重复执行了 这里的代码,执行1000遍。 待会使用状态机, 脱离 奇数秒, 执行一遍即可。
    }

    }

    这里实现的一个逻辑功能可以归纳为:

    对于一个整数Z,可以用一个整数Y对Z取余(余数为0是一种状态),得到0到Y-1, 然后可以在0到Y-1之间按照偶数奇数来进行区分(Z对Y的余数不为0,再把Z细分为奇数和偶数)。这样就可以得到三种状态。

    Wireless_Sysnc_Spicke    _XXX_BDWY_YYY

    /************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
  • 相关阅读:
    js 控制页面跳转的5种方法
    js外部文件问题
    JS设置cookie,删除cookie
    JS中的输出
    转:这些年我们爱犯的弱智错误(菜鸟必看)
    JS 代码调试经验总结(菜鸟必读)
    js中err
    不理解,如果有高手看到了,请帮忙解答,谢谢啦~
    window对象和全局变量,局部变量的疑问
    看script中函数的各种不同形式的结果
  • 原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/10329876.html
Copyright © 2020-2023  润新知