RTT主要用做一个全局的定时器,而且不太通用。现在尝试使用一个更为通用的定时器进行定时:定时计数器(Timer Counter, TC)。
TC提供了广泛的功能,主要可以分为对输入的测量,以及波形的输出。同样,它可以产生一系列的中断。这一次将使TC以一个固定的周期产生中断,以达到定时的目的。
一、 TC配置
1. 在PMC中使能TC时钟。
2. 时钟选择。
TC的每个通道内部都有一个32位的计数器。可以为这个计数器选择一个时钟,使其以固定频率步进。为使LED的闪烁频率较低,需要选择较小的时钟周期。
3. 波形及中断选择。
当TC工作在波形输出模式下时,可以为输出选择若干种波形。在这里,不需要关心具体的波形,而是要关注每个波形模式下,计数器的工作方式,以及产生中断的时机。
选择的波形如下:
在当计数器的值和RC寄存器里的值相等时,会产生一个触发,使计数器重置,并重新开始计数。
在输出模式下,可以选择在计数器的值在与RA、RB、和(或)RC相等时,产生中断。这里选择与RC值相同时中断。
4. 使能通道。
首先需要使能(enable)通道时钟,并且需要启动(start)这个时钟。可以通过访问TC_CCR寄存器使能时钟,同时可以产生一个软触发,以启动时钟。
5. NVIC中使能中断。
该部分相关代码如下,使用的通道是TC0的通道0,计时器频率为MCK/128,RC值为31250,即每一秒产生一次中断。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #define gUseTc TC0->TC_CHANNEL[0] void ConfigTC(void) { PMC->PMC_PCER0 = (1 << ID_TC0); gUseTc.TC_CMR = TC_CMR_WAVE /* 波形模式 */ | TC_CMR_TCCLKS_TIMER_CLOCK4 /* 时钟4: MCK/128 */ | TC_CMR_WAVSEL_UP_RC; /* 波形,仅上升,且RC比较时自动触发 */ ; /* 设置 RC */ gUseTc.TC_RC = TC_RC_RC(31250); /* RC 比较时产生中断 */ gUseTc.TC_IER = TC_IER_CPCS; /* 使能TC时钟 */ gUseTc.TC_CCR = TC_CCR_CLKEN | TC_CCR_SWTRG; /* NVIC */ NVIC_DisableIRQ(TC0_IRQn); NVIC_ClearPendingIRQ(TC0_IRQn); NVIC_SetPriority(TC0_IRQn, 1); NVIC_EnableIRQ(TC0_IRQn); } |
二、 TC中断服务函数
仅需改变LED引脚的电平即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | void TC0_Handler(void) { uint32_t status = gUseTc.TC_SR; /* 判断中断是否为RC比较触发的 */ if (status & TC_SR_CPCS) { if ((LED_PIOC->PIO_ODSR & LED_PIO)) { LED_PIOC->PIO_CODR = LED_PIO; } else { LED_PIOC->PIO_SODR = LED_PIO; } } } |
关键字:SAM4E 单片机 LED闪烁 TC中断
引用地址:
SAM4E单片机之旅——7、LED闪烁之TC中断
推荐阅读最新更新时间:2024-03-16 15:29
MCS-51单片机中断处理过程
中断响应: 1.响应条件 CPU响应中断的条件有: ①有中断源发出中断请求; ②中断总允许位EA=1,即CPU开中断; ③申请中断的中断源的中断允许位为1; 满足以上条件,CPU响应中断;如果中断受阻,CPU不会响应中断。 2.响应过程 单片机一旦响应中断,首先置位响应的优先级触发器,然后执行一个硬件子程序调用,把断点地址压入堆栈保护,然后将对应的中断入口地址装入程序计数器PC,使程序转向该中断入口地址,以执行中断服务程序。 中断处理:CPU响应中断结束后即转至中断服务程序的入口。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或称中断服务。中断处理包括两部分内容:一是保护现场,
[单片机]
物联网需求强劲,MCU明年持续供不应求
近日,欧洲半导体巨头NXP公司对其代理商发出了涨价通知。通知称,将从2018年第一季度开始对NXP旗下MCU(微控制器)、数字化网络、汽车微控制器等主要产品上调价格。涨价幅度在5%—10%不等,这标志着半导体巨头打响了2018年MUC芯片涨价的第一枪。 目前其他同行暂处于观望中,不过有分析称,ST意法半导体有可能跟进调涨。据媒体报道,由于汽车电子及物联网市场对MCU需求十分强劲,导致MCU供应短缺,价格持续暴涨。不少MCU厂商产品交期都从4个月延长至6个月,日本MCU厂商更是拉长至9个月。 MCU因其高性能、低功耗、可编程、灵活性等优点,在消费电子、汽车电子、物联网等领域有着十分广阔的应用前景。机构预计,到2020
[嵌入式]
单片机学习笔记嵌入式介绍
嵌入式技术体系 一、 模拟电路 (电容电感电阻 二极管三极管 基本放大电路 ) 数字电路 (逻辑运算) 计算机基本原理 (计算机运行原理) 基本编程 (主要是C语言,了解汇编) 二、51单片机 (基础单片机,资源多,流行时间长) AVR单片机 PIC单片机 MSP430单片机 (三种中型单片机 资源也很丰富 速度比51快) 三、ARM7+OS (入门级别ARM) NXP和三星(44B0)的用来跑操作系统 DSP (TI公司2000系列 例如2812 2407) 类似ARM 多用于做
[单片机]
51单片机之数码管静态显示
在对单片机编程以实现数码管静态显示数字之前,我们先来了解一下数码管的结构以及一些常识,对于数码管,有称八段数码管的,也有称七段数码管的,其实无非就是多在一个小数点h , 如上图所示,我们就拿带小数点的八段数码管来说 ,其实我们没必要说对数码管很陌生,因为数码管无非就是八块发光二极管集成在了一起,另外数码管有共阴极和共阳极数码管之分,说起共阴,共阳,大家可能会有所陌生,这里我们简单介绍一下: 共阴极数码管:将八只发光二极管的负极通过一根总线连接在了一起 , 然后每只二极管的正极被引了出来,通过二极管的单向导通性可知,当对应数码管的二极管段接入高电平时,二极管点亮。(换句话说,也就是说想让哪一只二极管点亮,就给哪只二极管高电平。下
[单片机]
c51单片机编程要点总结
c51单片机编程要点总结 1、头文件:#include (我用的是 STC 89C54RD+) 2、预定义:sbit LED = P1^0// 定义 P1 口的 0 位为 LED 注:“P1^0”这个写法,与 A51 不同(A51 是 P1.0),P1 是一组端口,端口号范围 0~7 注2:sbit 用于定义 SFR(特殊功能寄存器)的位变量,上例中 LED 作为“全局变量”进行定义 注3:以下写法是错误的: sbit code table = {P1^0, P1^1, P1^2, P1^3};// 想用 table 指定不同的引脚,但这么做会报错 sbit table = {P1^0, P1^1, P1^2, P1^3}
[单片机]
关于AVR单片机,你了解多少?
什么是AVR单片机?AVR单片机有什么优点?为什么要选择AVR单片机? AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点: 1:在相同的系统时钟下AVR运行速度最快; 2: 芯片内部的Flsah、EEPROM、SRAM容量较大; 3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP); 4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作; 5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强; 6:内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、
[单片机]
单片机上电复位时间
单片机及其应用电路每次上电的过程中,由于电源回路中通常存在一些容量大小不等的滤波电容,使得单片机芯片在其电源引脚VCC和VSS之间所感受到的电源电压值VDD,是从低到高逐渐上升的。该过程所持续的时间一般为1~100 ms(记作taddrise)。上电延时taddrise的定义是电源电压从10% VDD上升到90% VDD所需的时间.在单片机电源电压上升到适合内部振荡电路运行的范围并且稳定下来之后,时钟振荡器开始了启动过程(具体包括偏置、起振、锁定和稳定几个过程)。该过程所持续的时间一般为1~50 ms(记作tosc)。起振延时tosc的定义是时钟振荡器输出信号的高电平达到Vih1所需的时间。从图1所示的实际测量图中也可以看得很清楚
[单片机]
STM32的一些基本知识总结
Cortex-M3缩略语 AMBA:先进单片机总线架构 ADK:AMBA设计套件 AHB:先进高性能总线 AHB-AP:AHB访问端口 APB:先进外设总线 ARM ARM:ARM架构参考手册 ASIC:行业领域专用集成电路 ATB :先进跟踪总线 BE8:字节不变式大端模式 CPI:每条指令的周期数 DAP:调试访问端口 DSP:数字信号处理(器) DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元 FPB:闪存地址重载及断点 FSR:fault状态寄存器 HTM:Core Sight AHB跟踪宏单元 ICE:在线仿真器 IDE:集成开发环境 IRQ:中断请求(通常是外中断请求) ISA:指令系统架构 ISR:中断服务例程 I
[单片机]