[Cortex-M0技术交流] 请问 LPC11C14的定时器和PWM 搞不清楚了

[复制链接]
 楼主| kui022 发表于 2014-11-29 16:11 | 显示全部楼层 |阅读模式
mat0~mat3 是输出引脚吗
用PWM时 会进行两次匹配 第一次翻转 第二次会复位
pc和tc 该怎么理解
cap的捕获能怎么用
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部