?? main.c
字號:
/****************************************************************************
* 文 件 名:main.c
* 功 能:使用PWM5控制電機轉速,共4檔。
* 說 明:將跳線JP4,JP9短接。
****************************************************************************/
#include "config.h"
#define KEY 1<<20 // 定義按鍵
#define P0_22 1<<22 // GPIO
/* PWM周期及占空比設置值 */
#define CYCLE_DATA 200000 // 定義周期
#define DUTY_CYCLE_DATA 20000 // 定義基本占空比參數
void DelayNS(uint32 dly);
/****************************************************************************
* 名稱:main()
* 功能:主函數
****************************************************************************/
int main(void)
{ uint8 i = 1;
PINSEL1 = 0x01 << 10; // 設置PWM5連接到P0.21管腳
IO0DIR = P0_22;
IO0CLR = P0_22; // 將P0.22置低,配合PWM控制
PWMPR = 0x00; // 不分頻,計數頻率為Fpclk
PWMMCR = 0x02; // 設置PWMMR0匹配時復位PWMTC
PWMMR0 = CYCLE_DATA; // 設置PWM周期
PWMMR5 = DUTY_CYCLE_DATA; // 設置PWM占空比
PWMLER = 1 << 0 | 1<< 5; // PWMMR0、PWMMR5鎖存
PWMPCR = 1 << 13; // 允許PWM5輸出,單邊PWM
PWMTCR = 0x09; // 啟動定時器,PWM使能
while(1)
{
PWMMR5 = DUTY_CYCLE_DATA*i; // 設置PWM占空比
PWMLER = 1 << 0 | 1<< 5; // PWMMR0、PWMMR5鎖存
PWMTCR = 0x09; // 啟動定時器,PWM使能
if( (IO0PIN&KEY) == 0 )
{
DelayNS(20);
if( (IO0PIN&KEY) == 0 )
{
i = i+3;
while( (IO0PIN&KEY) == 0 );
if(i >= 11) i = 1;
}
}
}
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 + -