QUINTIC的pwm

最近准备用QUINTIC的PWM,把自带的PWM例程烧到板子里面去发现IO并没有PWM输出,不知道有没有试过PWM,所以想请教下问题在哪儿?

本帖最后由 FireBLE_blue 于 2015-4-21 15:30 编辑

hi,thong
你说的自带的pwm例程是否是 \FireBLE\Demo_driver\pwm 下编译而来?如是请看确认main 函数和如下代码一致

int main (void)
{
    SystemInit();

    pwm_init(PWM_CH0);
    pwm_io_config();
    //P2.7 will output pwm wave with period for 1000us and pulse for 400us
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(400, PWM_PSCAL_DIV));
    pwm_enable(PWM_CH0, MASK_ENABLE);
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(800, PWM_PSCAL_DIV));
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(1000, PWM_PSCAL_DIV));
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(0, PWM_PSCAL_DIV));
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(400, PWM_PSCAL_DIV));
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(800, PWM_PSCAL_DIV));
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(1000, PWM_PSCAL_DIV));
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(0, PWM_PSCAL_DIV));
    pwm_config(PWM_CH0, PWM_PSCAL_DIV, PWM_COUNT_US(1000, PWM_PSCAL_DIV), PWM_COUNT_US(800, PWM_PSCAL_DIV));
    pwm_enable(PWM_CH0, MASK_DISABLE);
    pwm_io_dis_config();

    pwm_init(PWM_CH1);
    pwm_io_config();
    //P2.6 will output pwm wave with period for 1500us and pulse for 1000us
    pwm_config(PWM_CH1, 119, PWM_COUNT_US(1500, 119), PWM_COUNT_US(1000, 119));
    pwm_enable(PWM_CH1, MASK_ENABLE);
    pwm_io_dis_config();

    while (1)                                /* Loop forever */
    {

    }
}

该份代码在单步仿真的情况下能得到pwm 输出,
如果你是编译后烧录进去的话,需要对代码做些小改动,至于怎么改动,请分析源码

FireBLE_blue 发表于 2015-4-20 14:41
hi,thong
你说的自带的pwm例程是否是 \FireBLE\Demo_driver\pwm 下编译而来?如是请看确认main 函数和如 …

void pwm_io_dis_config(void)
{

syscon_SetPMCR1(QN_SYSCON, P27_GPIO_23_PIN_CTRL         //P2.7 GPIO
                         | P26_GPIO_22_PIN_CTRL         //P2.6 GPIO
                         );
gpio_set_direction_field(GPIO_P27|GPIO_P26, GPIO_INPUT);

}
PWM不是输出吗,为什么这个地方的IO方向会是输入呢?

pwm_io_config();

是配合pwm io 的配置

pwm_io_dis_config();

是配合pwm io 的反配置,注意关键字眼dis = disable