⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.c

📁 ucosII 嵌入式430 系统移植成功 430单片机为430fg439
💻 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 + -