×
单片机 > 单片机程序设计 > 详情

ARM7入门14,脉宽调制PWM

发布时间:2020-05-28 发布时间:
|

每次点一下按键,就改变一次占空比

主程序:

/*******************************************************************************
*File: Main.c
*功能: 使用PWM6输出PWM信号,通过滤波电路实现DAC转换.由KEY1控制PWM占空比,每按一次
*      按键将会改变一次PWM的占空比
*******************************************************************************/
#include "config.h"
#define   KEY1   0x00004000        /*P0.14引脚连接KEY1*/

/*******************************************************************************
*名称: WaitKey()
*功能: 等待一个有效按键,有去抖功能
*******************************************************************************/
void WaitKey(void)
{ uint32 i;

  while(1)
  { while((IO0PIN&KEY1)!=0);                 //等待KEY1键按下
    for(i=0;i<50;i++);                      //延时去抖
    if((IO0PIN&KEY1)==0)break;
  }
    while((IO0PIN&KEY1)==0);                   //等待KEY1键放开
}
/*******************************************************************************
*名称: main()
*功能: 使用PWM6输出占空比可调的PWM波形
*******************************************************************************/
int main(void)
{ uint32  pwmdata;                        //PWM占空比控制变量
  PINSEL0=0x00080000;                     //设置PWM6连接到P0.9引脚
  PINSEL1=0x00000000;                     //其他引脚设置为GPIO
  TargetInit();                           //PWM初始化
  pwmdata=34560;
  while(1)
  {  PWMMR0=69120;                         //设置PWM周期
     PWMMR6=pwmdata;                      //设置PWM占空比
     PWMLER=0x41;                         //PWMMR0,PWMMR6锁存,更新PWM占空比
     WaitKey();                           //等待按键
     pwmdata+=1000;                        //改变PWM占空比控制变量
     if(pwmdata>=69120)pwmdata=0;
  }
}
初始化程序:

/*********************************************************************************************************
** 函数名称: TargetInit
** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变

********************************************************************************************************/
        void TargetInit(void)
{
    PWMPR=0x00;                      //不分频,计数频率为Fpclk
  PWMMCR=0x02;                     //设置PWMMR0匹配时复位PWMTC
  PWMMR0=69120;                     //设置PWM周期
  PWMMR6=34560;                     //设置PWM占空比
  PWMLER=0x41;                     //PWMMR0,PWMMR6锁存
  PWMPCR=0x4000;                   //允许PWM6输出,单边PWM
  PWMTCR=0x09;                     //启动定时器,PWM使能
 /* 添加自己的代码 */
}

关键字:ARM7入门  脉宽调制  PWM 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会