⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_timer_b.c

📁 本程序可以实现在msp430上产生pwm输出信号
💻 C
字号:
/*******************************************************************************
文件名:pwm_timer_b.c
编写者:czhang
描述:使用定时器B进行PWM输出。输出的频率和占空比由串行口发送来的指令确定。
版本:	1.0	2005-2-20
*******************************************************************************/
#include <MSP430x14x.h>
#include "pwm_timer_b.h"

#define PWM_DIR P4DIR
#define PWM_SEL P4SEL
#define PWM_OUT P4OUT
#define PWM_IN  P4IN

#define PWM_IO BIT1

unsigned int iFre;      //频率
unsigned int iScale;	//占空比

/*****************************************************************************
初始化定时器B
*****************************************************************************/
void TimerBInit()
{
	TBCTL = TBSSEL_1 + TBCLR ; //时钟源为ACLK
	TBCCTL1 = OUTMOD_7;   	//工作在复位/置位 模式

	PWM_SEL |= PWM_IO;	//选择输出端口的第二功能
	PWM_DIR |= PWM_IO;
}

/*****************************************************************************
设置占空比
sc:要修改的占空比值
*****************************************************************************/
void SetScale(unsigned int sc)
{
	iScale=sc;
}

/*****************************************************************************
设置频率
fre:要修改的输出频率值
*****************************************************************************/
void SetFre(unsigned int fre)
{
	iFre=fre;
}

/*****************************************************************************
控制PWM运行或者停止
doit:0:停止  100:运行  其它:什么都不做,只返回运行状态
返回值:运行状态。 同doit的值
*****************************************************************************/
unsigned char GoPwm(unsigned char doit)
{
	TBCTL &= ~(MC0+MC1);   //关闭定时器
	if(doit==100)
	{
	   TBCCR1=iScale;
	   TBCCR0=iFre;
		TBCTL |= MC_2;	//打开定时器,计数模式2
	}
	if((TBCTL&MC_0)==0)	//判断PWM是否运行
		return 0;
	else
		return 100;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -