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

作者: fengye5340
上传时间为: 2014-12-29 09:12 AM
2014-12-29
阅读:

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

工程文件内容截图:

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

定时器TIMER_Init()函数的实现

因为要控制LED灯闪烁,这里初始频率设置为2HZ,最大为50HZ。

代码中,先打开定时器0的时钟,然后设置为计数模式,写入定时频率值,然后设置中断优先级,并打开定时中断,启动定时器。当中断时间到后,进入定时器中断复位函数,代码如下:

清零中断标准,然后让PC17控制的LED灯闪烁!

如果要通过按键来改变定时频率,这里要实现一个中断按键。

KEY_Init()代码实现如下:

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

当有按键按下时,先停止定时器,然后让频率值自增8HZ,最高不超过50HZ,然后重新打开定时器。

这里用到了定时器初始化,仅调用tc_start(TC0, 0);也是可行的。

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示