精华内容
下载资源
问答
  • msp430f5529定时器A程序

    2014-08-15 10:40:26
    msp430f5529定时器A程序为TimerA 作为定时器使用实现LED 闪烁
  • MSP430f5529定时器模拟串口写这篇文章的目的打代码之前的思考了解串口新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个...

    写这篇文章的目的

    本人记性贼差,写过的代码总是忘,每次从头看数据手册,因此借CSDN平台,帮助自己第二次甚至第三次写同一个东西的时候能够有所回忆。

    打代码之前的思考

    了解串口

    串口通信需要三根线,RX, TX, GND
    串口数据格式,一个开始位+一字节数据+一个结束位
    串口数据格式
    波特率:一种用于衡量每秒钟UART传输位数的单位

    程序思路

    发送端

    假设波特率为9600,也就是每秒钟需要传输9600位的数据,那么每传输一位就需要1/9600s,因此,在发送端我们只需要在发送数据时打开定时器,定时时间为1/9600,每进一次中断把端口设置成要发送的位数据。

    接收端

    接收端的实现需要依靠定时器的捕获功能,当捕获到端口下降沿的同时,打开定时器,每进一次定时中断读一次端口状态。

    注意

    1.因为接收端在最开始判断有没有数据需要依靠下降沿,所以在发送端,空闲状态下发送端口最好设置为高电平。
    2.在定义发送数据的时候不要使用unsigned char 类型,因为需要一字节数据本身加上开始位和结束位需要十位数据大小。

    展开全文
  • MSP430F5529定时器中断

    2020-09-05 11:11:15
    计时器中断控制LED灯亮灭 void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 // get_clk(); P1DIR |= 0x01; // 将P1.0设为输出 TA0CCTL0 = CCIE; // CCR0中断允许 ...TA0CTL = TASSEL_2 + MC_1 + TACLR;

    计时器中断控制LED灯亮灭

    void main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
    // get_clk();
    P1DIR |= 0x01; // 将P1.0设为输出
    TA0CCTL0 = CCIE; // CCR0中断允许
    TA0CCR0 = 50000;
    TA0CTL = TASSEL_2 + MC_1 + TACLR; // 参考时钟选择SMCLK, 增计数模式, 清除TAR计数器
    __bis_SR_register(LPM0_bits + GIE); // 进入LPM0并使能全局中断
    }
    //TA0中断服务程序
    #pragma vector=TIMER0_A0_VECTOR
    __interrupt void TIMER0_A0_ISR(void)
    {
    P1OUT ^= 0x01; // 反转P1.0端口状态
    }

    展开全文
  • 初学MSP430F5529定时器

    2019-09-11 15:20:20
    1.在user’s guide上看到的5529其实有3种定时器,A\B\D,这三种好像确实有些区别的,但是目前就只看A感觉就够了。 2.Timer_A是具有四种操作模式的16位定时器,7个比较器/捕获器 3.能够输出PWM波,具有8中PWM波形,...

    之前一直感觉定时器有点难,但其实后来发现更多的是中断那块没太懂,中断以后会说的。先简单看下定时器吧。
    一、基本
    1.在user’s guide上看到的5529其实有3种定时器,A\B\D,这三种好像确实有些区别的,但是目前就只看A感觉就够了。
    2.Timer_A是具有四种操作模式的16位定时器,7个比较器/捕获器
    3.能够输出PWM波,具有8中PWM波形,但是要注意的是,这种输出只能在外围功能模块里使用,即之前说过的SEL。比如P1.2能够输出Timer_A0的比较器/捕获器1的波形,而在其他管脚上,就没有办法直接输出这种PWM波形。所以如果这个管脚被占用的话,或是不想用这个来整,其实用中断做PWM波也挺好用的。
    4.能实现串行通信(其实我不太懂这块说的什么意思,也好像没用到,之后见到再补上吧)
    5.捕获模式和比较模式的区别?
    捕获模式是捕获上升沿和下降沿触发中断,而比较器是将一个值储存到CCR寄存器里面,将计数器的值和CCR相比较从触发中断。
    二、寄存器
    话不多说,先看寄存器吧
    1、TAxCTL
    (1)TASSEL:时钟选择,可以选择TAxCLK,ACLK,SMCLK,INCLK
    (2)ID:分频系数
    (3)MC:模式选择
    一共有四种模式,UP模式:一直加到CCR0,再到0;
    Continuous莫斯:一直加到FFFF,再到0
    UP/DOWN模式,加到CCR0,再减到0;
    Stop模式?
    (4)TACLR:清零,需要注意的是TACLR会将TAxR寄存器,分频系数都清零
    (5)TAIE:中断使能
    (6)TAIFG:中断标志位
    2、TAxR
    计数寄存器
    3、TAxCCTLn
    CAP:0比较模式1捕获模式
    OUTMOD:
    有多种输出模式,可以输出多种类型的PWM波,当然这个是从对应的管脚中输出。 这个可以user’s guide里面看。
    CCIE:中断使能
    COV:比较溢出?不是很懂。
    CCIFG:中断标志位
    其他的感觉母亲用不太到。多数会在PUC的时候设置好
    4、TAxCCRn
    CCR寄存器。以u模式为例,就是当计数到这个值的时候,会触发中断。CCR0优先级最高。有单独的一个中断向量。CCR1以后的都共用一个中断向量。同时在UP模式中,计数到CCR0会 从0开始。
    5、TAxIV
    中断源标志寄存器。可以认为CCR1和CCR6的中断标志存在这个里面,在写中断函数的时候,这几个CCR需要用TAXIV判断是哪一个中断了。
    找了一个例程
    #pragma vector=TIMER1_A1_VECTOR
    __interrupt void TIMER1_A1_ISR(void)
    {
    switch(__even_in_range(TA1IV,14))
    {
    case 0: break; // No interrupt
    case 2: break; // CCR1 not used
    case 4: break; // CCR2 not used
    case 6: break; // reserved
    case 8: break; // reserved
    case 10: break; // reserved
    case 12: break; // reserved
    case 14: P1OUT ^= 0x01; // overflow
    break;
    default: break;
    }
    }
    这一段就是判断TA1IV中的值。然后在相应的值里面做操作。如果不用这个的话是没有办法做出来中断的!
    6、TAxEX0
    emmm好像没有用到过
    三、基本步骤
    1、设置时钟
    2、TAxCTL选择模式、时钟等等
    3、TAxCCRn设置CCR
    4、设置中断
    5、中断函数

    emmmm……太懒了懒得找例程解释一下了。不过无非就是配置下寄存器嘛。

    展开全文
  • 注意,MSP430F5529中只有一个定时器B。  1定时器B的简介  7.1.1 特性(了解): (1). 16位同步定时/计数,4种工作模式可选、4中长度可选; (2). 可选可配置时钟源; (3). 高达7个捕获/比较寄存器; (4). 可...

      定时器B和定时器A有很多相同之处,学习的时候注意回忆Timer_A的相关知识。注意,MSP430F5529中只有一个定时器B

      1 定时器B的简介

           7.1.1 特性(了解):
    (1).   16位同步定时/计数,4种工作模式可选、4中长度可选
    (2).   可选可配置时钟源
    (3).   高达7个捕获/比较寄存器
    (4).   可配置PWM输出
    (5).   带有同步装载的双缓冲比较寄存器
    (6).   快速解码的中断向量 
    7.2.2 与定时器A的比较(相同点与不同点)
    (1).   TB的计数长度可以选择(8101216BITS),而TA只有16
    (2).   TB0CCRn寄存器是双缓冲的,且可以分组;
    (3).   所有的TB输出可以被设为高阻状态
    (4).   TB没有SCCI,即捕获器输入信号CCI没有被锁存;
    看结构图,观察和TA有什么区别:
    •       
                7.2 Timer0_B寄存器介绍及设置)
                     声明:所有寄存器同样支持字和字节操作
                               所有寄存器初始化都为0x0000
          7.2.1 TB控制寄存器TB0CTL(最常用最基本)(和TA有一点不同)
                                       rw-(0)表示默认读写均为0
    点击看大图
      TBCLGGRPTB0CLn分组控制
          00每个TB0CLn独立使用
          01TB0CL1+TB0CL2作为一组(TB0CCR1CLLD位控制整组数据更新)
             TB0CL3+TB0CL4作为一组(TB0CCR3CLLD位控制整组数据更新)
         TB0CL5+TB0CL6作为一组(TB0CCR5CLLD位控制整组数据更新)
             10TB0CL123一组,(TB0CCR1CLLD位控制整组数据更新)
                    TB0CL456一组,(TB0CCR4CLLD位控制整组数据更新)
             11TB0CL0123456整合为一组,TB0CCR1CLLD位控制整组数据更新)
    CNTL计数器长度控制
      00 16位,即最大可以计到0FFFFh
      01 12位,即最大可以计到0FFFh
      10 10位,即最大可以计到03FFh
      11  8位,即最大可以计到0FFh
    TBSSEL 时钟源选择。尽量不要选TACLK外部时钟源,因为如果TACLKCPU时钟不同步,很容易出问题。(TB0CLKP7.7引脚)
      00 TBCLK 
      01 ACLK 
      10 SMCLK   
      11  ~TBCLK
    ID第一次分频控制。ID0-1分频;ID1-2分频;ID2-4分频;ID3-8分频
    MC工作模式控制。(建议在修改定时器运行模式前先停止定时器(中断使能、中断标志、TACLR例外),以避免产生未知的误操作。)(和TA一样)
      00 停止模式:定时器停止 
      01 增模式: 定时器计数到TB0CCR0 
      10 连续模式,定时器计数到0FFFH16位)…12位、10… 
      11增减模式:定时器加计数到TB0CCR0然后减计数到0000H 
    TBCLR定时器清零位。该位置位会复位TA寄存器,时钟分频和计数方向。
    TACLR位会自动复位并置0
    TBIE定时器中断使能
          0:中断禁止
      1:中断允许
    TBIFG中断标志位
      0:没有中断发生
      1:有中断挂起
    7.2.2 计数值存放寄存器TB0R
     
    7.2.3 扩展寄存器TBEX0
                     很简单,这个寄存器就是为了控制时钟源的二次分频(看结构图)。
                     该寄存器的低3为定义为TBIDEX000-111分别表示1-8分频
     
    7.2.4 捕获/比较寄存器TBCCR0-TBCCR67个)
                     比较模式下,用来设定计数终值;
    捕获模式下用来将捕获的TBR值存放进TBCCRx中。 
      7.2.5 捕获/比较控制寄存器TB0CCTL0-TB0CCTL6
    点击看大图
    CM捕获模式设定    00 不捕获 01 上升沿捕获 10 下降沿捕获 11上升和下降沿都捕获
     
         CCIS捕获源的选择    00 CCIxA 01 CCIxB 10 GND 11 VCC 
    SCS同步捕获源,设定是否与时钟同步 0 异步捕获 同步捕获 
    CLLD比较寄存器缓冲装载模式选择。00  TB0CCRn的值(改变时)立即装载到TB0CLn 01  TB0R的值计到0时,进行装载10  增模式或者连续模式下,TBR0值计到0时,进行装载 增减模式下,TBR0计数到TBCL0时,开始装载;11  TBR0计数到TBCL0时,开始装载;
    CAP 0-比较模式     1-捕获模式
    OUTMOD输出模式控制位。TA一模一样    
    CCIE中断使能,该位允许相应的CCIFG标志中断请求 0-中断禁止      1 -中断允许 
    CCI  捕获比较输入,所选择的输入信号可以通过该位读取
    OUT  对于输出模式0,该位直接控制输出状态 0-输出低电平    1-输出高电平
    COV捕获溢出位。该位表示一个捕获溢出发出,COV必须由软件复位。 0-没有捕获溢出发生  1-有捕获溢出发生
    CCIFG捕获比较中断标志位。 0-没有中断挂起    1-有中断挂起
          7.2.6 中断向量寄存器TB0IV
                                                 TAIV一样,里面存放一个数字编号。
    • 点击看大图 
    7.3 重点讲TBTA的不同之处 
                  7.3.1 没有再把CCI信号锁存了
                                          TA作捕获器的时候,CCI为捕获信号,然后CCI被锁存输出 为SCCI
     
                                                 但是,TB没有锁存。也就是说只能从CCI位查看输入信 号了。
     
                     7.3.2 计数值位数可调了(其实无所谓,都可以16位那干嘛不用)
                                                 TA的计数值寄存器TAR只能是16位(0XFFFFh);
     
                                                 TB计数值寄存器TBR可以选择是1612108位;
     
                     7.3.3 两级缓冲比较器(比较模式下)
    TA里面,我们在TACCRn中写入要比较的数值,然后让TAR中的计数值和TACCRn比较,如果相等了,相应的标志位就会置位;
     
    TB里面,不仅有TB0CCRn,还多了一个二级缓存器TB0CLnTB0CLn不能被直接进行操作,它的值只能来源于TB0CCRn。计数的时候,TB0R中的计数值不和TB0CCRn比较,而是和TB0CLn进行比较。
    二级缓冲是为了防止我们在修改TB0CCRn的值的时候,对计数产生影响。因为计数器不直接和TB0CCRn比较,而是TB0CCRn把值赋给TB0CLn,由TB0CLn去和TB0R进行比较。所以也就有了CLLD位控制比较寄存器缓冲装载模式:(当向TB0CCRn中重新写数时)
    00  TB0CCRn的值立即装载到TB0CLn 
    01  TB0R的值计到0时,进行装载
    10  增模式或者连续模式下,TBR0值计到0时,进行装载 
            增减模式下,TBR0计数到TBCL0时,开始装载;
    11   TBR0计数到TBCL0时,开始装载;
                  7.3.4 比较器可以被分组
                                          TA没有二级缓冲寄存器,而且本来的TACCRn也只能被单         独使用。
    对于TB
    TBCLGGRPTB0CLn二级缓冲寄存器分组控制
                           00每个TB0CLn独立使用
    01TB0CL1+TB0CL2作为一组(TB0CCR1CLLD位控制整组数据更新)
    TB0CL3+TB0CL4作为一组(TB0CCR3CLLD位控制整组数据更新)
    TB0CL5+TB0CL6作为一组(TB0CCR5CLLD位控制整组数据更新)
                                10TB0CL123一组,(TB0CCR1CLLD位控制整组数据更新)
                                        TB0CL456一组,(TB0CCR4CLLD位控制整组数据更新)
                                11TB0CL0123456整合为一组,
    TB0CCR1CLLD位控制整组数据更新)
     
                                   所谓的分组,就是该组的数据要同时更新。
                                   10模式下的TB0CL123这组为例:
                                    TB0CCTL1中的CLLD设置为01,即TB0R计数到0时,TB0CCR1就会把值装载(更新)到TB0CL2中,同时TB0CCR2就会把值装载(更新)到TB0CL2中,同时TB0CCR3也会把值装载(更新)到TB0CL3中。无论TB0CCRn中的值有几个发生了变化,但它们都只会同时更新TB0CLn
     
                            一个重要的应用:
     
                 如图,增减模式下,可以用来产生有死区时间(dead time)的信号。点击看大图
     
              我们知道有一种H电路结构,该电路有一般有两个输入端,而且这两个输入端(12)严禁同时输入高电平。那么该怎么产生驱动该电路的信号呢:
                  但是,如果我们想要在系统运行的时候,修改死区时间怎么办。那只有修改
                  比较器里面的数值了。这样就有问题了,如果两个比较器数值没有同时修改,那么就有可能产生同时为高电平的情况,这就很危险了。所以,我们把比较器分组,这样数据同时更新,就不会有这样的担心了。
    文章摘录于:http://blog.lehu.shu.edu.cn/879836630/A450844.html

    转载于:https://www.cnblogs.com/qingfengshuimu/p/4357805.html

    展开全文
  • MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器)、Timer1_A(3个)、Timer2_A(3个)、Timer0_B(7个...
  •  <msp430f5529.h> void   main ( void ) {  WDTCTL=WDTPW+WDTHOLD;  P1DIR|=(BIT1+BIT2+BIT3+BIT4+BIT5); //P1.1-P1.5为输出方向  P1OUT=0x00; //全部拉低,初始化LED全灭  TA0CCTL1=CCIE; //...
  • MSP430F5529通过定时器A产生两个反相频率占空比可调PWM波 MSP430F5529定时器还是挺好用的,具有定时计数和捕获的功能,具有高达7歌捕获比较寄存器,支持多路捕获/比较。这里我用到了两个定时器产生两个反相的PWM波...
  • MSP430f5529,用看门狗定时器使p3.7引脚相连的LED每秒点亮一次,灯亮的时间为定时的四分之一
  • MSP430F5529驱动0.96寸OLED显示

    千次阅读 2020-10-10 22:24:19
    MSP430F5529定时器产生PWM波
  • 竞赛之前学习了一下从没有使用过的MSP430单片机,使用的是MSP430F5529的demo板,这块板子应该是MSP430中比较流行的一块了。使用这块板子实现了一个双通道ADC的定时器触发DMA传输,这里记录一下给别人一点参考,同时...
  • 使用msp430f5529测量高电平时间,本程序测量为50hz高电平时间,如要测高频,可以更改定时器时钟
  • MSP430F5529 (七)定时器B

    千次阅读 2014-07-09 15:24:23
    http://blog.lehu.shu.edu.cn/879836630/A450844.html ...七、定时器Timer_B ... 定时器B和定时器A有很多相同之处,学习的时候注意回忆Timer_A的  ...注意,MSP430F5529中只有一个定时器B。    
  • msp430f5529中文资料

    2011-03-17 13:44:01
    msp430f5529中文资料 定时器A的中文资料 来自德州仪器的SLAU208H文件
  • MSP430f5529,用看门狗定时器使p3.7引脚相连的LED每秒点亮一次
  • MSP430F5529 (六)定时器Timer_A

    万次阅读 多人点赞 2014-07-09 15:23:54
    六、定时器Timer_A ... MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器)、Timer1
  • TI培训:MSP430F5529的使用与开发 1. MSP430处理器现状及F5xx 系列产品概述 2. F5xx 的PMM单元/UCS 模块及低功耗模式 3. MSP430 定时器模块 4. ADC12 模块介绍 5. 使用DMA 和定时器以降低MCU功耗 6. 端口映射功能及...
  • 利用msp430f5529单片机从IO口产生一个25Hz方波信号,并用AD模块测量该方波信号的峰值幅度值显示于OLED上。1、利用MSP430定时器和通用IO产生25Hz方波。 2、利用MSP430内部AD测量出该方波峰值幅度并显示在OLED上。 3、...
  • MSP430F5529 上手小例程3

    2019-08-03 01:34:24
    MSP430F5529 上手小例程2 *利用Timer_A比较模式的多路定时,让LED闪烁 查阅资料得知: MSP430有两类定时器:Timer_A(3个)&Timer_B(1个)。 其中,每个定时器都配有不同的捕获比较寄存器:Timer0_A(5个)、Timer1...
  • MSP430F5529就可以采集电压,判断声音大小。 对于声控灯来说,平时小灯熄灭状态,声音过大就打开小灯,然后定时器计时,五秒钟后自动关闭小灯。 以前做的一个音乐频谱: 音乐声音高低不同,单片机控制灯亮的数目也...
  • MSP430F5529有比较丰富的定时器资源,这次我给大家带来的是输出多路PWM波,可以实现控制舵机,当然简单修改后也可以实现控制电机 实验平台是 TI的MSP-EXP430F5529LP 也就是我们常说的launchpad,相信很多做电赛的小...
  • 本设计基于TI公司的MSP430F5529单片机与超声波测距模块HC-SR04实现距离测量,使用ccs软件进行编程,利用单片机定时器的捕获模块捕获超声波高电平持续的时间,再根据公式计算出距离值。 项目准备 1. 开发环境(PC、...
  • 实验内容:上电点亮MSP430F5529 Launch Pad 上板载的红色LED,同时使用定时器让绿色LED闪烁
  • MSP430F5529】学习笔记-PWM波(11月10日)使用定时器中断在任意管脚输出PWM波 #include"msp430f5529.h" void main(void) { WDTCTL = WDTPW+WDTHOLD; P1DIR |=0x01; //设置P1.0为输出 TA0CCTL0 = CCIE; //使能...
  • 内含MSP430各种基础代码,适合初学者使用,有详细的语句注释,包含内容有I/O口输入输出、定时器、比较器、串口通信等等
  • msp430f5529中断笔记

    千次阅读 2018-05-06 18:53:48
    定义中断服务程序#pragma vector=PORT1_VECTOR //P1口中断向量__interrupt void Port_1(void) //声明中断服务程序,名为Port_1{... //中断服务程序}定时器中断应用例程#include &lt;msp43...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

msp430f5529定时器