打印
[技术问答]

PWM与定时器不能同是开?

[复制链接]
1121|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liu210802|  楼主 | 2016-5-26 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在调试100时遇到PWM与定时器只能使用一个的问题,两个外设同时用在调试是程序就会卡死
代码如下:基本使用的都是官方的库函数,请大家帮我看看问题出在什么地方
#include "nano1xx.h"
//#include <stdio.h>
#include "nano1xx_gpio.h"
#include "nano1xx_pwm.h"
#include "nano1xx_timer.h"
void GPIOInit(void);
void TimerInit(void);
void PWMInit(uint8_t pwmch);
void delay(uint16_t cnt);
int32_t main()
{
                SystemInit();
                GPIOInit();
                PWMInit(0);               
                TimerInit();
                TIMER_Start(TIMER1);
                PWM_Enable(0);
                while(1)
                {
                                GPIO_ClrBit(GPIOB,10);        
                }

}       
void GPIOInit(void)
{
        GPIO_Open(GPIOB, GPIO_PMD_PMD10_OUTPUT, GPIO_PMD_PMD10_MASK);
}
void PWMInit(uint8_t pwmch)
{
                S_DRVPWM_TIME_DATA_T PWMcfg;
                GCR->PA_H_MFP = (GCR->PA_H_MFP & ~(PA12_MFP_MASK | PA13_MFP_MASK)) |
                                                        PA12_MFP_PWM0_CH0 | PA13_MFP_PWM0_CH1;
                GPIO_Open(GPIOA, GPIO_PMD_PMD12_OUTPUT|GPIO_PMD_PMD13_OUTPUT, GPIO_PMD_PMD12_MASK|GPIO_PMD_PMD13_MASK);
                PWM_Init(pwmch);
                PWMcfg.u8Mode = PWM_CTL_CHMOD_AUTO_RELOAD;
                PWMcfg.u8PreScale = 1;                // actually 1 + 1
                PWMcfg.u8Div = PWM_CLKSEL_CLKSEL_DIV1;
                PWMcfg.u32Cn = 6000000 / 500 - 1;                                //set FREQ
                PWMcfg.u16Cm = (PWMcfg.u32Cn / 10)*3;                //set PWM_DUTY
                PWMcfg.u8Inv = 0;
                PWM_SetClk(pwmch, &PWMcfg);
                PWM_ConfigOutput(0, 1);
                PWM_EnableInt(0);
}
void TimerInit()
{
//        TIMER_Init(TIMER0, 11, 10000, TIMER_CTL_MODESEL_PERIODIC);
        TIMER_Init(TIMER1, 11, 10000, TIMER_CTL_MODESEL_PERIODIC);
//        TIMER_EnableInt(TIMER0, TIMER_IER_TMRIE);
        TIMER_EnableInt(TIMER1, TIMER_IER_TMRIE);
}
void delay(uint16_t cnt)
{
        uint16_t i;       
        for(i = 0;i < cnt;i++);
}
沙发
wahahaheihei| | 2016-5-26 15:19 | 只看该作者
好多人都说共用一个定时器是不行的,你还是分别用一个就可以了吧。

使用特权

评论回复
板凳
liu210802|  楼主 | 2016-5-26 15:27 | 只看该作者
wahahaheihei 发表于 2016-5-26 15:19
好多人都说共用一个定时器是不行的,你还是分别用一个就可以了吧。

没看明白,哪里公用一个定时器了?请说的详细写以前没用过cotex-M0的片子

使用特权

评论回复
地板
Thethree| | 2016-5-26 21:03 | 只看该作者
两个好像不能够同时用一个定时器

使用特权

评论回复
5
天灵灵地灵灵| | 2016-5-26 23:52 | 只看该作者
应该说PWM的时候是会使用到定时器的,而使用的这个定时器你就不能再去玩定时器中断了,冲突了。

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝