【LPC800 系列】SCT 的配置及使用

关键字 :NXPLPC800SCT

【LPC800 系列】SCT 的配置及使用

本文将介绍 NXP 的专利外设模块 SCTimer ,主要是介绍其比引脚中断响应时间还快的用法。

  • LPC800 SCT 简介

LPC800 系列的 SCT 外设模块其主要特点就是它在定时器中加入了状态机,使得其功能更加灵活,可以适应很多场景的需求,实现复杂的功能。关于 SCT 的基本介绍请参考公众号——单片大师中的以篇博文:“《说好不哭》,当我错过 SCT 真的哭了”,链接如下:https://mp.weixin.qq.com/s/oxjwQ5FChVS-DhKii094Hw

这篇博文对 SCT 的使用及基本用法介绍的很详细,这里就不再重复介绍。

废话不多说,接下来就进入码代码的环节。

 

  • 实战演练

接下来我们将做两个实验:第一,引脚中断响应时间测试;第二,SCT 引脚响应时间测试。两个实验都使用 LPCXpresso845MAX EVK 做测试。

 

测试方法:按键 SW2 作为触发中断源,产生中断后翻转 LED3 电平状态,示波器两个探头分别连接这两个引脚,通过示波器波形来获得该段时间。

 

 

  • 引脚中断程序设计

 

 

 

打开 SDK 中的 引脚中断例程,路径如下:

SDK_2.6.0_LPCXpresso845MAX\boards\lpcxpresso845max\driver_examples\pint\pin_interrupt\mdk

为了测试的更准确,我们将其余不需要的部分都去掉,只留下引脚中断的相关配置,并添加如下图所示:

然后将例程中的中断回调函数直接更改为中断服务函数,这样可以省去回调的时间,如下图所示:

 

可以看到中断服务函数里直接操作寄存器先使 IO 口翻转,再清除中断标志位,这会使得响应时间更快。

将代码编译下载到板子上之后,LED3 亮,按下按键 SW2 可以看到 LED3 熄灭,再次按下 SW2   LED3 亮。

 

 

  • SCT 引脚响应程序设计

打开 SDK 中的 SCT 例程,路径如下: SDK_2.6.0_LPCXpresso845MAX\boards\lpcxpresso845max\driver_examples\sctimer\16bit_counter\mdk

修改 Main 函数,如下图所示:

首先定义一些需要用的结构体,进行时钟初始化:

 

然后通过开关矩阵将 SCT 的输入和输出的引脚连接到 SW2 和 LED3 ,并初始化 SCTimer:

 

最后设置输入触发条件为下降沿触发,创建一个事件对应输入 INPUT0 ,设置事件发生后翻转输出 OUTPUT0 状态,使能 SCT。



将程序编译下载到板子上后,LED3 亮,按下 SW2 后 LED3 熄灭,再次按下 SW2 后 LED3 亮。

 

 

  • 测试结果

接下来就测试下两种方法哪种响应时间更快,手上没有示波器的话也可以用逻辑分析仪抓取波形。

  • 中断响应

可以看到在主频最高 30 MHz 的情况下是需要 2us 的时间的

 

  • SCT 响应

 

测量时间为 0.25us ,比中断响应快了很多。

需要响应时间快的可以使用 SCT 。

 

 

参考资料:

  1. 《LPC84X User Manual》

用户手册包含了外设配置方法,由 NXP 官网提供下载,链接如下:

https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc800-cortex-m0-plus-/low-cost-microcontrollers-mcus-based-on-arm-cortex-m0-plus-cores:LPC84X?fpsp=1&tab=Documentation_Tab

  1. LPC845 官方 SDK 包

SDK 包里包含了许多例程,由 NXP 官网提供下载,链接如下:

https://mcuxpresso.nxp.com/en/select

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论