📄 application.c
字号:
#include "includes.h"
#include "serial.h"
#define TASK_STK_SIZE 64 /* 定义任务堆栈大小 */
OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK TaskStartStk1[TASK_STK_SIZE];
void TaskStart(void *pdata); /* 前导声明任务(函数) */
void TaskB(void *pdata);
void SetDCO(unsigned char Mul)//输出频率为 32768*2*Mul
{
SCFQCTL=(Mul-1)&0x7f;
SCFI0|=FN_3;
SCFI0|=FLLD0;
FLL_CTL0=XCAP18PF+DCOPLUS;//设置DCO+为1,
}
unsigned char buf[20];
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; /* 禁止看门狗 */
OSInit(); /* 初始化uCOS-II */
SetDCO(75);
UartInit(38400);
OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
OSTaskCreate(TaskB, (void *)0, &TaskStartStk1[TASK_STK_SIZE - 1], 1);
OSStart(); /* 开始任务调度 */
}
void TaskB(void *pdata)
{
pdata=pdata;
WDTCTL = WDT_MDLY_8;
IE1 |= 0x01;
P6DIR |= BIT1;
while(1)
{
P6OUT ^= BIT1;
UartWrite(buf,10);
OSTimeDly(4);
}
}
void TaskStart (void *pdata)
{
pdata = pdata; /* 无任何意义,防止编译器报警 */
WDTCTL = WDT_MDLY_8; /* 设置时钟节拍间隔为32ms */
IE1 |= 0x01; /* 开看门狗定时器中断 */
/*************************************
* 应用程序初始化
*************************************/
// P1SEL &= BIT0;
P6DIR |= BIT2;
while (1) {
/******************************************************************************************
* 测试代码
*
× 此处我们仅测试移植代码的正确,只是定时在P1.0输出高低电平,对应MSP-FET449学习板的P1.0 LED闪烁。
*
* MSP430F449
* -----------------
* /|\| XIN|-
* | | |
* --|RST XOUT|-
* | |
* | P1.0|-->LED
*
*******************************************************************************************/
P6OUT ^= BIT2;
UartRead(buf,10);
OSTimeDly(10); /* 眼时10个时钟节拍,挂起本任务等待延时结束 */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -