打印
[Cortex-M0技术交流]

请问 LPC11C14的定时器和PWM 搞不清楚了

[复制链接]
2018|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kui022|  楼主 | 2014-11-29 16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
kui022|  楼主 | 2014-11-29 16:13 | 只看该作者
寄存器比较多 不知该怎么用了
为什么NXP M0会有这么麻烦
被搞晕了

谢谢大侠。。。

使用特权

评论回复
板凳
kui022|  楼主 | 2014-11-29 17:27 | 只看该作者
在论坛找到了。。。。。。。。。
void T16B0M0_PWM_Init(void)
{
        if((duty>=100)&&(duty<=0))return;//如果占空比值不是1~99中的数,退出函数
        LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7);        //使能TIM16B0时钟
        LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);  // 使能IOCON时钟
        LPC_IOCON->PIO0_8 &= ~0x07;
        LPC_IOCON->PIO0_8 |= 0x02;              //把P0.8脚设置为MAT0
        LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16);  // 禁能IOCON时钟,不关也可以,关了省电,还可以提高程序稳定性

        LPC_TMR16B0->TCR = 0x02;                  //复位定时器(bit1:写1复位)
        LPC_TMR16B0->PR  = SystemAHBFrequency/1000000-1;                  //1微秒TC+1
        LPC_TMR16B0->PWMC= 0x01;                  //设置MAT0为PWM输出引脚
        LPC_TMR16B0->MCR = 0x02<<9;   //设置MR3匹配时复位TC,也就是把MR3当做周期寄存器
        LPC_TMR16B0->MR3 = cycle;                  //设置周期
        LPC_TMR16B0->MR0 = cycle/100*(100-duty);      //设置占空比
        LPC_TMR16B0->TCR = 0x01;                        //启动定时器
}

void T16B0M0_PWM_SET(void)
{
        if((duty>=100)&&(duty<=0))return;//如果占空比值不是1~99中的数,退出函数
        LPC_TMR16B0->MR0 = cycle/100*(100-duty);      //设置占空比

使用特权

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

本版积分规则

2

主题

6

帖子

0

粉丝