打印
[Cortex-M0技术交流]

nano130板PWM波的问题

[复制链接]
1747|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangch_sh|  楼主 | 2013-5-21 22:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我获得一块nano130板,想做PWM波实验,不成功。
贴一下部分程序:
void TM0_Init(void)
{                     
/* Step 1. Enable and Select Timer clock source */
        CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_TMR0_MASK) | CLK_CLKSEL1_TMR0_HXT;        //Select 12Mhz for Timer0 clock source
        CLK->APBCLK |= CLK_APBCLK_TMR0_EN;                //Enable Timer0 clock source
/* Step 2. Select Operation mode */        
        TIMER0->CTL = (TIMER0->CTL & ~TIMER_CTL_MODESEL_MASK) | TIMER_CTL_MODESEL_PERIODIC; //Select periodic mode for operation mode
/* Step 3. Select Time out period = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
        //不分频
    TIMER0->PRECNT=0;                        // Set Prescale [0~255]
        TIMER0->CMPR = 0xffff;                // Set TCMPR [0~16777215]
                                                                // (1/12000000)*(255+1)*(46875) = 1HZ
/* Step 4. Enable interrupt */
        TIMER0->ISR = TIMER0->ISR;                //Write 1 to clear for safty
        TIMER0->IER = TIMER_IER_TMRIE;                        
        NVIC_EnableIRQ(TMR0_IRQn);        //Enable Timer0 Interrupt
/* Step 5. Enable Timer module */
        TIMER0->CTL |= TIMER_CTL_TMREN;                //Enable Timer0
}
void PWM_Init()
{
  CLK->APBCLK|=0X00100000;
  PWM0->PRES=2;     //预分频为1
  PWM0->CLKSEL=4;     //1分频
  PWM0->CTL=0X000D;     //连续模式,反相关,使能PWM定时器0开始运行
  PWM0->INTEN=1;    //中断禁止
  PWM0->INTSTS=1;    //写1清中断标志
  PWM0->OE=1;      //使能通道0
  PWM0->DUTY0=0X40008000;   //占空比50%
  
}
使用PWM0的0通道,测板子上JP16的79腿,没波形。请高手指教,谢谢!

相关帖子

沙发
缥缈九哥| | 2013-5-22 07:14 | 只看该作者
代码有点多,不一一帮助你审核了。自己与BSP包对照一下。时钟,IO,有没有配置对?

使用特权

评论回复
板凳
wangch_sh|  楼主 | 2013-5-22 09:48 | 只看该作者
我感觉没什么错,查不出来呀。哪位大侠提供一个例程?谢谢!

使用特权

评论回复
地板
wangch_sh|  楼主 | 2013-5-22 12:09 | 只看该作者
高手支招啊!

使用特权

评论回复
5
wangch_sh|  楼主 | 2013-5-22 15:33 | 只看该作者
怎么那么少人关注呢?

使用特权

评论回复
6
elec921| | 2013-7-7 10:21 | 只看该作者
IO初始化了吗?

PWM输出打开了吗?

占空比设为不是0了吗?

太多疑问,需要你自己去确认

可以先看看TRM。需要哪些操作步骤,然后一步一步对

使用特权

评论回复
7
wangch_sh|  楼主 | 2013-7-7 12:04 | 只看该作者
谢谢,已经搞好了。

使用特权

评论回复
8
DLF5| | 2013-7-7 12:56 | 只看该作者
说说是什么问题?借鉴一下。

使用特权

评论回复
9
缥缈九哥| | 2013-7-7 13:21 | 只看该作者
BSP包里的就是例子。还到处找呀?

使用特权

评论回复
10
wangch_sh|  楼主 | 2013-7-7 14:53 | 只看该作者
具体问题我忘记了。代码如下:
        SYSCLK->APBCLK.PWM01_EN=1;
        SYS->IPRSTC2.PWM03_RST=0;
        SYS->GPAMFP.PWM0_AD13=1;
    PWMA->PPR.CP01=1;                        //时钟分频器0
    PWMA->CSR.CSR0=0;                        //时钟源2分频
        PWMA->PCR.CH0MOD=1;                        //自动重载模式
        PWMA->PCR.CH0EN=1;                        //使能PWM定时器运行
        PWMA->PCR.DZEN01=0;         //禁用死区
        PWMA->PCR.CH0INV=0;                        //反向禁用
        PWMA->CNR0=50000;                //周期寄存器
        PWMA->CMR0=100;                //占空比寄存器
        PWMA->POE.PWM0=1;                        //PWM输出使能
    ;
   
    while (1)
    {      
      for(i=0;i<60000;i++);
          tmp+=100;
          PWMA->CMR0=tmp;
          if(tmp>50000)
                  tmp=100;  
    }

使用特权

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

本版积分规则

个人签名:为江山踏坏了乌骓马,为社稷拉断了宝雕弓。

318

主题

2817

帖子

5

粉丝