在线时间61 小时
UID3091481
注册时间2015-1-12
NXP金币25
TA的每日心情 | 无聊 2021-5-27 14:51 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]初来乍到
中级会员
 
- 积分
- 298
- 最后登录
- 2025-7-3
|
本帖最后由 烟雨梦 于 2016-7-29 11:58 编辑
参考官方EPWM的demo,通过ftm0ch1输出PWM控制背光亮度,但示波器一直没有波形出来,都是高电平,代码如下:
void PWM_Init (void)
{
SIM->PINSEL &= ~SIM_PINSEL_FTM0PS1_MASK; //FTM0CH1->PTB3:背光的PWM控制脚
SIM->SCGC |= SIM_SCGC_FTM0_MASK;//open the clock gate
FTM0->SC = 0x0;
FTM0->CONTROLS[1].CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK;
FTM0->CONTROLS[1].CnV = 1100;
/* update MOD value */
FTM0->CNT = 0;
FTM0->MOD = 9999;
/* set clock source and start the counter */
FTM_ClockSet(FTM0, FTM_CLOCK_SYSTEMCLOCK, FTM_CLOCK_PS_DIV4);
/* enable FTM2 interrupt in NVIC */
NVIC_EnableIRQ(FTM0_IRQn);
/* setup call back function for interrupt */
FTM_SetCallback(FTM0, PWM_Task);
FTM_EnableOverflowInt(FTM0);
}
uint16_t u16ChV_old, u16ChV_new;
void PWM_Task(void)
{
static uint16_t u16count;
static uint8_t u8DirMark;
// clear the flag
FTM_ClrOverFlowFlag(FTM0);
if(100 == u16count)
{
u16count = 0;
u16ChV_old = FTM0->CONTROLS[1].CnV;
if(!u8DirMark)
{
u16ChV_new = u16ChV_old + 200;
if(u16ChV_new >= FTM0->MOD)
{
u16ChV_new = FTM0->MOD - 200;
u8DirMark = 1;
}
else
{
}
}
else
{
u16ChV_new = u16ChV_old - 200;
if(u16ChV_new < 200)
{
u16ChV_new = 200;
u8DirMark = 0;
}
else
{
}
}
// update the channel value
FTM_SetChannelValue(FTM0, FTM_CHANNEL_CHANNEL1, u16ChV_new);
}
else
{
u16count++;
}
}
不只是哪里配置还有问题,求帮助
最佳答案
请问楼主使用的MCU是什么,参考的代码以及具体做了哪些的操作?
|
|