当前位置: 代码迷 >> 综合 >> MSP430F149;二、TIMEA
  详细解决方案

MSP430F149;二、TIMEA

热度:94   发布时间:2023-12-15 09:47:50.0

前面讲了几个寄存器,现在说说定时器A的三种功能

定时器

定时器主要是配置tatcl
在这里插入图片描述

TASSELx 选择时钟源(这里X是因为有两位来控制,或者查询IAR里面的430的头文件找简单的书写方式,有对应的 #define)
这边我一般都是是选用ACLK,到时候用外部中断唤醒CPU
对应时钟就是分频,选择IDx(1/2/4/8)

选择MCx,来控制16位计数器计数模式。
这里面会用到寄存器中的TACCR0,这是一个16位的寄存器,可以存0~65536之中的任意值,(一般根据计算机器周期等等的,输入一个值,来使TAR计数器累加到咱们计算出啦的数字后产生中断)比如,我知道计数器数数字数到32768需要一秒时间,那我就可以在taccr0中赋值32768,当tar中的值等于32768的时候,就产生中断。在这之前,中断使能哦,还有总中断开关打开。

一般这样就可以工作了,如果需要中断的操作的,配置一下TAIE 和 TAIFG,这个中断标志要软件清零,然而TACLR这个是用来复位TAR的,一般不用管,因为会自动清零

TAR寄存器是16位的计数用的寄存器,最大能存的值为65536(2^16),通俗点说就是用二进制来数数,从0,1,2,3…一直数到一定值

捕捉

捕捉一般是计算脉冲宽度啥啥啥的,打个比方,在一个高脉冲走了5S。这个时候我们用捕捉功能可以玩一下,当脉冲上升沿的时候产生个中断,当下降沿的时候再产生中断的时候,我们就可以知道我们的振荡器数了几个数字,你要是说如果数数超过65536呢,我们在寄存器里面有个捕捉溢出位,到时候溢出一次,加上65536再把溢出位清零就好

一般作用测量两个上升沿之间的时间,或者两个下降之间的时间,或者一段脉冲的时间

捕捉功能怎么配置呢:
首先
在TACCTLx中:(有三个TACCTL0、TACCTL1、TACCTL2)
eg:TACCTL1
1.cap位置位(1)
2.CMx选择捕获方式;
3.CCISx选择捕获那个引脚,一般就是CCI1A(这个是eg:TACCTL1)
4.SCS置一,同步模式
5中断使能和标志,置一

比较

一般默认就是比较功能:
首先
1.cap清零;默认就是0
2.中断使能和标志置一;
3.taccr1赋值;

输出输出模式设置

主要由:
outmodx 位,8中状态可以选择
out 如果outmodx 位是000,则这位直接控制输出状态,0输出低;1输出高;

输出模式主要是PWM作用,具体可以看下数据手册