📄 main.c
字号:
#include "config.h"
#if 0
#define LEDCON 0x10000000
// P0.7为蜂鸣器的控制I/O
#define TEST_GPIO0 18
#define TEST_GPIO1 20
// LED控制宏函数定义。LED1--LED4的控制I/O为P2.28--P2.31
#define LED_IOCON 0xF0000000
#define TaskStkLengh 64 //定义用户任务堆栈长度
OS_STK TaskStk0[TaskStkLengh]; //Define the Task0 stack 定义用户任务0的堆栈
OS_STK TaskStk1[TaskStkLengh]; //Define the Task1 stack 定义用户任务1的堆栈
void Timer0_Exception(void)
{
T0IR = 0x01;
VICVectAddr = 0; //interrupt close 通知中断控制器中断结束
OSTimeTick();
}
void Timer0Init(void)
{
T0IR = 0xffffffff;
T0TC = 0;
T0TCR = 0x01;
T0MCR = 0x03;
T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
}
void VICInit(void)
{
extern void IRQ_Handler(void);
extern void Timer0_Handler(void);
VICIntEnClr = 0xffffffff;
VICDefVectAddr = (INT32U)IRQ_Handler;
VICVectAddr0 = (INT32U)Timer0_Handler;
VICVectCntl0 = (0x20 | 0x04);
VICIntEnable = 1 << 4;
}
void Task1(void *pdata)
{
while (1)
{
OSTimeDly(OS_TICKS_PER_SEC*5); // 延时10S
IO0CLR = 1<<TEST_GPIO1; // 控制蜂鸣器响
OSTimeDly(OS_TICKS_PER_SEC*5);
IO0SET = 1<<TEST_GPIO1;
}
}
void Task0(void *pdata)
{
TargetInit ();
PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 4 ) ) ); //TEST_GPIO1
IO0DIR = IO0DIR | ( 0x01 << TEST_GPIO1 );
PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 8 ) ) ); //TEST_GPIO2
IO0DIR = IO0DIR | ( 0x01 << TEST_GPIO0 );
// 建立任务1(用于蜂鸣器控制)
OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);
while (1)
{
OSTimeDly(OS_TICKS_PER_SEC/2); // 延时10S
IO0CLR = 1<<TEST_GPIO0; // 控制蜂鸣器响
OSTimeDly(OS_TICKS_PER_SEC/2);
IO0SET = 1<<TEST_GPIO0;
}
}
int main (void)
{
VICInit();
Timer0Init();
OSInit ();
OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2);
OSStart ();
#if 0
IO2DIR = LEDCON;
while(1){
IO2SET = 1<<28;
delay();
IO2CLR = 1<<28;
delay();
}
#endif
return 0;
}
#endif
void delay (void)
{ /* Delay function */
unsigned int cnt;
for(cnt=0;cnt<200000;cnt++); /* Delay */
}
#define TEST_GPIO1 18
#define TEST_GPIO2 20
int main (void)
{
PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 4 ) ) ); //TEST_GPIO1
IO0DIR = IO0DIR | ( 0x01 << TEST_GPIO1 );
PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 8 ) ) ); //TEST_GPIO2
IO0DIR = IO0DIR | ( 0x01 << TEST_GPIO2 );
while(1){
IO0SET = 1<<TEST_GPIO1;
IO0SET = 1<<TEST_GPIO2;
delay();
IO0CLR = 1<<TEST_GPIO1;
IO0CLR = 1<<TEST_GPIO2;
delay();
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -