查看: 1921|回复: 0

SAM4S XPLAINED上利用按键控制LED灯闪烁频率(采用定时器TC0实现)

[复制链接]
  • TA的每日心情
    开心
    2018-9-18 06:28
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-12-29 09:12:21 | 显示全部楼层 |阅读模式
    分享到:
    这次在上次发布的工程模板上发挥了一下定时器TC0的功能。让它给LED灯(PC17)进行延时控制,通过按键中断来实现对定时器TC0的频率的修改,以达到用户按键控制LED灯闪烁快慢的目的。
                  SAM4S16C 的定时器资源比较丰富,使用也比较简单,这里仅用来进行了定时实现,至于PWM,脉冲产生、频率测量、事件计数等功能实现起来类似。下面是代码的详细实现过程:
    工程文件内容截图:

    在driver文件夹里面实现了按键和定时器的驱动文件,先看定时器驱动。
    定时器TIMER_Init()函数的实现

    因为要控制LED灯闪烁,这里初始频率设置为2HZ,最大为50HZ。
    代码中,先打开定时器0的时钟,然后设置为计数模式,写入定时频率值,然后设置中断优先级,并打开定时中断,启动定时器。当中断时间到后,进入定时器中断复位函数,代码如下:

    清零中断标准,然后让PC17控制的LED灯闪烁!
    如果要通过按键来改变定时频率,这里要实现一个中断按键。
    KEY_Init()代码实现如下:

    在按键中断复位函数里面做如下处理:

    当有按键按下时,先停止定时器,然后让频率值自增8HZ,最高不超过50HZ,然后重新打开定时器。
    这里用到了定时器初始化,仅调用tc_start(TC0, 0);也是可行的。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 14:22 , Processed in 0.119598 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.