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