LPC1768用官方库中用寄存器开启两个硬件PWM

第一次使用LPC芯片。在NXP官网上面下载了官方库函数如下图
在这里插入图片描述
但是在使用过程中发现该库很多东西都不齐全,比如说硬件pwm,是的,连这个都没有,然后当我想要移植在网上下载的寄存器硬件PWM列子进去的时候,却发现移植不了。原因是因为寄存器编程使用的头文件LPC17xx.h和官方库文件大量重复导致报错,尝试过注释掉重复的内容,但是结果是报错从30个变成117个。
确实有被气到,因此决定自己在官方库的基础上写寄存器开启PWM。遇到有些坑,比如说官方库只给了PWM的基地址而没有映射出来导致无法调用。。等等,需要自己去查阅芯片手册然后重新给他加上。
最终成功开启两个硬件PWM。很好用。
代码如下:
#include “board.h”
#include “PWM.h”
void PWM_Init()
{

LPC_SYSCTL->PCONP|=(1<<6);//ʹÄÜPWMÍâÉ蹦ÂʼĴæÆ÷
LPC_IOCON->PINSEL[4] = (1<<2)|(1<<4);

LPC_PWM1->CTCR=0;	//¹¤×÷ÓÚ¶¨Ê±Æ÷ģʽ
LPC_PWM1->PR=0;		//Ô¤·ÖƵ±ÈÀýΪ1:5
LPC_PWM1->PC=0;
LPC_PWM1->TC=0;

LPC_PWM1->MR0=2500-1; //ÅäÖÃPWMƵÂÊΪ10kHz pclk/2500-1=10khz
LPC_PWM1->MR2=(LPC_PWM1->MR0+1)(15)/100-1; //ÅäÖÃPWM2.1µÄPWMÕ¼¿Õ±ÈΪ15
LPC_PWM1->MR3=(LPC_PWM1->MR0+1)
(15)/100-1; //ÅäÖÃPWM2.2µÄPWMÕ¼¿Õ±ÈΪ15

LPC_PWM1->LER=(1<<2)|(1<<0)|(1<<3);	//Ëø´æPWMÖµ²¢Á¢¼´ÉúЧ

LPC_PWM1->MCR=0x02;				//LPC_PWM1->TC¼ÆÊýµ½LPC_PWM1->MR0µÄʱºòTC¸´Î»

LPC_PWM1->PCR=(1<<10)|(0<<2)|(1<<11)|(0<<3);	//ÅäÖÃPWM1.2Ϊµ¥±ßÊä³ö,²¢Ê¹ÄÜ

LPC_PWM1->TCR=(1<<3)|(1<<0);	//ʹÄÜPWM1¶¨Ê±Æ÷²¢Ê¹ÄÜPWM¹¦ÄÜ

}

/************************************************************************************************
º¯ÊýÃû: void PWM_SET(uint16_t duty )
º¯Êý¹¦ÄÜ:ÉèÖÃÕ¼¿Õ±È
²ÎÊý:duty Õ¼¿Õ±È
·µ»ØÖµ:ÎÞ
*************************************************************************************************/
void PWM_SET(uint16_t duty ){

LPC_PWM1->MR2=(LPC_PWM1->MR0+1)*duty/100-1; //duty¾ÍÊÇÕ¼¿Õ±È
LPC_PWM1->MR3=(LPC_PWM1->MR0+1)*duty/100-1; //ÅäÖÃPWM2.2µÄPWMÕ¼¿Õ±ÈΪ15
LPC_PWM1->LER=(1<<2)|(1<<0)|(1<<3); //Ëø´æPWMÖµ²¢Á¢¼´ÉúЧ
}

有问题的可以联系我

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值