📄 app.c
字号:
#include "includes.h"
#define TaskStkLengh 64
OS_STK TaskStk [TaskStkLengh];
//OS_STK TaskStk1 [TaskStkLengh];
//OS_STK TaskStk2 [TaskStkLengh];
//
//OS_EVENT *TASK1;
//OS_EVENT *TASK2;
//OS_EVENT *TASK3;
void Task0(void *pdata);
//void Task1(void *pdata);
//void Task2(void *pdata);
INT8U err;
void UART0Init(void)
{
UCTL0 = CHAR + SWRST; // 8-bits stop; USART Software Reset
UTCTL0 = SSEL1 + SSEL0 + TXEPT; // MCLK; TX Buffer empty
// 115200 baud rate
UBR00 = 0x45;
UBR10 = 0x00;
UMCTL0 = 0x4A;
ME1 |= UTXE0+URXE0; // Enable USART0 TXD
P3SEL |= ( BIT4+BIT5 ); // IO
P3DIR |= BIT4; // P3.4 output direction
P3DIR &= ~BIT5; // P3.5 input direction
UCTL0 &= ~SWRST; // USART Software Reset
IE1 &= ~URXIE0; // Disable input/output interrupts
}
void UART0_SendByte(INT8U data)
{
TXBUF0 = data; // Send a byte
while( ( UTCTL0 & 0x01 ) == 0x00 ); // Wait for Tx to finish
}
int main (void)
{
OSInit( );
OSTaskCreate(Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 0);
// TASK1 = OSSemCreate(0);
// TASK2 = OSSemCreate(0);
// TASK3 = OSSemCreate(0);
OSStart ();
return 0;
}
void Task0(void *pdata)
{
WDTCTL = WDT_MDLY_32; /* 设置时钟节拍间隔为32ms */
IE1 |= BIT0; /* 开看门狗定时器中断 */
UART0Init();
//OSTaskCreate(Task1, (void *)0, &TaskStk1[TaskStkLengh-1], 1);
//OSTaskCreate(Task2, (void *)0, &TaskStk2[TaskStkLengh-1], 2);
// OSSemPost(TASK1);
while (1)
{
// OSSemPend(TASK1,10,&err);
// if(err==OS_NO_ERR)
// {
// UART0_SendByte(0x01);
// OSSemPost(TASK2);
// }
UART0_SendByte(0x01);
OSTimeDly(200);
}
}
/*
void Task1(void *pdata)
{
UART0Init();
while (1)
{
OSSemPend(TASK2,10,&err);
if(err==OS_NO_ERR)
{
UART0_SendByte(0x02);
OSSemPost(TASK3);
}
}
}
void Task2(void *pdata)
{
UART0Init();
while(1)
{
OSSemPend(TASK3,10,&err);
if(err==OS_NO_ERR)
{
UART0_SendByte(0x03);
OSSemPost(TASK1);
}
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -