用GD32F103简单写了个渐明渐暗LED

[复制链接]
 楼主| wlzeagle 发表于 2014-1-7 23:23 | 显示全部楼层 |阅读模式
基于GD32 Hello-M3   MDK-ARM 4.73
代码如下:

/**********************************************************
* @brief  设置nus中断
*
* @param   nus   多少us后发生中断
*
* @return  NONE
*********************************************************/            
void    Set_SysTick_Nus_it(u32 nus)
{
    SysTick->CTRL &= ~B_U32_BIT0 ;      //禁止
    SysTick->CTRL &= ~B_U32_BIT2 ;      // 选择外部时钟
    SysTick->LOAD = nus*9-12 ;            //-12是因为有12个时钟周期的延时
    SysTick->VAL = 0 ;
    SysTick->CTRL |= (B_U32_BIT0 + B_U32_BIT1) ;      //使能定时+中断
}


LED_FIFO.rar (138.38 KB, 下载次数: 39) https://bbs.21ic.com/forum.php?mod=attachment&aid=MjM3MjQ0fDEwNGMxNjdkfDE3NTU5OTc5NDd8MHw%3D




https://bbs.21ic.com/forum.php?mod=attachment&aid=MjM3MjQ0fDEwNGMxNjdkfDE3NTU5OTc5NDd8MHw%3D://237244.rarhttps://bbs.21ic.com/forum.php?mod=attachment&aid=MjM3MjQ0fDEwNGMxNjdkfDE3NTU5OTc5NDd8MHw%3D
void    led_fifo_app(void)
{
    if(++systick_int_times >= 200)
    {
        systick_int_times = 0 ;
        if(led_fifo_dir == 0)
        {
            if(++led_fifo_dutycycle >= 200)  
            {
                led_fifo_dir = 255 ;
            }
        }
        else
        {
            if(--led_fifo_dutycycle == 0)
            {
                led_fifo_dir = 0 ;
            }

        }
        led_fifo_duty_value = led_fifo_dutycycle ;  // 改变占空比
    }

    if(led_fifo_duty_value > 0)
    {
        led_fifo_duty_value-- ;
        PAOUT(8) = 0 ;              // 打开 LED
        PDOUT(2) = 0 ;     
    }
    else
    {
        PAOUT(8) = 1 ;              // 关闭 LED
        PDOUT(2) = 1 ;  
    }

} 完整工程







luoxiaobing 发表于 2014-1-11 21:44 | 显示全部楼层
挺简单的,不过能够点亮一个LED对于好多应用就足够了,因为我有模拟的总线程序
zhengxingzu 发表于 2014-1-19 19:51 | 显示全部楼层
赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

266

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

10

主题

266

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部