📄 main.c
字号:
/*********************************************************************
* SEGGER MICROCONTROLLER GmbH & Co KG *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1995 - 2008 SEGGER Microcontroller GmbH & Co KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* embOS * Real time operating system for microcontrollers *
* *
* *
* Please note: *
* *
* Knowledge of this file may under no circumstances *
* be used to write a similar product or a real-time *
* operating system for in-house use. *
* *
* Thank you for your fairness ! *
* *
**********************************************************************
* *
* embOS version: 3.60a *
* *
**********************************************************************
----------------------------------------------------------------------
File : Main.c
Purpose : Skeleton program for OS
-------- END-OF-HEADER ---------------------------------------------
*/
#include "RTOS.h"
#include "BSP.h"
#include "msp430.h"
#define EVENT_KEYPRESSED (0x01)
#define EVENT_USART_RXD (0x11)
OS_STACKPTR int StackHP[128], StackLP[128]; /* Task stacks */
OS_TASK TCBHP, TCBLP; /* Task-control-blocks */
static void HPTask(void) {
OS_U8 MyEvent;
while (1) {
OS_Delay (100);
UCA0TXBUF = 0x5A;
// MyEvent = OS_WaitEvent ( EVENT_USART_RXD );
// if ( MyEvent & EVENT_USART_RXD )
// {
// BSP_SetLED(1);
// OS_Delay (20);
// // OS_SendString("HP Task Receive a Msg.\n");
// BSP_ClrLED(1);
// }
}
}
static void LPTask(void) {
OS_U8 MyEvent;
while (1) {
MyEvent = OS_WaitEvent ( EVENT_KEYPRESSED );
if ( MyEvent & EVENT_KEYPRESSED )
{
OS_Delay (2);
if ( ( P1IN & BIT2 ) == 0 )
{
// UCA0TXBUF = 0x5A;
BSP_SetLED(0);
OS_Delay (20);
BSP_ClrLED(0);
}
}
}
}
/*********************************************************************
*
* main
*
*********************************************************************/
int main(void) {
OS_IncDI(); /* Initially disable interrupts */
OS_InitKern(); /* initialize OS */
OS_InitHW(); /* initialize Hardware for OS */
BSP_Init();
BSP_ClrLED(0);BSP_ClrLED(1);
// /* You need to create at least one task here ! */
// OS_CREATETASK(&TCBHP, "HP Task", HPTask, 100, StackHP);
// OS_CREATETASK(&TCBLP, "LP Task", LPTask, 50, StackLP);
// OS_Start(); /* Start multitasking */
// return 0;
_EINT();
while(1)
{
LPM0;
}
}
/***** EOF ********************************************************/
#pragma vector = PORT1_VECTOR
__interrupt void Port1_ISR(void)
{
OS_EnterInterrupt();
OS_SignalEvent(EVENT_KEYPRESSED, &TCBLP);
P1IFG &= ~BIT2; // P1.2 IFG cleared
OS_LeaveInterrupt();
}
//#if (OS_UART == -1)
/*********************************************************************
*
* OS_ISR_tx()
* embOS UART tx interrupt handler
*/
#pragma vector = USCIAB0TX_VECTOR
__interrupt void OS_ISR_tx(void) {
OS_EnterInterrupt();
IFG2 &= ~( UCA0TXIFG + UCB0TXIFG );
OS_LeaveInterrupt();
}
/*********************************************************************
*
* OS_ISR_rx()
* embOS UART rx interrupt handler
*/
#pragma vector = USCIAB0RX_VECTOR
__interrupt void OS_ISR_rx(void) {
OS_EnterNestableInterrupt(); /* We will enable interrupts */
OS_SignalEvent(EVENT_USART_RXD, &TCBHP);
IFG2 &= ~( UCA0RXIFG + UCB0TXIFG );
OS_LeaveNestableInterrupt();
}
//#endif
/***** EOF ********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -