MSP430f5529定时器,定时器中断


参照用户手册第十七章

前言

定时器A是一个16位定时/计数器,拥有七个捕获/比较寄存器。定时器可支持多个捕获/比较、PWM输出和定时通道。定时器还具备极多的中断功能。中断可以在溢出条件下在计数器和每个捕获/比较寄存器中发生.MSP430F5529的计数参考时钟来源于ACLK,SMCLK,TAxCLK(外部时钟源),INCLK(外部时钟源),通过TASSEL可以设置采用的参考时钟,有关时钟源的知识将在以后讲述。

功能概述

MSP430的定时器具有以下几种功能

1.包含了四种工作模式的异步16位定时/计数器
2.输入捕获/输出比较
3.PWM输出
4.定时中断

这一节主要介绍定时器本体使用
MSP430的定时器控制模式有四种,分别为停止,向上计数,连续(continuous)计数,往返计数模式。此四种模式通过MC位来选择。

向上计数模式会连续从0记到设置值
往返计数模式记到设置值后重新返回向下计数到0
连续计数模式重复计数从0到65535(0xFFFFh)
向上,上下计数模式会在记到值时触发中断,连续计数模式在归零时触发中断

定时器启动方式

计时器可通过以下方式启动或重新启动:
•当MC>0且时钟源处于活动状态时,计时器计数。
•当定时器模式为向上或向上/向下时,可通过将0写入TAxCCR0来停止定时器。然后,可以通过将非零值写入TAxCCR0来重新启动计时器。在这种情况下,计时器从零开始向上递增。

以上翻译原文

寄存器介绍

16位定时/计数器TAxR(TimerA Register)

在这里插入图片描述

16位定时/计数器TAxR,此定时器(以下定时/计数器均简称定时器)可读可写。最大计数值65535,计数溢出时会产生溢出中断标志TAIFG。通过比特位TACLR,定时器的存值,定时器分频设置,定时器计数方向可被清除。
该寄存器即定时器本体

定时器控制寄存器TAxCTL(TimerA Control Register)

在这里插入图片描述
可按位读写,是总体控制定时器的开关。
以下为具体操作模式的宏定义
在这里插入图片描述
在这里插入图片描述

位名称功能
TASSEL设置计数参考时钟
MC设置计数模式
TACLR清除设置开关
TAIE溢出中断使能开关
TAIFG溢出中断标志位

需要注意到,有些宏定义虽然表述不同但是比特定义值是相同的。他们具有等效的作用,可以相互取代。

定时器捕获/比较寄存器TAxCCTLn(TimerAx Capture/Compare Control n Register)

有关x,n指代数值:
x是指代TimerA的某个定时器,有0和1两个。n为CCRn的数量,这里TimerA有七个,即n为从0到6。其产生中断的优先级从0到6逐级递减,0为最高。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

位名称功能
CCIE设置计数中断使能
CCIFG计数中断发生标志

CCIFG产生进入中断函数后可自动清除,不需要软件复位

TAxCCRn

在这里插入图片描述
在向上计数模式,往返计数模式下,此设定值是定时增加的最大值。记到最大值将会置零中断或者反向计数。

示例程序

#include "msp430.h"
unsigned int i;
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  P1DIR |= BIT0;
  TA0CCTL0|=CCIE;
  TA0CCR0|=30000;
  TA0CTL = TASSEL_2 + MC_1 + TACLR;
  __bis_SR_register(LPM0_bits + GIE);  

}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER_A(void)
{
  P1OUT ^= BIT0;  
}

需要注意到最后一句

__bis_SR_register(LPM0_bits + GIE);

使用中断时不要忘记打开总中断否则,中断无论如何都不会开启。
LPM0_bits的含义是单片机进入低功耗模式0

根据提供的代码,这是一个用于msp430f5529微控制器的定时器中断代码。代码中使用了Timer_A模块来实现定时器功能。在代码中,使用了Timer_A_initUpModeParam和Timer_A_initUpDownModeParam结构体来配置定时器的参数。其中,Timer_A_initUpModeParam用于配置定时器为增计数模式,Timer_A_initUpDownModeParam用于配置定时器为往返计数模式。代码中还使用了Timer_A_initUpMode和Timer_A_initUpDownMode函数来初始化定时器。 在代码中,定时器的时钟源选为SMCLK,时钟源分频器选为32分频。定时器的计数值设为16374,定时器中断使能,定时器清零,并立即启动定时器。代码中还定义了一个TIMER_A中断函数,当定时器计数达到设定值时,会触发中断并在中断函数中对P1.0引脚进行取反操作。 请注意,这只是一个代码片段,如果您需要完整的msp430f5529定时器中断代码,您可能需要结合其他代码来实现完整的功能。 #### 引用[.reference_title] - *1* *2* [MSP430F5529库函数定时器A——定时中断](https://blog.csdn.net/qq_63922192/article/details/127741121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MSP430f5529定时器定时器中断](https://blog.csdn.net/watermelonbili/article/details/119727513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值