MSP430单片机各种寄存器总结(5)——Timer_A0

作者:BerenCamlost

本文针对于南京理工大学的王宏波老师的MSP430单片机原理与应用课程,请在复习时使用。

参考资料:

  1. 王宏波老师的PPT
  2. MSP430F6638用户手册
  3. 王宏波老师实验教程

本章最新更新日期:2018.12.22

第五章 Timer_A0寄存器

5.1 TA0CTL

MSP430单片机各种寄存器总结(5)——Timer_A0

BITS Field Description 默认
9-8 TASSEL Timer_A0时钟源选择 TAxCLK
5-4 MC 计数模式选择,注意复习三种计数模式 停止计数
2 TACLR 清零计数器
1 TAIE TA中断使能 0
0 TAIFG TA中断标志位 0
  • 【注意】Timer_A0有两种中断,一种是TAIFG,一种是TAxCCR0 CCIFG

5.2 TA0R

TA0的16位计数器,这个没啥好说的

我起啦,一枪秒啦,有什么好说的

5.3 TA0CCTLn(n=0~6)

MSP430单片机各种寄存器总结(5)——Timer_A0

bits field Description
15-14 CM 捕获模式选择
13-12 CCIS These bits select the TAxCCR0 input signal(不想翻译)
8 CAP 选择捕获或者比较模式(0:捕获,1:比较)
7-5 OUTMOD 输出模式
4 CCIE 捕获比较中断的使能
2 OUT 如果OUTMOD选择的是OUT模式,这个可以设置输出高还是低
0 CCIFG 捕获比较中断标志位

5.4 TA0CCRn

MSP430单片机各种寄存器总结(5)——Timer_A0
这个就是存放比较寄存器的值,可以用来设置周期和占空比

5.5 TA0IV

MSP430单片机各种寄存器总结(5)——Timer_A0

  • TAIV中断的中断矢量寄存器,当除TA0CCR0之外的中断标志位置位时,这里面的值就会改变,不同的值对应了不同的中断,可以在终端服务函数中查看这个寄存器的值来确定是哪一个中断到来。
  • 注意这个中断服务函数的中断矢量(TIMER0_A1_VECTOR)和本征函数(__even_in_range(TA0IV,14))的运用。
#pragma  vector=TIMER0_A1_VECTOR
	__interrupt void TIMER0_A1_ISR(void)
	{
		switch(__even_in_range(TA0IV,14))// __even_in_range()本征函数,用于多源中断的查询。
		{
			//优先级从高到低,已经被硬件规定好了
			case 0: break; // No interrupt
			case 2: break; // TAxCCR1 CCIFG
			case 4: break; // TAxCCR2 CCIFG
			case 6: break; // TAxCCR3 CCIFG
			case 8: break; // TAxCCR4 CCIFG
			case 10: break; // TAxCCR5 CCIFG
			case 12: break; // TAxCCR6 CCIFG
			case 14: break; // TAxCTL TAIFG
			default: break;
		}
	}