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

📄 main.c

📁 MiniARM2200程序基础包2:脉宽调制、ADC
💻 C
字号:
/****************************************************************************
* 文 件 名: main.c
* 功    能: 用PWM5控制BUZZER,连续按压KEY1减小响声,连续按压KEY2增加响声。
* 说    明: 将跳线器JP4,JP14全部短接。
****************************************************************************/
#include "config.h"

#define BUZZER 1<<21
#define KEY1   1<<20
#define KEY2   1<<22
#define LED    1<<19

void  DelayNS(uint32  dly);

/****************************************************************************
* 函数名称: main
* 功能描述: 主函数
****************************************************************************/
int main (void)
{   uint32 duty = 1990;

    PINSEL0 = 0x00000000;                   // 设置P0为GPIO
    PINSEL1 = 0x00000400;                   // 设置P0.21为PWM5
     
    IO0DIR  = BUZZER | LED;                 // 设置GPIO方向

    PWMPR =  0x00;                          // 不分频,计数频率为Fpclk
    PWMMCR = 0x02;                          // 设置PWMMR0匹配时复位PWMTC
    PWMMR0 = 2000;                          // 设置PWM周期
    PWMMR5 = duty;                          // 设置PWM占空比
    PWMLER = 1<<0 | 1<<5;			        // PWMMR0、PWMMR5锁存
    PWMPCR = 1<<13;                         // 允许PWM5输出,单边PWM
    PWMTCR = 0x09;                          // 启动定时器,PWM使能

    while(1)
    {
        if( (IO0PIN & KEY1) == 0x00)        // 按键KEY1有效?
        {
            if(duty<2000)                   // 符合操作范围? 
            {
                duty++; 
                PWMMR5 = duty;              // 设置PWM占空比
                PWMLER = 1<<0 | 1<<5;       // PWMMR0、PWMMR5锁存
                DelayNS(2);
            }
        }
        if( (IO0PIN & KEY2) == 0x00)        //  按键KEY2有效?
        {   
            if(duty>0)                      // 符合操作范围? 
            {
                duty--; 
                PWMMR5 = duty;              // 设置PWM占空比
                PWMLER = 1<<0 | 1<<5;       // PWMMR0、PWMMR5锁存
                DelayNS(2);
            }
        } 
    }

    return 0;
}

/****************************************************************************
* 函数名称: DelayNS()
* 功能描述: 长软件延时
* 入口参数: dly		延时参数,值越大,延时越久
* 出口参数: 无
****************************************************************************/
void  DelayNS(uint32  dly)
{   uint32  i;

    for(; dly>0; dly--) 
    {
        for(i=0; i<5000; i++);
    }
}

⌨️ 快捷键说明

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