📄 main.c
字号:
/*
MSP430F全系列单片机TA定时器PWM发生器程序库
演示程序
说明:该程序演示PWM发生器程序库里各函数的用法。通过调用程序库内的函数,改
变2路PWM调制方波的占空比,从而控制马达转速和LED亮度。
(C)西安电子科技大学 测控技术与仪器教研中心 编写:谢楷 2008/02/19
*/
// MSP430FE425
// -----------------
// | XIN|-
// | | 32kHz
// | XOUT|-
// | |
// | P1.2/TA1|-------三极管驱动--------> 小马达
// | (CCR1) | _ _ _ _
// | | _| |__| |__| |__| |_
// | | 0%~100% PWM
// | |
// | |
// | P2.0/TA2|-------------------------> LED
// | (CCR2) | _ _ _ _
// | | _| |__| |__| |__| |_
// | | 0%~100% PWM
#include "msp430X42X.h" /*430单片机寄存器头文件*/
#include "TA_PWM.h" /*PWM发生器函数库头文件*/
/****************************************************************************
* 名 称:Delay()
* 功 能:延迟
* 入口参数:无
* 出口参数:无
****************************************************************************/
void Delay()
{ unsigned long int i;
for(i=0;i<200000;i++);
}
/****************************************************************************
* 名 称:主程序
* 功 能:演示PWM库函数用法
* 入口参数:无
* 出口参数:无
****************************************************************************/
void main( void )
{
WDTCTL=WDTPW+WDTHOLD; //停止看门狗
FLL_CTL0|=XCAP18PF; //配置晶振负载电容
TA_PWM_Init('A',1,'P','P'); //将定时器TA初始化成为PWM发生器
//时钟源=ACLK ; 无分频; 通道1和通道2均设为高电平模式。
TA_PWM_SetPeriod(500); //通道1/2的PWM方波周期均设为500个时钟周期
while(1)
{
TA_PWM_SetDuty(1,200); //通道1输出方波高电平时间设为200个时钟周期
Delay();
TA_PWM_SetDuty(1,400); //通道1输出方波高电平时间设为400个时钟周期
Delay();
TA_PWM_SetDuty(1,500); //通道1输出方波高电平时间设为500个时钟周期
Delay(); //以上过程可观察到电动机逐渐加速
TA_PWM_SetDuty(1,300); //通道1输出方波高电平时间设为300个时钟周期
Delay(); //电动机减速
TA_PWM_SetDuty(1,0); //通道1输出方波高电平时间设为0个时钟周期
Delay(); //电动机停机
TA_PWM_SetDuty(2,100); //通道2输出方波高电平时间设为100个时钟周期
Delay();
TA_PWM_SetDuty(2,200); //通道2输出方波高电平时间设为200个时钟周期
Delay();
TA_PWM_SetDuty(2,300); //通道2输出方波高电平时间设为300个时钟周期
Delay();
TA_PWM_SetDuty(2,400); //通道2输出方波高电平时间设为400个时钟周期
Delay();
TA_PWM_SetDuty(2,500); //通道2输出方波高电平时间设为500个时钟周期
Delay(); //以上过程可观察到LED逐渐变亮
TA_PWM_SetPermill(2,1000); //通道2输出方波高电平时间设为100.0%
Delay();
TA_PWM_SetPermill(2,600); //通道2输出方波高电平时间设为60.0%
Delay();
TA_PWM_SetPermill(2,400); //通道2输出方波高电平时间设为40.0%
Delay();
TA_PWM_SetPermill(2,100); //通道2输出方波高电平时间设为10.0%
Delay();
TA_PWM_SetPermill(2,0); //通道2输出方波高电平时间设为0
Delay(); //以上过程可观察到LED逐渐变暗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -