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

📄 #fcab.tmp

📁 小型实时可控操作系统 单片机为msp430
💻 TMP
字号:
/*******************************************************************************
文件名:pwm_timer_b.c

单片机 MSP430F1611 输出引脚P4.1

描述:使用定时器B进行PWM输出。输出的频率和占空比由串行口发送来的指令确定。

*******************************************************************************/
#include <MSP430x16x.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_2 + TBCLR ; //时钟源为MCLK
	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,unsigned long s_iFre, unsigned long s_iScale)
{
	TBCTL &= ~(MC0+MC1);   //关闭定时器
	//if(-1==s_iFre)  s_iFre=(unsigned long)iFre;
	//if(-1==s_iScale) s_iScale=(unsigned long)iScale;
	if(doit==100)
	{
	   TBCCR1=(unsigned int)s_iFre;
	   TBCCR0=(unsigned int)s_iScale;
	   TBCTL |= MC_1;	//打开定时器,计数模式2
	}
	if((TBCTL&MC_3)==0)	//判断PWM是否停止
		return 0;
	else
		return 100;
}

/***********************************************************************************
改变频率和站空比函数
fre:0 时为不变,取值范围-1 ~ 65535, -1表示不变
sc : **/

⌨️ 快捷键说明

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