?? main.c
字號:
/*******************************************************************************
*File: Main.c
*功能: 使用PWM6輸出PWM信號,由KEY1控制PWM占空比,每按一次
* 按鍵將會改變一次PWM的占空比
*******************************************************************************/
#include "config.h"
#define KEY1 0x00004000 /*P0.14引腳連接KEY1*/
#define TASK_STK_SIZE 64
OS_STK Main_TaskStk[TASK_STK_SIZE];
OS_STK Task0Stk[TASK_STK_SIZE];
void Main_Task(void *data);
void Task0(void *data);
/*******************************************************************************
*名稱: main()
*功能: 主函數,包括任務初始化及任務建立
*******************************************************************************/
int main (void)
{
OSInit();
OSTaskCreate(Main_Task, (void *)0, &Main_TaskStk[TASK_STK_SIZE - 1], 0);
OSStart();
return 0;
}
/*******************************************************************************
*名稱: Main_Task()
*功能: 主任務,輸出PWM
*******************************************************************************/
void Main_Task(void *pdata)
{ uint32 pwmdata; //PWM占空比控制變量
pdata=pdata;
PINSEL0=0x00080000; //設置PWM6連接到P0.9引腳
PINSEL1=0x00000000; //其他引腳設置為GPIO
TargetInit(); //目標板初始化
OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1],2);
pwmdata=1382;
while(1)
{ PWMMR0=2765; //設置PWM周期
PWMMR6=pwmdata; //設置PWM占空比
PWMLER=0x41; //PWMMR0,PWMMR6鎖存,更新PWM占空比
pwmdata+=100; //改變PWM占空比控制變量
if(pwmdata>=2764)pwmdata=0;
OSTaskSuspend(OS_PRIO_SELF); }
}
/*******************************************************************************
*名稱: Task0()
*功能: 按鍵控制
*******************************************************************************/
void Task0(void *pdata)
{ uint32 i;
pdata=pdata;
while(1)
{ while((IOPIN&KEY1)!=0); //等待KEY1鍵按下
for(i=0;i<50;i++); //延時去抖
if((IOPIN&KEY1)==0)break;
}
while((IOPIN&KEY1)==0); //等待KEY1鍵放開
OSTaskResume(0);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -