历史上的今天
今天是:2025年08月08日(星期五)
2020年08月08日 | MSP430单片机定时器A结构及其应用范例
2020-08-08 来源:elecfans
1-简介
简介MSP430单片机定时器A结构及其应用范例。
2-定时器模块
在MSP430系列单片机中带有功能强大的定时器资源,这定时器在单片机应用系统中起到重要的作用。利用MSP430(以下称为430)单片机的定时器可以用来实现计时,延时,信号频率测量,信号触发检测,脉冲脉宽信号测量,PWM信号发生。另外通过软件编写可以用作串口的波特率发生器。后面我们将用定时器A作为一个波特率发生器,来编写一个串口例程给初学者参考。以加强初学者对定时器A的理解和应用。
在430的大系列产品中,不同的子系列产品定时器资源有所不同;在F11X,F11X1中是不带定时器B资源的。430的定时器主要分为3部分模块:看门狗定时器,定时器A,定时器B。定时器A主要资源特点有16位定时计数器,其计数模式有4种。多种计数时钟信号供选择。3个可配置输入的捕获/比较功能寄存器和8种输出模式的3个可配置输出单片。以上各块定时器资源可作多种组合使用,以实现强大的功能。

定时器资源功能说明
(1)看门狗定时器(WDT):主要用于程序在生错误时用作单片机系统复位重起的。另外,也可作为一个基本定时器使用。
(2)定时器A:作基本定时器使用,结合捕获/比较功能模块可实现时序控制,可编程波形信号发生输出。可作串口波特率发生器使用。
(3)定时器B:作基本定时器使用,与定时器A基本相同,但是功能方面有某些功能会比A增强些。详情请看关于定时器B应用范例。
3-定时器A模块结构
4-定时器A--基础应用例程(1)
//例程描述:利用定时器定时功能,实现P1.0方波输出。
#include
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。
P1DIR |= 0x01; //设置P1.0口方向为输出。
CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。
CCR0 = 50000; //捕获/比较控制寄存器CCR0初值为5000。
TACTL = TASSEL_2 + MC_2; //设置定时器A控制寄存器TACTL,使时钟源选择为SMCLK辅助时钟。
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断
}
//定时器A 中断服务程序区
#pragma vector=TIMERA0_VECTOR
__interrupt void TImer_A (void)
{
P1OUT ^= 0x01; //P1.0取反输出
CCR0 += 50000; //重新载入CCR0捕获/比较数据寄存器数据
}
//例程1结束--------------------------------------------------------------------------
基础应用例程(2)
//例程描述:利用定时器定时功能,实现P1.0方波输出。
// 需要注意的是定时器中断程序,采用向量查询方式。
#include
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗WDT
P1DIR |= 0x01; // 设置P1.0口方向为输出。
TACTL = TASSEL_2 + MC_2 + TAIE; // 时钟源选择为SMCLK,选择计数模式,定时器中断开
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断
}
// TImer_A3 中断向量(TAIV)处理
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV )
{
case 2: break; //CCR1不使用
case 4: break; //CCR2不使用
case 10: P1OUT ^= 0x01; //溢出
break;
}
}
史海拾趣
|
ALTERA公司在其FPGA上嵌入了NIOS2软核,可定制可剪裁; XILINX公司则是在FPGA上嵌入POWER PC硬核处理器. 我想请教下各位,两大公司的中低端FPGA芯片的性能孰优孰劣? 他们的应用领域有那些区别,在芯片选择上,首选哪家公司的产品? … 查看全部问答> |
|
请问WinCE下编写ActiveX并在IE中显示MAC地址的方法 在WinCE下用C++编写ActiveX控件,这个控件的功能是显示MAC地址;并最终在IE中调用这个控件,来显示MAC地址。 谢谢。 … 查看全部问答> |
|
我是个新手,最近领导让搞wince,买了一块友善之臂nano2410的板子,32m dram;64m flash。打算做一些wince 方面的开发。但是nano2410只有nk和eboot文件,不提供bsp和sdk。所以我打算找一个其他的bsp移植上去,同时在pb中生成sdk,用于vs中的开发。 ...… 查看全部问答> |
|
给你一个SEED-DIM3517 ,你可以DIY啥?——DIM3517 DIY活动开始啦! 如果给你一个SEED-DIM3517—— - 基于德州仪器(TI)AM3517处理器的评估模块 -采用DIMM插卡式设计,可以便捷的融入各种行业应用- -ASK3517处理器为500MHz ARM Cortex-A8内核 -并集成多种协处理器和丰富的接口呵呵,还有底板,稍等公布! ...… 查看全部问答> |
|
STM32F10x,在进入ISP后,BOOT0管脚一直有脉冲 会导致ISP失败吗?? ISP过程中,BOOT0需要恒为低电平吗? /* RM0008第23页: 在系统复位后,SYSCLK的第4个上升沿,BOOT管脚的值将 ...… 查看全部问答> |
|
最近用ch341a做了一个USB转TTL的板子,有个问题一直很疑惑,STC的单片机可以用MAX232做一个串口通信电路就可以下程序,用到USB转串口线后,也只有2,3,5有用,根本就没有电脑的15V电平,既然那样干嘛还用max232啊?用个非门像74hc04等代替不就可以了 ...… 查看全部问答> |
|
TMS320C6472 多核 DSP & EVM 工业及嵌入式应用 $(\'swf_Ewr\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMzQ4NTI4NDk2/v.sw ...… 查看全部问答> |
|
1.#i nclude<>指要在编辑器设定目录下,#i nclude\"\"指的是在当前工程目录下。2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。3.命名中不能有-,比如:byq-ee会认为是错误的,要用下划线。4.用IAR ...… 查看全部问答> |
|
各位前辈好,我是学习DSP的新手,我在学习过程中,老师同学一直强烈推荐我好好学习DSP算法。但是我不知道DSP算法具体指什么算法?我应该怎么学习哪些东西呢?该怎么学习呢?希望有前辈能够指导一下!… 查看全部问答> |
|
作者:夜域诡士 我曾经看过一篇电影,里面是这样说的,你如果要想理解一个人的想法,那就他做什么,你也做什么.我也曾经问过别人怎么才能学好Linux内核,大多数回答是买本教材仔细研究,但我认为这是不够的,我认为至少要做一 ...… 查看全部问答> |




