📄 app.c
字号:
#include "includes.h"
#define TASK_STK_SIZE 64 /* 定义任务堆栈大小 */
OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK Task1Stk[TASK_STK_SIZE];
OS_STK UARTStk[TASK_STK_SIZE];
void TaskStart(void *data); /* 前导声明任务(函数) */
void Task1(void *data);
void UART_Task(void *pdata);
//OS_EVENT *TASK1_EVENT;
OS_EVENT *UART_EVENT;
//====================================================================================//
//函数名:InitSys
//功能:时钟初始化函数
//参数:无
//返回值:无
//编写:
//时间:07.11.22
//修改:
//===================================================================================//
void InitSys(void)
{
INT8U time; //key,temp=0,,i
//BCSCTL1 |=XTS+XT2OFF; //+DIVA_3ACLK使用外部高频时钟,不分频
BCSCTL1 &= ~XT2OFF;
BCSCTL2 |= SELM_2+DIVM_0+SELS+DIVS_0; //MCLK使用LFTX2CLK,1分频
//SMCLK使用LFTX2CLK,1分频
do
{
IFG1&=~OFIFG;
time=0xFF;
while(time--); //OSCFault = 1 time
}
while((IFG1&OFIFG)==OFIFG); //等待外部时钟稳定
}
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; /* 禁止看门狗 */
InitSys();
OSInit(); /* 初始化uCOS-II */
OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
OSTaskCreate(Task1, (void *)0,&Task1Stk[TASK_STK_SIZE - 1], 1);
OSTaskCreate(UART_Task, (void *)0, &UARTStk[TASK_STK_SIZE - 1],2);
UART_EVENT = OSSemCreate(0); //建立信号量
_EINT();
OSStart(); /* 开始任务调度 */
}
void TaskStart (void *pdata)
{
pdata = pdata; /* 无任何意义,防止编译器报警 */
INT8U temp = 0xAA;
WDTCTL = WDT_MDLY_1; /* 设置时钟节拍间隔为1ms */
IE1 |= 0x01; /* 开看门狗定时器中断 */
//看门狗定时器是延时依据,很重要
/*************************************
* 应用程序初始化
*************************************/
//P1SEL &= ~BIT0;
// P1DIR |= BIT0;
while (1)
{
//P1OUT |= BIT0;
OSTimeDly(2000); /* 延时15个时钟节拍,挂起本任务等待延时结束 2s*/
UART_Send(&temp,1);
}
}
void Task1(void *pdata)
{
pdata = pdata;
INT8U temp = 0x33;
while(1)
{
OSTimeDly(2000); //延时2s
UART_Send(&temp,1);
// P1OUT &= ~BIT0;
}
}
void UART_Task(void *pdata)
{
pdata = pdata;
INT8U err,temp = 0x55;
UART_Init(); //串口初始化
while(1)
{
OSSemPend(UART_EVENT,0,&err);
UART_Send(&temp,1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -