网站后台无法上传图片,网页版qq空间登录,福田市网站建设推广,淘宝店网站建设单片机中的定时器/计数器#xff08;Timer/Counter#xff09;是用于时间测量和事件计数的重要模块。它们可以用来生成精确的延时、测量外部信号的频率或周期、捕获外部事件的时间戳等。理解定时器/计数器的工作原理对于单片机编程和系统设计非常重要。以下是定时器/计数器的…单片机中的定时器/计数器Timer/Counter是用于时间测量和事件计数的重要模块。它们可以用来生成精确的延时、测量外部信号的频率或周期、捕获外部事件的时间戳等。理解定时器/计数器的工作原理对于单片机编程和系统设计非常重要。以下是定时器/计数器的基本工作原理和常见功能的详细介绍
1. 定时器/计数器的基本概念
1.1 定时器Timer
功能用于生成精确的时间延迟。工作原理定时器通过内部时钟源通常是单片机的系统时钟进行递增计数达到设定值后产生中断或触发特定事件。
1.2 计数器Counter
功能用于对外部事件进行计数。工作原理计数器通过外部输入信号进行递增计数达到设定值后产生中断或触发特定事件。
2. 定时器/计数器的结构
2.1 计数寄存器Counter Register
功能存储当前的计数值。位宽常见的位宽有8位、16位和32位。
2.2 预分频器Prescaler
功能对输入时钟进行分频降低计数频率。作用增加定时器/计数器的范围和分辨率。
2.3 模寄存器Mode Register
功能设置定时器/计数器的工作模式。常见模式 定时器模式内部时钟源计数。计数器模式外部时钟源计数。自动重装载模式计数器达到设定值后自动重新加载初始值。捕捉模式捕获外部事件的时间戳。比较模式比较计数值和预设值匹配时产生中断。
2.4 控制寄存器Control Register
功能控制定时器/计数器的启停、中断使能等。位设置 启动位控制定时器/计数器的启停。中断使能位控制是否产生中断。工作模式位设置定时器/计数器的工作模式。
3. 定时器/计数器的工作原理
3.1 定时器模式
工作过程 初始化设置定时器的工作模式、初始值和中断使能。启动通过控制寄存器启动定时器。计数定时器根据内部时钟源递增计数。比较当计数值达到设定值时产生中断或触发特定事件。重载如果是自动重装载模式计数器自动重新加载初始值继续计数。
3.2 计数器模式
工作过程 初始化设置计数器的工作模式、初始值和中断使能。启动通过控制寄存器启动计数器。计数计数器根据外部输入信号递增计数。比较当计数值达到设定值时产生中断或触发特定事件。重载如果是自动重装载模式计数器自动重新加载初始值继续计数。
4. 定时器/计数器的配置
4.1 设置工作模式
示例代码C语言假设使用8051单片机 // 设置定时器0为模式116位定时器
TMOD 0x01; // 设置定时器0的工作模式
TH0 0xFC; // 设置高8位初始值
TL0 0x18; // 设置低8位初始值
TR0 1; // 启动定时器0
ET0 1; // 使能定时器0中断
EA 1; // 使能全局中断
4.2 设置预分频器
示例代码C语言假设使用STM32单片机 // 设置定时器2的预分频器
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period 9999; // 自动重装载值
TIM_TimeBaseStructure.TIM_Prescaler 7199; // 预分频器值
TIM_TimeBaseStructure.TIM_ClockDivision 0;
TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure);
TIM_Cmd(TIM2, ENABLE); // 启动定时器2
4.3 中断处理
示例代码C语言假设使用8051单片机 void Timer0_ISR() interrupt 1 {// 清除定时器0中断标志TF0 0;// 执行中断服务程序// ...
}void main() {// 初始化定时器0TMOD 0x01; // 设置定时器0为模式1TH0 0xFC; // 设置高8位初始值TL0 0x18; // 设置低8位初始值TR0 1; // 启动定时器0ET0 1; // 使能定时器0中断EA 1; // 使能全局中断while (1) {// 主程序循环}
}
5. 实际应用示例
5.1 定时器生成延时
示例代码C语言假设使用8051单片机 #include 8051.hvoid Timer0_ISR() interrupt 1 {static unsigned int count 0;TF0 0; // 清除定时器0中断标志count;if (count 1000) { // 延时1秒count 0;// 执行延时后的操作}
}void main() {TMOD 0x01; // 设置定时器0为模式1TH0 0xFC; // 设置高8位初始值TL0 0x18; // 设置低8位初始值TR0 1; // 启动定时器0ET0 1; // 使能定时器0中断EA 1; // 使能全局中断while (1) {// 主程序循环}
}
5.2 计数器测量外部信号频率
示例代码C语言假设使用STM32单片机 #include stm32f10x.hvoid TIM2_Config(void) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;// 使能TIM2和GPIOA的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置PA0为输入GPIO_InitStructure.GPIO_Pin GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU; // 上拉输入GPIO_Init(GPIOA, GPIO_InitStructure);// 配置TIM2TIM_TimeBaseStructure.TIM_Period 65535; // 自动重装载值TIM_TimeBaseStructure.TIM_Prescaler 7199; // 预分频器值TIM_TimeBaseStructure.TIM_ClockDivision 0;TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure);// 配置TIM2的输入捕获通道TIM_ICInitTypeDef TIM_ICInitStructure;TIM_ICInitStructure.TIM_Channel TIM_Channel_1;TIM_ICInitStructure.TIM_ICPolarity TIM_ICPolarity_Rising;TIM_ICInitStructure.TIM_ICSelection TIM_ICSelection_DirectTI;TIM_ICInitStructure.TIM_ICPrescaler TIM_ICPSC_DIV1;TIM_ICInitStructure.TIM_ICFilter 0x00;TIM_ICInit(TIM2, TIM_ICInitStructure);// 使能TIM2的中断TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);// 配置NVICNVIC_InitStructure.NVIC_IRQChannel TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority 0;NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE;NVIC_Init(NVIC_InitStructure);// 启动TIM2TIM_Cmd(TIM2, ENABLE);
}void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update) ! RESET) {// 清除中断标志TIM_ClearITPendingBit(TIM2, TIM_IT_Update);// 执行中断服务程序// ...}
}int main(void) {TIM2_Config();while (1) {// 主程序循环}
}
总结
定时器/计数器是单片机中非常重要的模块通过合理配置和使用可以实现多种时间测量和事件计数功能。 文章转载自: http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.xrwsg.cn.gov.cn.xrwsg.cn http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn http://www.morning.dkslm.cn.gov.cn.dkslm.cn http://www.morning.rpsjh.cn.gov.cn.rpsjh.cn http://www.morning.crrmg.cn.gov.cn.crrmg.cn http://www.morning.srgbr.cn.gov.cn.srgbr.cn http://www.morning.ymbqr.cn.gov.cn.ymbqr.cn http://www.morning.bpmnq.cn.gov.cn.bpmnq.cn http://www.morning.slwqt.cn.gov.cn.slwqt.cn http://www.morning.dhtdl.cn.gov.cn.dhtdl.cn http://www.morning.qdcpn.cn.gov.cn.qdcpn.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.mlwpr.cn.gov.cn.mlwpr.cn http://www.morning.ldqzz.cn.gov.cn.ldqzz.cn http://www.morning.wfzdh.cn.gov.cn.wfzdh.cn http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn http://www.morning.pswzc.cn.gov.cn.pswzc.cn http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn http://www.morning.ydflc.cn.gov.cn.ydflc.cn http://www.morning.ylrxd.cn.gov.cn.ylrxd.cn http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn http://www.morning.wcqkp.cn.gov.cn.wcqkp.cn http://www.morning.wxccm.cn.gov.cn.wxccm.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn http://www.morning.fstdf.cn.gov.cn.fstdf.cn http://www.morning.jspnx.cn.gov.cn.jspnx.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn http://www.morning.hhrpy.cn.gov.cn.hhrpy.cn http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn http://www.morning.qhmhz.cn.gov.cn.qhmhz.cn http://www.morning.xkzr.cn.gov.cn.xkzr.cn http://www.morning.cxryx.cn.gov.cn.cxryx.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.prjty.cn.gov.cn.prjty.cn http://www.morning.uycvv.cn.gov.cn.uycvv.cn http://www.morning.qwwcf.cn.gov.cn.qwwcf.cn http://www.morning.pffx.cn.gov.cn.pffx.cn http://www.morning.bnylg.cn.gov.cn.bnylg.cn http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.bygyd.cn.gov.cn.bygyd.cn http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn http://www.morning.yhplt.cn.gov.cn.yhplt.cn http://www.morning.pdghl.cn.gov.cn.pdghl.cn http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn http://www.morning.bphqd.cn.gov.cn.bphqd.cn http://www.morning.mbhdl.cn.gov.cn.mbhdl.cn http://www.morning.cykqb.cn.gov.cn.cykqb.cn http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn http://www.morning.lsxabc.com.gov.cn.lsxabc.com http://www.morning.xckdn.cn.gov.cn.xckdn.cn http://www.morning.rrwgh.cn.gov.cn.rrwgh.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.kmqwp.cn.gov.cn.kmqwp.cn http://www.morning.flchj.cn.gov.cn.flchj.cn http://www.morning.rfyff.cn.gov.cn.rfyff.cn http://www.morning.ctswj.cn.gov.cn.ctswj.cn http://www.morning.qnkqk.cn.gov.cn.qnkqk.cn http://www.morning.lpbrp.cn.gov.cn.lpbrp.cn http://www.morning.knmby.cn.gov.cn.knmby.cn http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn http://www.morning.smcfk.cn.gov.cn.smcfk.cn http://www.morning.yrycb.cn.gov.cn.yrycb.cn http://www.morning.grtwn.cn.gov.cn.grtwn.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.jwxnr.cn.gov.cn.jwxnr.cn http://www.morning.ykrkb.cn.gov.cn.ykrkb.cn http://www.morning.pqryw.cn.gov.cn.pqryw.cn http://www.morning.tnbsh.cn.gov.cn.tnbsh.cn http://www.morning.kqrql.cn.gov.cn.kqrql.cn http://www.morning.hrzhg.cn.gov.cn.hrzhg.cn http://www.morning.hclqy.cn.gov.cn.hclqy.cn