打印
[PIC®/AVR®/dsPIC®产品]

【Curiosity Nano测评报告】定时器控制LED的实验

[复制链接]
18077|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hu9jj|  楼主 | 2024-9-16 15:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创#
    利用Delay延时函数来控制LED灯的闪烁非常耗费MCU的运行,在延时中单片机无法处理其他事情,因此除了测试外,通常很少用单纯的延时函数来控制LED,而是将这项任务交给定时器来完成。
    本次实验启用的是单片机中的Tim2,这是8位的定时器,经过分频处理后最大的定时时间约为0.04秒,本次设置其定时0.01秒。实验的方法是先设置一个全局变量Space,这个变量可以通过按键按照每次增加一倍的方式改变值,然后在定时器中对另一个变量进行计数并与全局变量Space比较,当其大于Space时,翻转LED引脚的电平并从0开始计数。下面是实验的过程:
    首先进行MCC,选定Tim2并进行设置:

    不得不说MCC中配置定时器的界面非常人性化,选择好预分频和后分频,得到需要的定时范围后,只要将需要定时的时间输入到里面就行,不用另外计算(见下图):

    定时时间设置好之后,不要忘记开启中断。可界面上的开关是灰色的,点击无效。原来中断的设置统一归属到中断管理界面(见下图),开启定时器中断后,通过点击窗口首列的箭头,将定时器中断级别设置好:

    此时再返回到定时器设置界面,定时器中断显示开启(如下图):

    退出MCC,在定时器中断处理函数中添加相应的代码,尝试编译时报错:

    看来需要添加对应的头文件,将main.c文件中包含的头文件复制过来,编译时报错找不到头文件,应该是路径不一致。

    好在包含文件设置时会跳出一个选择窗口,可以直接通过这个窗口逐级目录去查找头文件:

    查找到了所需的头文件:

    再次编译,正常完成:

    这是定时器中断处理代码(图中蓝色选定部分为添加的代码):

    这是主循环中的按键处理代码:

    下面是实验过程中串口助手接收到的信息:

    定时器的实验过程告一段落。

使用特权

评论回复
沙发
呐咯密密| | 2024-9-18 16:13 | 只看该作者
用一个GPIO输出高低电平感觉更直观

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:Microchip
简介:让我们来为您提供帮助。我们可提供各种资源来帮助您解决一切问题。是否需要与我们的客户支持团队联系?您可以通过电话、在线聊天功能或电子邮件与他们联系。

151

主题

1059

帖子

11

粉丝