在线时间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波
- }
复制代码
|
|