📄 app.c
字号:
#include "includes.h"
#define TASK_STK_SIZE 64 /* 定义任务堆栈大小 */
OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK Task2Stk[TASK_STK_SIZE];
void TaskStart(void *data); /* 前导声明任务(函数) */
void Task2(void *pdata);
void ClearLCD(void)
{
int i; //
for( i = 0; i < 16; i++){ // Clear LCDMEM
LCDMEM[i] = 0; //
}
}
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; /* 禁止看门狗 */
BTCTL = BT_fLCD_DIV128; // Set LCD frame freq = ACLK/128
ClearLCD();
LCDCTL = LCDSG0_3 + LCD4MUX + LCDON ; // 4mux LCD, segs0-23 enabled
P5SEL = 0xfc; // Set Rxx and COM pins for LCD
LCDMEM[5] = 0x21;
OSInit(); /* 初始化uCOS-II */
OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1], 8);
while ((IFG1 & UTXIFG0) == 0); // 当发送缓存为空时
TXBUF0 = 0X30; //发送数据到串口
OSStart(); /* 开始任务调度 */
}
void Task2 (void *pdata)
{
pdata = pdata;
//P5SEL = 0xfc; // Set Rxx and COM pins for LCD
// LCDMEM[6] = 0x06;
// P1DIR = 0x04;
// P1OUT = 0xff;
UTCTL0 = SSEL0; // UCLK = ACLK,选择时钟来源
UBR00 = 0x03; // 32k/9600 - 3.41 波特率寄存器低字节
UBR10 = 0x00; // 32k/9600 波特率寄存器高字节
UMCTL0 = 0x51; // 由于波特率计算有余数,填写波特率调整寄存器
UCTL0 = CHAR; // 数据格式为8位数据
ME1 |= UTXE0 + URXE0; // 使能串口TXD与RXD
IE1 |= URXIE0; // 让串口接收到数据后能产生中断
P2SEL |= 0x30; // 定义 P2.4,P2.5 为串口功能引脚
P2DIR |= 0x10; // 串口发送数据端口为输出,接收数据端口为输入
_EINT(); // 整个系统使能中断(开总中断)
_BIS_SR(LPM3_bits); // 初始化完毕,进入睡眠状态,主程序完毕
}
#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx(void)
{
while ((IFG1 & UTXIFG0) == 0); // 当发送缓存为空时
TXBUF0 = RXBUF0; //发送数据到串口
}
/* WDTCTL = WDT_MDLY_8;
P1SEL &= BIT2;
P1DIR |= BIT2;
while(1)
{
P1OUT ^= BIT2;
OSTimeDly(100);
}*/
void TaskStart (void *pdata)
{
pdata = pdata; /* 无任何意义,防止编译器报警 */
WDTCTL = WDT_MDLY_32; /* 设置时钟节拍间隔为32ms */
IE1 |= 0x01; /* 开看门狗定时器中断 */
/*************************************
* 应用程序初始化
*************************************/
P1SEL &= BIT0;
P1SEL &= BIT2;
P1DIR |= BIT0;
P1DIR |= BIT2;
while (1) {
/******************************************************************************************
* 测试代码
*
× 此处我们仅测试移植代码的正确,只是定时在P1.0输出高低电平,对应MSP-FET449学习板的P1.0 LED闪烁。
*
* MSP430F449
* -----------------
* /|\| XIN|-
* | | |
* --|RST XOUT|-
* | |
* | P1.0|-->LED
*
*******************************************************************************************/
P1OUT ^= BIT0;
P1OUT ^= BIT2;
OSTimeDly(10); /* 眼时10个时钟节拍,挂起本任务等待延时结束 */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -