| 
在线时间40 小时
UID3083991
注册时间2014-12-16
NXP金币0 
 该用户从未签到 中级会员  
 
 
	积分240 
最后登录2016-10-20 | 
 
 发表于 2016-1-21 13:30:19
|
显示全部楼层 
| 本帖最后由 plabghhahacong1988 于 2016-1-21 13:40 编辑 
 我正在弄pwm.
 但是没有pwm波形的输出.
 麻烦你帮我看看.我想输出周期和占空比均可调的pwm波形,系统频率64MHz.
 
 复制代码void pwm_init(uint8 Chn)
{
   EMIOS.MCR.B.MDIS = 0;    //eMIOS模块进入正常工作模式
   EMIOS.MCR.B.GPRE = 63; //eMIOS模块全局64分频,分配后内部计数器频率为64MHz/(63+1) = 1MHz
   EMIOS.MCR.B.ETB = 0;     //禁止外部时基
   EMIOS.MCR.B.GTBE = 1;  //使能全局时基
   EMIOS.MCR.B.FRZ = 1;
   EMIOS.MCR.B.GPREN= 1; //使能全局分频器
   EMIOS.CH[Chn].CCR.B.BSL  = 3; //使用内部时钟计数器
   EMIOS.CH[Chn].CCR.B.UCPREN = 1;  //使能内部时钟分频
   EMIOS.CH[Chn].CCR.B.UCPRE = 0;  //设置通道内部时钟分频值为1
   EMIOS.CH[Chn].CCR.B.EDPOL = 0;  //匹配A时输出0,匹配B时输出1
   EMIOS.CH[Chn].CCR.B.MODE = 0x19;  //eMIOS模式为:OPWFM
   SIU.PCR[Chn + 179].B.PA  = 1;  //设置管脚通道为PWM功能
   SIU.PCR[Chn + 179].B.OBE = 1;
}
void Pwm_Output(uint8 Chn,uint32 Period, uint32 DutyCycle)
{
   EMIOS.CH[Chn].CADR.R = DutyCycle;  //设置占空比
   EMIOS.CH[Chn].CBDR.R = DutyCycle;  //设置周期
}
int main(void)
{
   pwm_init(0);  //初始化eMIOS[0]
   Pwm_Output(0,1000,200); //输出频率1KHZ,占空比20%的pwm波
}
 
 | 
 |