LPC1768 PWM单边沿触发

   在总结孙安青老师编著的  《ARM Cortex-M3嵌入式开发实例详解——基于NXP LPC1768》的基础上写下这篇很基础的PWM单边沿触发,很感谢孙老师的书,在此表示感谢。同时我的代码是在开发板的历程上修改的,主要是验证电路板上PWM。由于我的开发板的P2.1(74引脚)引脚接的是LED,所以我就选用该引脚作为PWM的输出。以下是我pwm.c代码:

pwm.c

*********************************************************************************************************/
#include "lpc17xx.h"
#include "pwm.h"


#define PCLK 25000000                                        //外设频率为25MHz,可以在手册功率中知道
unsigned  long PulseLength = 20;                        //PWM占空比变量,在此修改占空比


/*********************************************************************************************************
** Function name:       uint32_t PWM1_Init(void) 
** Descriptions:       初始化单边沿PWM输出
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void PWM1_Init( void )
{
 LPC_PINCON->PINSEL4 = (1 << 2);        //配置P2.1引脚为PWM1.2功能
    LPC_PWM1->CTCR = 0;         //PWM1工作于定时模式
  LPC_PWM1->PR = 0;       //PWM1预分频比为1:1
 LPC_PWM1->PC = 0;              
          LPC_PWM1->TC = 0;                                //定时器设置为0
  LPC_PWM1->TCR = 0x02;                        //复位PWM1定时器
 //以下很重要,可以查看手册P468   PWM触发器的置位和复位输入
 LPC_PWM1->MR0 = PCLK - 1;                //配置PWM1.2的PWM频率为1HZ (可以修改频率)   匹配位置都是MR0

  LPC_PWM1->MR2 = (LPC_PWM1->MR0 + 1) * PulseLength / 100 - 1;//匹配PWM1.5的PWM的占空比为20%(可以修改)  复位位置的MR2(此处的2是根据选择的PWM不同不同,我这里是2,如果选择是PWM1.5则,此处的2是就改为5,查看手册P468)

   LPC_PWM1->LER =  (1 << 2);                         //锁存PWM值并生效,需要改动此处
   LPC_PWM1->MCR = 0x02;                     //MR0与TC匹配时复位TC,不需要修改
           LPC_PWM1->PCR =(0 << 2)|(1 << 10);           //配置PWM1.2为单边为输出,并使能输出,需要修改此处

   LPC_PWM1->TCR = 0x09;                                //使能PWM1.2定时器并使能PWM功能,不需要改动此处

}

然后就是主函数

main.c

#include "lpc17xx.h"
#include "pwm.h"

//LED函数
void LED_config(void)
{
LPC_GPIO2->FIODIR |= 0x0000000ff; 
}
/*********************************************************************************************************
** Function name:       int main (void)
** Descriptions:       主函数
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
int main (void)
{    
SystemInit();//系统初始化
        PWM1_Init();//PWM初始化
LED_config();

while(1);
}


/******************************************************************************
**                            End Of File

******************************************************************************/

实验验证可以。以上就是LPC1768PWM单边沿输出简单代码。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值