本章主要介绍LPC1768的脉宽调制器PWM,通过本章的学习,可以了解到LPC1768PWM使用。 LPC1768的PWM和STM32的PWM不同,STM32的PWM是和定时器集成在一起,而LPC1768的PWM是单独的一个模块。他也可以产生单边沿或者多边沿的PWM输出,最多缠上六路单边沿的PWM,以及最多产生三路双边沿的PWM输出,也可以混合进行输出。发生匹配时,可产生对应的中断。有两路32位捕获通道可以取到定时器的瞬时值,输入捕获通道可以选择产生中断。NXP官方的LPCOPEN2.10库没有提供PWM库函数文件,本章实验用寄存器。 /************************************************************************************************ 函数名: void PWM_Init() 函数功能WM初始化, 参数:无 返回值:无 *************************************************************************************************/ void PWM_Init() {
LPC_SC->CONP|=(1<<6);//使能PWM外设功率寄存器 LPC_PINCON->INSEL4|=(1<<2);//设置P2.1为PWM2通道 LPC_PWM1->CTCR=0; //工作于定时器模式 LPC_PWM1->R=0; //预分频比例为1:5 LPC_PWM1->C=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; //配置PWM1.2的PWM占空比为15 LPC_PWM1->LER=(1<<2)|(1<<0); //锁存PWM值并立即生效 LPC_PWM1->MCR=0x02; //LPC_PWM1->TC计数到LPC_PWM1->MR0的时候TC复位 LPC_PWM1->CR=(1<<10)|(0<<2); //配置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->LER=(1<<2)|(1<<0); //锁存PWM值并立即生效 }
【12】LPC1768_PWM实验.rar
(251.15 KB, 下载次数: 96)
|