系列文章目录
前言
本例子主要进行PMS150G PWM输出测试
提示:以下是本篇文章正文内容,下面案例可供参考
一、TM2PWM计数器产生PWM波形并通过引脚输出
TM2产生占空比为50%,频率为3906.25Hz的PWM通过PA3输出波形
二、测试代码摘自miniC编程助手
//======================================//
// PWM设置
//以下案例介绍了TM2
//TM2PWM计数器产生PWM波形并通过引脚输出
// TM2产生占空比为50%
// 频率为3906.25Hz的PWM波
// 通过PA3输出波形
//======================================//
#include "extern.h"
void TM2_PWM(void)
{
TM2CT = 0; //计数寄存器
TM2B = 127; //上限寄存器
$ TM2C SYSCLK,PA3,PWM; //选择时钟源,输出脚,模式,是否反极性输出(写Inverse为启用,不写则为停用)
//根据要求时钟可选择SYSCLK, IHRC, ILRC等,输出脚可以选择Disable(不选择), PA4(仿真器用PB4测试), PA3,模式可选择PWM模式/定周期模式(Period)
//例:系统时钟,PA3输出,PWM模式,无反极性;
// $ TM2C STOP; //关掉时钟,即TM2停止工作
$ TM2S 8BIT,/1,/1; //选择分辨率,预分频,分频
//分辨率可选择8bit,6bit,预分频可选择/1, /4, /16, /64,分频可选择/1 ~ /32(对应TM2S[4:0]的00000 ~ 11111)
// PWM模式的频率和占空比计算
//频率=时钟源/(分辨率*预分频*分频)=1M / (2^8 * 1 * 1) = 3906.25Hz
//占空比=(TM2B+1)/分辨率*100%=(127 + 1) / 2^8 *100% = 50%
// 定周期模式的频率计算(占空比固定50%)
//频率=时钟源/[2*(TM2B+1)*预分频*分频]
//例:设置同上只改为定周期模式
//频率=时钟源/[2*(TM2B+1)*预分频*分频] = 1M / [2*(127+1)*1*1] = 3906.25Hz
}
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/16, IHRC=16MHz, VDD=3.3V;
TM2_PWM();
while (1)
{
nop;
}
}
void Interrupt (void)
{
pushaf;
if (Intrq.T16)
{ // T16 Trig
// User can add code
Intrq.T16 = 0;
//...
}
popaf;
}
总结
通过示波器输出的结果看到,跟计算的差不多,good job