打印
[技术问答]

请教nuc029lan PWM配置问题

[复制链接]
2129|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flove00|  楼主 | 2018-7-21 09:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1.配置PWM写成子程序结构PWM_Init(); PWM端口无输出
2.将配置PWM展开则PWM输出正常
请问各位大佬是什么原因导致这个问题?

void SYS_Init(void)//写成子程序形式无输出
{
        CLKInit();
        GPIOInit();
        DataInit();
        EEROM_Init();
       
        WDT_CLEAR_RESET_FLAG();
        WDT_RESET_COUNTER();

        BuzzInit();
        PWM_Init();//

        initLogic();
}

void SYS_Init(void)//展开有输出
{
        CLKInit();
        GPIOInit();
        DataInit();
        EEROM_Init();
        WDT_CLEAR_RESET_FLAG();
        WDT_RESET_COUNTER();
        BuzzInit();
       
        //PWM 配置
        GPIO_SetMode(P4, BIT0, GPIO_PMD_OUTPUT);
        GPIO_SetMode(P4, BIT2, GPIO_PMD_OUTPUT);

        /*Set Pwm mode*/
        PWMA->PCR |= PWM_PCR_CH0MOD_Msk;//自动重载

        PWMA->PCR |= PWM_PCR_CH0INV_Msk;//反向
        PWMA->PCR |= 0x02;//正常模式

        /*Set PWM Timer clock prescaler*/
        PWM_SET_PRESCALER(PWMA, PWM_CH0, 1); // Divided by 2

        /*Set PWM Timer clock divider select*/
        PWM_SET_DIVIDER(PWMA, PWM_CH0, PWM_CLK_DIV_1);

        /*Set PWM Timer duty*/
        PWMA->CMR0 = 500;

        /*Set PWM Timer period*/
        PWMA->CNR0 = 2000;

        /* Enable PWM Output pin */
        PWMA->POE |= PWM_POE_PWM0_Msk;
//                PWMA->POE |= 0xffffffff;
        /* Enable Timer period Interrupt */
        PWMA->PIER |= PWM_PIER_PWMIE0_Msk;

        /* Enable PWMB NVIC */
        NVIC_EnableIRQ((IRQn_Type)(PWMA_IRQn));

        /* Enable PWM Timer */
        PWMA->PCR |= PWM_PCR_CH0EN_Msk;


        initLogic();
}


/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function                                                                                           */
/*---------------------------------------------------------------------------------------------------------*/
int main(void)
{
                volatile uint32_t u32InitCount;
    /* Unlock protected registers */
    SYS_UnlockReg();
    /* Init System, peripheral clock and multi-function I/O */
    SYS_Init();
    /* Lock protected registers */
    SYS_LockReg();
               
       
    while(1)
                {

                }
}


沙发
flove00|  楼主 | 2018-7-21 10:17 | 只看该作者
问题找到了,但不知道原因   多开了一个PWM端口  SYS->P4_MFP = SYS_MFP_P40_PWM0;
  //  SYS->P4_MFP = SYS_MFP_P42_PWM2;
配置为独立PWM模式,配置PWM0,打开PWM0 和PWM2 但未配置PWM2

使用特权

评论回复
板凳
734774645| | 2018-7-21 21:01 | 只看该作者
恭喜楼主。我还想说换成宏替换呢

使用特权

评论回复
地板
wahahaheihei| | 2018-7-22 22:52 | 只看该作者
谢谢分享,下次我试试

使用特权

评论回复
5
静听风易| | 2018-7-26 22:29 | 只看该作者
差点吓坏我了,我真以为太诡异了。

使用特权

评论回复
6
dongliushui| | 2018-7-27 14:36 | 只看该作者
原来如此,看来每一条都要认真看清。

使用特权

评论回复
7
xuanhuanzi| | 2018-7-27 18:34 | 只看该作者
嗯,硬件是没啥问题的,一般就是软件配置,配置对了,后面操作就容易了。

使用特权

评论回复
8
xixi2017| | 2018-7-29 16:26 | 只看该作者
要注意不要重复定义好函数里的程序,不能冲突。

使用特权

评论回复
9
小明的同学| | 2018-7-30 20:37 | 只看该作者
多谢分享。

使用特权

评论回复
10
yiy| | 2018-7-31 20:07 | 只看该作者
原来如此,谢谢分享。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

54

帖子

0

粉丝