📄 main.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 + -