⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_init.c

📁 NXP公司 嵌入式系统竞赛 源代码
💻 C
字号:
///////////////////////////////////////////////////////////////////头文件
#include <iolpc2148.h>
#include "LPC2148_sys_cnfg.h"
////////////////////////////////////////////////////////////////////////////////
void PWM_Rudder_Init(int i)              //舵机,频率50HZ,占空比7.5%
{
  int tmp;
  tmp=Fpclk/50;
  PWMPR=0x00;                       //时钟不分频
  PWMMCR=0x02;                      //PWMMR0与PWMTC匹配时复位PWMTC
  PWMPCR=(1<<2)|                    //PWM2双边沿控制
  (1<<10);                          //使能PWM2输出
  PWMMR0=tmp;                       //PWM速率控制/计数初值
  PWMMR1=0;                         //PWM2的位置
  PWMMR2=(tmp/20)*i;                 //设置PWM2的占空比,P0.7,舵机
  
  PWMLER=0x7F;                      //锁存所有PWM匹配值
  PWMTCR=0x02;                      //复位PWMTC
  PWMTCR=0x09;                      //使能PWM
}
///////////////////////////////////////////////////////////////////////////////
void PWM_Motor_Init(int n)               //驱动电机,频率1K,占空比60%
{
  int tmp;
  tmp=Fpclk/1000;
  PWMPR=0x00;                       //时钟不分频
  PWMMCR=0x02;                      //PWMMR0与PWMTC匹配时复位PWMTC
  PWMPCR=(1<<4)|                    //PWM2双边沿控制
  (1<<12);                          //使能PWM4输出
  PWMMR0=tmp;                       //PWM速率控制/计数初值
  PWMMR3=0;                         //PWM4的位置
  PWMMR4=(tmp/20)*n;               //设置PWM4的占空比,P0.8,驱动电机
  
  PWMLER=0x7F;                      //锁存所有PWM匹配值
  PWMTCR=0x02;                      //复位PWMTC
  PWMTCR=0x09;                      //使能PWM
}
///////////////////////////////////////////////////////////////////////////////
void Search_Line(void)
{
  if(IO1PIN==0x77<<16)
  {
    PWM_Rudder_Init(3);
    PWM_Motor_Init(16);
  }
  else if(IO1PIN==0x6F<<16||IO1PIN==0x67<<16)
  {
    PWM_Rudder_Init(3);
    PWM_Motor_Init(14);
  }
  else if(IO1PIN==0x5F<<16||IO1PIN==0x4F<<16)
  {
    PWM_Rudder_Init(3);
    PWM_Motor_Init(12);
  }
  else if(IO1PIN==0x3F<<16||IO1PIN==0x1F<<16)
  {
    PWM_Rudder_Init(4);
    PWM_Motor_Init(12);
  }
  else if(IO1PIN==0x7A<<16||IO1PIN==0x73<<16)
  {
    PWM_Rudder_Init(4);
    PWM_Motor_Init(14);
  }
  else if(IO1PIN==0x7D<<16||IO1PIN==0x79<<16)
  {
    PWM_Rudder_Init(3);
    PWM_Motor_Init(10);
  }
  else if(IO1PIN==0x7E<<16||IO1PIN==0x7C<<16) 
  {
    PWM_Rudder_Init(3);
    PWM_Motor_Init(10);
  } 
}
///////////////////////////////////////////////////////////////////////////////

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -