MSP430程序库之定时器TA的PWM输出
msp430定时器a中文超级详解 (1)

文章转载自网络-----------------感谢原作者的辛勤奉献MSP430的定时器中有比较捕获比较模式:这是定时器的默认模式,当在比较模式下的时候,与捕获模式相关的硬件停止工作,如果这个时候开启定时器中断,然后设置定时器终值(将终值写入TACCRx),开启定时器,当TAR的值增到TACCRx的时候,中断标志位CCIFGx 置一,同时产生中断。
若中断允许未开启则只将中断标志位CCIFGx置一。
例子:比较模式就像51单片机一样,要能够软件设置定时间隔来产生中断处理一些事情,如键盘扫描,也可以结合信号输出产生时序脉冲发生器,PWM信号发生器。
如:不断装载TACCRx,启动定时器,TAR和TACCRx比较产生中断处理。
捕获模式:利用外部信号的上升沿、下降沿或上升下降沿触发来测量外部或内部事件,也可以由软件停止。
捕获源可以由CCISx选择CCIxA,CCIxB,GND,VCC。
完成捕获后相应的捕获标志位CCIFGx置一捕获模式的应用:利用捕获源的来触发捕获TAR的值,并将每次捕获的值都保存到TACCRx 中,可以随时读取TACCRx的值,TACCRx是个16位的寄存器,捕获模式用于事件的精确定位。
如测量时间、频率、速度等例子:利用两次捕获的值来测量脉冲的宽度。
或捕获选择任意沿,CCISx=”11“(输入选择VCC),这样即当VCC与GND发生切换时产生捕获条件结合利用:异步通讯同时应用比较模式和捕获模式来实现UART异步通信。
即利用定时器的比较模式来模拟通讯时序的波特率来发送数据,同时采用捕获模式来接收数据,并及时转换比较模式来选定调整通信的接受波特率,达到几首一个字节的目的----------------------------------------利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。
本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,同时结合简单的软件算法就能实现脉冲宽度的测量。
[vip专享]MSP430程序库之定时器TA的PWM输出
![[vip专享]MSP430程序库之定时器TA的PWM输出](https://img.taocdn.com/s3/m/388f5d8d10a6f524ccbf85ff.png)
43m1m“-”J520Gm01m24“492k-Z(1)g2L3-”3060@k%3-g“/1”7mD2%BJ/Tg0d1-ZP318¬-A_2"o70)Xc0?y258z6n”217 NE)
43m1m“-”J520Gm01m24“492k-Z(1)g2L3-”3060@k%3-g“/1”7mD2%BJ/Tg0d1-ZP318¬-A_2"o70)Xc0?y258z6n”217 NE)
TACTL |= MC_1;
//定时器 TA 设为增计数模式
switch(Clk)
//选择时钟源
{
case 'A': case 'a': TACTL|=TASSEL_1; break; //ACLK
case 'S': case 's': TACTL|=TASSEL_2; break; //SMCLK
case 'E': 外部输入(TACLK)
TACTL|=TASSEL_0; break; //
case 'e': 外部输入(TACLK 取反)
TACTL|=TASSEL_3; break; //
default : return(0);
//
参数有误
} switch(Div)
//选择分频系数
{
case 1: TACTL|=ID_0; break; //1
TA 定时器有比较、捕获两种工作方式;比较可以产生 PWM 波形等,捕获可 以精确的测量时间;这里用的是比较输出。 硬件介绍就这么多了,其他的可以参考 msp430x1xx_family_users_guide(用 户指南)。
2. 程序实现:
基于MSP430单片机的直流电机PWM调速系统的研究

基于MSP430单片机的直流电机PWM调速系统的研究一、本文概述随着微控制器技术的快速发展,其在各种控制系统中的应用也日益广泛。
MSP430单片机作为一种低功耗、高性能的微控制器,被广泛应用于各种嵌入式系统和智能设备中。
其中,直流电机PWM调速系统就是MSP430单片机的一个重要应用领域。
本文旨在研究基于MSP430单片机的直流电机PWM调速系统。
我们将介绍MSP430单片机的基本特性及其在直流电机控制中的优势。
然后,我们将详细分析PWM(脉冲宽度调制)调速系统的基本原理和优点,以及如何在MSP430单片机上实现PWM控制。
接下来,我们将通过硬件设计和软件编程,构建一个基于MSP430单片机的直流电机PWM调速系统,并对其性能进行实验验证。
我们还将讨论该系统在实际应用中的潜力和可能面临的挑战,如噪声干扰、电机保护、系统稳定性等问题,并提出相应的解决方案。
我们将总结本文的主要研究成果,并展望未来的研究方向和应用前景。
通过本文的研究,我们希望能够为MSP430单片机在直流电机PWM 调速系统中的应用提供理论和实践指导,推动相关技术的发展和应用。
二、MSP430单片机概述MSP430单片机是德州仪器(Texas Instruments,简称TI)推出的一款低功耗、高性能的微控制器。
其独特的设计理念和广泛的应用场景,使得MSP430单片机在众多嵌入式系统中占有一席之地。
MSP430单片机以其超低的功耗、丰富的外设资源、高效的指令集以及灵活的编程方式,被广泛应用于各种低功耗、实时性要求高的嵌入式系统中。
MSP430单片机具有多种型号,涵盖了不同的性能和功能需求。
其核心采用精简指令集(RISC)架构,使得指令执行速度更快,效率更高。
MSP430单片机还具有丰富的外设接口,如串行通信接口(UART)、SPI、I2C等,方便与外部设备进行通信。
在直流电机PWM调速系统中,MSP430单片机扮演着关键角色。
通过编程控制PWM波的占空比,MSP430单片机可以实现对直流电机的精确调速。
MSP430单片机PWM调制的说明及源代码

用于产生直流电平的滤波器仅仅是用来储存电荷的而不像交流信号滤波器那样
用来滤波因此采用了一个简单的单极RC 滤波器
4.程序流程
用MSP430F449 的Timer_B 的PWM 来产生正弦波和直流电平的程序比较简单流
程如图4 所示MSP430F449 自身有FLL 可用它来实现DCO 的频率校准但是
实现低功耗尽量避免采用有
源器件
用于交流信号的滤波器是一个
双极点级联RC 滤波器如果滤
波器阶数过高可以采用提高
的抽样频率的办法来降低滤波
器阶数滤波器的截至频率fc
由下式来计算
当R2 ? R1 时滤波器的响应较
好但是如果截至频率很接近信号带宽边沿将会导致相当大的衰减因此为了
减小滤波器的衰减截至频率应该大于信号带宽边沿但是要远小于PWM 信号的
新的正弦波抽样值载入捕获/比较寄存器CCR1 中因此产生的PWM 信号的脉冲宽
度就决定了正弦波在每一个时刻的抽样值将这个PWM 信号经过低通滤波即得
所需的正弦波
3.2 直流电平的产生
直流电平产生比较简单因为它对应的PWM 占空比是一定的直流电平直接正比
于PWM 信号的占空比要产生0.5VCC 的直流电平PWM 的占空比显然是50% 考
FLL_CTL0 = XCAP18PF; // 设置XTAL1 的负载电容
SCFQCTL = 50-1; // 1.6384MHz/32768Hz = 50,fDCO=MCLK=1.6384MHz
for (i = 50000; i; i--); // 晶振初始化延时
//***设置Timer_B***//
TBCCR2=128; //PWM 的占空比为50%,产生0.5VCC 的直流电平
Msp430定时器的介绍及其基本应用

Msp430定时器的介绍及其基本应用Msp430定时器的介绍及其基本应用Msp430单片机一共有5种类型的定时器。
看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit Timer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)。
但是这些模块不是所有msp430型号都具有的功能。
1、看门狗定时器(WDT)学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。
msp430中它是一个16位的定时器,有看门狗和定时器两种模式。
2、基本定时器(Basic Timer1)基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。
它可以只两个8位定时器,也可以是一个16位定时器。
3、8位定时器/计数器(8-bit Timer/Counter)如其名字所示,它是8位的定时器,主要应用在支持串行通信或数据交换,脉冲计数或累加以及定时器使用。
4、16位定时器A和B定时器A在所有msp430系列单片机中都有,而定时器B在msp430f13x/14x和msp430f43x/44x等器件中出现,基本的结构和定时器A是相同的,由于本人最先熟悉并应用的是定时器A所以在这里就主要谈一下自己对定时器A的了解和应用。
定时器A是16位定时器,有4种工作模式,时钟源可选,一般都会有3个可配置输入端的比较/捕获寄存器,并且有8种输出模式。
通过8种输出模式很容易实现PWM波。
定时器A的硬件电路大致可分为2类功能模块:一:计数器TAR计数器TAR是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断TAIFG。
二:比较/捕获寄存器CCRX如何实现定时功能呢?这就要靠三个比较/捕获寄存器了(以后用CCRx表示)。
当计数器TAR的计数值等于CCRx时(这就是捕获/比较中的比较的意思:比较TAR是否等于CCRx),CCRx单元会产生一个中断。
msp430的PWM输出是什么意思

msp430的PWM输出是什么意思?
输出的是电平还是什么?能直接接到示波器上吗?是对一个信号的调制还是自己能产生出一个信号来?
提问者采纳
PWM就是高低电平不停的变化的信号,通过配置基础器输出,可以用
示波器看到。
关于PWM,我在其他问题中回答过,复制给你看看。
简单的说,比如你有5V电源,要控制一台灯的亮度,有一个传统办法,
就是串联一个可调电阻,改变电阻,灯的亮度就会改变。
还有一个办法,就是PWM调节。
不用串联电阻,而是串联一个开关。
假设在1秒内,有0.5秒的时间开关是打开的,0.5秒关闭,那么灯就
亮0.5秒,灭0.5秒。
这样持续下去,灯就会闪烁。
如果把频率调高一
点,比如是1毫秒,0.5毫秒开,0.5毫秒灭,那么灯的闪烁频率就很高。
我们知道,闪烁频率超过一定值,人眼就会感觉不到。
所以,这时你看
不到灯的闪烁,只看到灯的亮度只有原来的一半。
同理,如果1毫秒内,0.1毫秒开,0.9毫秒灭,那么,灯的亮度就只有
原来的10分之一。
这个还能用于电机速度控制,用于电源电压控制,等等,具体涉及的知
识比LED控制复杂一些,这里就不说了。
msp430利用定时器定时功能,实现P1.0方波输出。
//例程描述:利用定时器定时功能,实现P1.0方波输出。
#include <msp430x14x.h>{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捕获/比较数据寄存器数据}//例程描述:利用定时器定时功能,实现P1.0方波输出。
// 需要注意的是定时器中断程序,采用向量查询方式。
#include <msp430x14x.h>void main(void){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗WDTP1DIR |= 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;}}。
MSP430_定时器A的使用(含OUTMOD模式详解及运用)
第四讲定时器A的使用MSP430F413芯片中含有TimerA3模块,如图1-2所示。
其常用的外引线有三条:TACLK、TA1和TA2。
TACLK:定时器_A输入时钟(48脚),与P1.6和ACLK输出共用同一引脚。
TA1:定时器_A的第一通道输入、输出引脚(51脚)。
捕获方式:CCI1A输入;比较方式:OUT1输出。
TA2:定时器_A的第二通道输入、输出引脚(45脚)。
捕获方式:CCI2A输入;比较方式:OUT2输出。
1.定时器A功能及结构定时器A基本结构是一个十六位计数器,由时钟信号驱动工作,结构框图如图4-1所示。
图4-1 定时器A结构图定时器A具有多种功能,其特性如下:(1)输入时钟可以有三种选择,可以是慢时钟(ACLK)、快时钟(SMCLK与单片机主时钟同频)和外部时钟。
(2)能产生的定时中断、定时脉冲和PWM(脉宽调制)信号,没有软件带来的误差。
(3)不仅能捕获外部事件发生的时间,还可选择触发脉冲沿(由上升沿或下降沿触发)。
定时器A功能模块主要包括:(1)计数器部分:输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4或8分频作为计数频率,Timer_A可以通过选择4种工作模式灵活的完成定时/计数功能。
(2)捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O 端口处理事务的能力和速度。
不同的MSP430单片机,Timer_A模块中所含有的捕获/比较器的数量不一样,每个捕获/比较器的结构完全相同,输入和输出都取决于各自所带控制寄存器的控制字,捕获/比较器相互之间完全独立工作。
(3)输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号,支持PWM输出。
2.定时器工作模式(1)停止模式:停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。
当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。
MSP430单片机应用之定时器、PWM
{
...
&0x01)
{
P1OUT–0x01;//翻转状态
IFG&=0xfe;//清除中断标志位
}
}
}
(2)中断方式:WDTCTL与查询方式相同设置,另外需要置位中断允许位
(WDTIE,位于IE1.0)使得单片机能够响应这一中断。
#pragmavector=WDT_VECTOR
MSP430单片机应用之定时器、PWM
1。定时器使用查询和中断两种方式。大多数逻辑芯片输出0的能力大于
输出1的能力。
(1)查询方式:TMSEL决定看门狗的工作模式,置一,看门狗工作在定时
模式。SSEL选择看门狗定时器的时钟源。SSEL置一。IS0IS1决定了看门狗
定时器的输出频率。(注意:使用查询方式时候要清除中断标志)
注意:输出PWM的周期应远小于积分电路的积分常数。提高DA精度
CCR0不宜过小。
扩展阅读:MSP430单片机低功耗结构原理
__interruptvoidWDT_ISR()
{
P1OUT–0x01;
}
main()
{
...
while(True);
}
2.PWM(用定时器A实现)
(1)可用提高频率的方法来取得DA的效果,但是有些场合仍不能满足要
求,这要就需要一个积分电路来获得理想的DA效果
(2)对TA的设置:比较/捕获模块控制寄存器:捕获比较寄存器CCRx.
MSP430微控制器系列讲座十一利用PWM原理实现的DA转换
例如:输出一个正弦波,采用32采样频率产生。正弦波的频
率为250Hz,所以每秒须采样250×32=8000次,而每次采样需
要256次计数,所以计数频率采用8000×256=2.048MHz。
斜波信号的产生是从最小占空比的PWM波经滤波后输
t
出,然后逐渐增大占空比,直到输出最大电平值后,又重新开始从
审
咪翻卟掣百T。午:期 万方数据
数器值达到各自CCRx值时,输出复位(低电平)信号,当计数值 达到CCR0时,输出置位(高电平)信号。当CCRx值变化时,则 经滤波后输出的信号将相应变化。系统的SMCLK时钟可作为 定时器TimeLB的计数时钟源。
所需MSP430微控制器其它资源包括:①32768Hz晶振; ②片上DCO工作晶振为2.048MHz;(⑨SMCLK和MCLK晶振 为2.048MHz。当然,系统应用的复杂程度改变时,所需要资源 也会不一样。
2.工作原理
斛M信号为频率固定、占空比变化的数字信号,基本波形
如图1所示。如果PWM信号的占空比随时间而改变,那么信号 经滤波后将输出幅度变化的模拟信号。因此通过改变PWM信 号的占空比,即可产生不同的模拟信号。PWM信号实现DA转 换(简称PWM DAC)的原理框图如图2所示。TI公司的一些语 言处理技术也通常采用PWM DAC方式实现。
最小占空比的PWM波输出。
唯
譬
其中,直流信号及PWM信号波形图如图5所示。直流电平
的产生比较简单,可通过PWM信号占空比设置,该电平值不会
37
发生变化,且直流电平值直接与PWM信号的占空比成比例。因
譬
盎
万方数据
第
期
剿
关闭WD,初始化I/o 口,设置系统时钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSP430程序库之定时器TA的PWM输出定时器是单片机常用的其本设备,用来产生精确计时或是其他功能;msp430的定时器不仅可以完成精确定时,还能产生PWM波形输出,和捕获时刻值(上升沿或是下降沿到来的时候)。
这里完成一个比较通用的PWM波形产生程序。
1.硬件介绍:MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。
它给开发人员提供了较多灵活的选择余地。
当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。
MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA 有三个模块,CCR0-CCR2;TB含有CCR0-CCR67个模块;其中CCR0模块不能完整的输出PWM波形(只有三种输出模式可用);TA可以输出完整的2路PWM波形;TB可以输出6路完整的PWM波形。
定时器的PWM输出有有8种模式:输出模式0 输出模式:输出信号OUTx由每个捕获/比较模块的控制寄存器CCTLx中的OUTx位定义,并在写入该寄存器后立即更新。
最终位OUTx直通。
输出模式1 置位模式:输出信号在TAR等于CCRx时置位,并保持置位到定时器复位或选择另一种输出模式为止。
输出模式2 PWM翻转/复位模式:输出在TAR的值等于CCRx时翻转,当TAR 的值等于CCR0时复位。
输出模式3 PWM置位/复位模式:输出在TAR的值等于CCRx时置位,当TAR 的值等于CCR0时复位。
输出模式4 翻转模式:输出电平在TAR的值等于CCRx时翻转,输出周期是定时器周期的2倍。
输出模式5复位模式:输出在TAR的值等于CCRx时复位,并保持低电平直到选择另一种输出模式。
输出模式6PWM翻转/置位模式:输出电平在TAR的值等于CCRx时翻转,当TAR值等于CCR0时置位。
输出模式7PWM复位/置位模式:输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
下图是增计数模式下的输出波形(本程序使用的是增模式3和7):计数模式:增计数模式捕获/比较寄存器CCR0用作Timer_A增计数模式的周期寄存器,因为CCR0为16位寄存器,所以该模式适用于定时周期小于65 536的连续计数情况。
计数器TAR可以增计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。
连续计数模式在需要65 536个时钟周期的定时应用场合常用连续计数模式。
定时器从当前值计数到0FFFFH后,又从0开始重新计数增/减计数模式需要对称波形的情况经常可以使用增/减计数模式,该模式下,定时器先增计数到CCR0的值,然后反向减计数到0。
计数周期仍由CCR0定义,它是CCR0计数器数值的2倍。
TA定时器有比较、捕获两种工作方式;比较可以产生PWM波形等,捕获可以精确的测量时间;这里用的是比较输出。
硬件介绍就这么多了,其他的可以参考msp430x1xx_family_users_guide(用户指南)。
2.程序实现:本程序是直接从msp430f42x移植的,只改动了端口就能正常使用了。
由此,430的模块在不同的系列中是通用的,有关寄存器是一样的;只是也许外部端口不太一样。
程序初始化部分:完成TA相关寄存器的初始化。
char TAPwmInit(char Clk,char Div,char Mode1,char Mode2){TACTL = 0; //清除以前设置TACTL |= MC_1; //定时器TA设为增计数模式switch(Clk) //选择时钟源{case 'A': case 'a': TACTL|=TASSEL_1; break;//ACLKcase 'S': case 's': TACTL|=TASSEL_2; break;//SMCLKcase 'E': TACTL|=TASSEL_0; break; //外部输入(TACLK)case 'e': TACTL|=TASSEL_3; break; //外部输入(TACLK取反)default : return(0); //参数有误}switch(Div) //选择分频系数{case 1: TACTL|=ID_0; break; //1case 2: TACTL|=ID_1; break; //2case 4: TACTL|=ID_2; break; //4case 8: TACTL|=ID_3; break; //8default : return(0); //参数有误}switch(Mode1) //设置PWM通道1的输出模式。
{case 'P':case 'p': //如果设置为高电平模式TACCTL1 = OUTMOD_7; //高电平PWM输出P1SEL |= BIT2; //从P1.2输出 (不同型号单片机可能不一样)P1DIR |= BIT2; //从P1.2输出 (不同型号单片机可能不一样)break;case 'N':case 'n': //如果设置为低电平模式TACCTL1 = OUTMOD_3; //低电平PWM输出P1SEL |= BIT2; //从P1.2输出 (不同型号单片机可能不一样)P1DIR |= BIT2; //从P1.2输出 (不同型号单片机可能不一样)break;case '0':case 0: //如果设置为禁用P1SEL &= ~BIT2; //P1.2恢复为普通IO口break;default : return(0); //参数有误}switch(Mode2) //设置PWM通道1的输出模式。
{case 'P':case 'p': //如果设置为高电平模式TACCTL2 =OUTMOD_7; //高电平PWM输出P1SEL |= BIT3; //从P1.3输出 (不同型号单片机可能不一样)P1DIR |= BIT3; //从P1.3输出 (不同型号单片机可能不一样)break;case 'N':case 'n': //如果设置为低电平模式TACCTL2 =OUTMOD_3; //低电平PWM输出P1SEL |= BIT3; //从P1.3输出 (不同型号单片机可能不一样)P1DIR |= BIT3; //从P1.3输出 (不同型号单片机可能不一样)break;case '0':case 0: //如果设置为禁用P1SEL &= ~BIT3; //P1.3恢复为普通IO口break;default : return(0); //参数有误}return(1);}主要是设置TACTL寄存器,让TA工作于增模式,设置时钟源和分频;CCTLx 设置对应的输出模式;并且打开相应端口的第二功能。
设置周期函数:设置PWM波形的周期,单位是多少个TACLK周期。
void TAPwmSetPeriod(unsigned int Period){TACCR0 = Period;}工作于增模式时,TA计数到TACCR0,设CCR0就完成了周期的设置。
设置占空比:设置TA的PWM输出的有效电平的时间。
void TAPwmSetDuty(char Channel,unsigned int Duty){switch(Channel){case 1: TACCR1=Duty; break;case 2: TACCR2=Duty; break;}}根据参数分别设置每一路的参数。
设置占空比,用千分比设置:* 入口参数:Channel: 当前设置的通道号 1/2Percent: PWM有效时间的千分比 (0~1000)* 出口参数:无* 说明: 1000=100.0% 500=50.0% ,依次类推* 范例: TAPwmSetPermill(1,300)设置PWM通道1方波的占空比为30.0%TAPwmSetPermill(2,825)设置PWM通道2方波的占空比为82.5%*/void TAPwmSetPermill(char Channel,unsigned int Percent){unsigned long int Period;unsigned int Duty;Period = TACCR0;Duty = Period * Percent / 1000;TAPwmSetDuty(Channel,Duty);}这个函数用千分比来设置PWM输出的有效时间。
方便程序的使用。
有关定时器,TI提供的大量的例程,这些历程都很简洁、清晰。
需要其他功能可以自己根据例程编写对应的程序。
程序实现就这么多了,下面说下本程序的使用方法。
3.使用示例:使用方式:依然是在工程中加入c文件;文件包含h头文件;然后就可以正常使用本函数了。
详细参考示例工程和main.c。
main主要程序如下:#include "msp430x16x.h" //430寄存器头文件#include "TAPwm.h" //TA PWM输出程序库头文件void main(){// Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;ClkInit();TAPwmInit('A',1,'P','P'); //将定时器TA初始化成为PWM 发生器//时钟源=ACLK ; 无分频; 通道1和通道2均设为高电平模式。
TAPwmSetPeriod(500); //通道1/2的PWM方波周期均设为500个时钟周期TAPwmSetDuty(1,200); //1通道有效200个时钟周期TAPwmSetPermill(2,200); //2通道 20.0%LPM0;}本程序调用程序库,产生两路PWM波形。
TA的PWM输出就到这儿了,如果需要更多路的PWM波,可以使用TB,他可以产生6路完整的PWM波形;可以参考本程序编写TB的波形输出程序。
有什么不足之处,欢迎评论,讨论。