TI MSP430工程配置及2019年电赛A题编程示例(使用430 F5529)

配置

第一步:右击工程,选择Options

第二步:在General Options的Target选项卡里选择对应的器件Device,这里是MSP430G2231

第三步:在Debugger里选择FET Debugger:

第四步: 检查FET Debugger里的设置是否正确,这里是Texas Instrument USB-IF采用Automatic方式

这里选择Automatic与Automatic selection,当用串口会自动连接上串口。

第五步:编译程序,下载验证

电赛A题源码

小车代码

/*!
 *     COPYRIGHT NOTICE
 *     Copyright (c) 2016,CTGU-GB
 *     All rights reserved.
 *
 *
 * @file       main.c
* @brief      MSP430F5529 平台主程序

 * @author     CTGU-GB
 * @version    v2.7
 * @date       2016-11-26
 */
#include "include.h"
#include "KEY.h"

int key1,key2,stop_flag=0;

int key_flag = 0;

//定时器中断处理函数
uint16_t Motor1,Motor2;
__interrupt void TIMER_TB0_A0_IRQ_Handler()
{

   GPIO_TurnBit  (P4, 7);

}

//ADC 中断处理函数
float ad;
uint16_t ADC_MCH1,ADC_MCH2,Motor1,Motor2;
__interrupt void ADC_IRQ_Handler()
{
   if(ADC_GetITStatus(ADC_CH2) == TRUE)
   {
      ad = ADC_ReadChanelValue (ADC_CH2)*3.3/1023;   //读取后会自动清除标志位
      ADC_ClearITPendingBit(ADC_CH2);
   }
   if(ADC_GetITStatus(ADC_CH1) == TRUE)
   {
      ad = ADC_ReadChanelValue (ADC_CH1)*3.3/1023;   //读取后会自动清除标志位
      ADC_ClearITPendingBit(ADC_CH1);
   }

}

uint8_t key_data()
{
    static _Bool glag=0;
    uint8_t key_value=0;
    if((KEY_isPressed(KEY1)==1||KEY_isPressed(KEY2)==1)&&glag==0)
    {
        DELAY_MS(100);
        if((KEY_isPressed(KEY1)==1||KEY_isPressed(KEY2)==1)&&glag==0)
        {
            glag=1;
            if(KEY_isPressed(KEY1)==1)   key_value=1;
            if(KEY_isPressed(KEY2)==1)   key_value=2;
        }
    }
    else if(KEY_isPressed(KEY1)==0||KEY_isPressed(KEY2)==0)  glag=0;

    return key_value;
}

void main()
{
  uint8_t key_val = 0;
  uint8_t Data[1];
  int a,b,c = 0;
  DisableInterrupts();          //禁止总中断  

  LED_Init(LED_ALL);              //LED灯初始化
  KEY_Init(KEY1,NULL);
  KEY_Init(KEY2,NULL);
  //LED_On (LED1);
  OLED_Init();                    //Oled初始化
  GPIO_Init(P3,0,GPI|PULL_UP);
  GPIO_Init(P3,1,GPI|PULL_UP);
  GPIO_Init(P2,1,GPI|PULL_UP);
  GPIO_Init(P1,1,GPI|PULL_UP);
  GPIO_Init(P7,0,GPI|PULL_UP);
   //GPIO_ReadBit(P2,1) == 0  读取按键按下为0

  //ADC配置///
  ADC_Init(ADC_CH1,ADC_VREF_3_3V,ADC_10bit);       //初始化通道,P6.1

//  定时器配置
    Set_Vector_Handler(VECTOR_TIMER0_B0,TIMER_TB0_A0_IRQ_Handler);   //设置定时器TA1的中断服务程序为:TIMER1_A0_IRQ_Handler

    TIMER_Interval_Ms(TIMER_B0, 500);    //设置TA1为定时中断,中断时间为500Ms
    TIMER_ITConfig (TIMER_B0, TIMER_CCR0_IRQn, ENABLE);            //使能TIMER的某一个中断
    ///////////////////////////////////////////////////////////////////////////////////////////// 

//  pwm配置
//   定时器PWM输出初始化
    TIMER_PWM_MultiChannel_Init(TIMER_A2, 1000, 2, TIMER_CH1, TIMER_CH2);
    //GPIO_ResetBits(PORT2, GPIO_Pin_4|GPIO_Pin_5);
  //TIMER_CH1\TIMER_CH2:{P2,4},{P2,5}
    //PWM输出占空比设置
    //999为满占空比与设置频率无关
    TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,50);
    TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,50);
  ////////////////////////////////////////////////////////////////////////////////////////////////

    /*
   ///usrt配置////
   //配置串口1:TX={P4,4},.RX={P4,5}
  UART_Init        (UART1,9600);                      //初始化UART1模块,波特率115200,波特率高时最好把主时钟 设高些
  Set_Vector_Handler(VECTOR_UART1,UART_RX_IRQ_Handler);    //设置接收中断向量
  UART_ITConfig  (UART1,UART_RX_IRQn,TRUE);                //开串口接收中断
   ////////////////////////////
   */

  EnableInterrupts();
  OLED_PrintfAt(FONT_ASCII_6X8,1,0,"function:");
  OLED_PrintfAt(FONT_ASCII_6X8,2,0,"ADC1:");//显示一个字符
  OLED_PrintfAt(FONT_ASCII_6X8,3,0,"key_count1:");//显示一个字符
  OLED_PrintfAt(FONT_ASCII_6X8,4,0,"key_count2:");//显示一个字符
  OLED_PrintfAt(FONT_ASCII_6X8,5,0,"recvie1:");//显示一个字符
  OLED_PrintfAt(FONT_ASCII_6X8,6,0,"recvie2:");//显示一个字符
  OLED_PrintfAt(FONT_ASCII_6X8,7,0,"Stop_flag:");//显示一个字符
  while(1)
  {

      /////////////////////要求2////////////////

         Data[0] = Flash_Read(MAX_SEGMENT,0,uint8_t);
         OLED_PrintfAt(FONT_ASCII_6X8,1,70,"%d",Data[0]);
         if(Data[0] == 2)
         {
            while(1){
         float ad = ADC_ReadChanelOnce  (ADC_CH1)*3.3/1023;
         OLED_PrintfAt(FONT_ASCII_6X8,2,30,"%0.2f",ad);
        if(ad<0.5)
        {    

                      TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,500);   //右
                      TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,500);   //左  

                      while(1)
                      {

                      if(KEY_isPressed(KEY2))
                      {

                          key_flag =1;
                          break;

                      }
                       //运行中检测是否在充电标志,中心
                      if(GPIO_ReadBit(P7,0) == 0 )
                       {
                           TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,0);

                            TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,0);
                            OLED_PrintfAt(FONT_ASCII_6X8,7,70,"%d",0);
                            stop_flag =1;
                            break;
                       }
                       else
                           OLED_PrintfAt(FONT_ASCII_6X8,7,70,"%d",1);    

                      a=GPIO_ReadBit(P3,0);

                      b=GPIO_ReadBit(P3,1);

                //////////        //检测左边是否到达
                       if(a)
                       {
                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,1000);

                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,300);
                        OLED_PrintfAt(FONT_ASCII_6X8,5,50,"%d",1);
                       }
                        else{
                        OLED_PrintfAt(FONT_ASCII_6X8,5,50,"%d",0); //左
                       }

                 //////////        //检测右边是否到达
                     if(b)
                       {
                       TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,300);
                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,1000); 

                       OLED_PrintfAt(FONT_ASCII_6X8,6,50,"%d",1); //右
                     }
                     else{
                       OLED_PrintfAt(FONT_ASCII_6X8,6,50,"%d",0); //右

                       }
                     if(a == 0&b == 0)
                     {

                          TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,550);   //左
                          TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,1000);   //右

                     }

                    }
                    if(stop_flag == 1)
                    {
                    stop_flag = 0;
                    break;

                    }

                     if(key_flag == 1)
                    {
                    key_flag = 0;
                    break;

                    }

                }
         }
       }

       /////////////////////要求3////////////////////////////////

         Data[0] = Flash_Read(MAX_SEGMENT,0,uint8_t);
         OLED_PrintfAt(FONT_ASCII_6X8,1,70,"%d",Data[0]);
         if(Data[0] == 3)
         {
            while(1){
         float ad = ADC_ReadChanelOnce  (ADC_CH1)*3.3/1023;
         OLED_PrintfAt(FONT_ASCII_6X8,2,30,"%0.2f",ad);
        if(ad<0.5)
        {    

                      TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,500);   //右
                      TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,500);   //左  

                      while(1)
                      {

                        if(KEY_isPressed(KEY2))
                      {

                          key_flag =1;
                          break;

                      }   

                       //运行中检测是否在充电标志,中心
                      if(GPIO_ReadBit(P7,0) == 0 )
                       {    

                            OLED_PrintfAt(FONT_ASCII_6X8,7,70,"%d",0);

                       }
                       else
                           OLED_PrintfAt(FONT_ASCII_6X8,7,70,"%d",1);    

                      a=GPIO_ReadBit(P3,0);

                      b=GPIO_ReadBit(P3,1);

                //////////        //检测左边是否到达
                       if(a)
                       {
                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,1000);

                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,300);
                        OLED_PrintfAt(FONT_ASCII_6X8,5,50,"%d",1);
                       }
                        else{
                        OLED_PrintfAt(FONT_ASCII_6X8,5,50,"%d",0); //左
                       }

                 //////////        //检测右边是否到达
                     if(b)
                       {
                       TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,300);
                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,1000); 

                       OLED_PrintfAt(FONT_ASCII_6X8,6,50,"%d",1); //右
                     }
                     else{
                       OLED_PrintfAt(FONT_ASCII_6X8,6,50,"%d",0); //右

                       }
                     if(a == 0&b == 0)
                     {

                          TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,550);   //左
                          TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,1000);   //右

                     }

                    }

                    if(key_flag == 1)
                    {
                    key_flag = 0;
                    break;

                    }

         }
       }
 } 

       /////////////////////要求4/////////////////////////

         Data[0] = Flash_Read(MAX_SEGMENT,0,uint8_t);
         OLED_PrintfAt(FONT_ASCII_6X8,1,70,"%d",Data[0]);
         if(Data[0] == 4)
         {
            DELAY_MS(59000);
          while(1){
         //float ad = ADC_ReadChanelOnce  (ADC_CH1)*3.3/1023;
         //OLED_PrintfAt(FONT_ASCII_6X8,2,30,"%0.2f",ad);

                      TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,500);   //右
                      TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,500);   //左  

                      while(1)
                      {

                        if(KEY_isPressed(KEY2))
                      {

                          key_flag =1;
                          break;

                      }   

                       //运行中检测是否在充电标志,中心
                      if(GPIO_ReadBit(P7,0) == 0 )
                       {    

                            OLED_PrintfAt(FONT_ASCII_6X8,7,70,"%d",0);

                       }
                       else
                           OLED_PrintfAt(FONT_ASCII_6X8,7,70,"%d",1);    

                      a=GPIO_ReadBit(P3,0);

                      b=GPIO_ReadBit(P3,1);

                //////////        //检测左边是否到达
                       if(a)
                       {
                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,1000);

                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,300);
                        OLED_PrintfAt(FONT_ASCII_6X8,5,50,"%d",1);
                       }
                        else{
                        OLED_PrintfAt(FONT_ASCII_6X8,5,50,"%d",0); //左
                       }

                 //////////        //检测右边是否到达
                     if(b)
                       {
                       TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,300);
                        TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,1000); 

                       OLED_PrintfAt(FONT_ASCII_6X8,6,50,"%d",1); //右
                     }
                     else{
                       OLED_PrintfAt(FONT_ASCII_6X8,6,50,"%d",0); //右

                       }
                     if(a == 0&b == 0)
                     {

                          TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH1,550);   //左
                          TIMER_PWM_SetChannelDuty(TIMER_A2,TIMER_CH2,1000);   //右

                     }

                    }

                    if(key_flag == 1)
                    {
                    key_flag = 0;
                    break;

                    }

       }
 } 

      ///////////////////////////设置////////////////////
        //key1-p2.1
        //key2-p1.1

      //p2.1设置,p1.1确定
      while(1)
      {
               for(int i=0;i<1;i++)
          {
                Data[i] = Flash_Read(MAX_SEGMENT,i,uint8_t);
                OLED_PrintfAt(FONT_ASCII_6X8,1,70,"%d",Data[i]);
          }
                key_val = key_data();
                if(key_val)
                {
                    if(key_val == 1)
                    {
                        key2 ++;
                        OLED_PrintfAt(FONT_ASCII_6X8,4,70,"%d",key2);
                    }
                    else
                    {
                        //赋值
                        Data[0]=key2;

                      //先清除flash,再存
                      Flash_Erase_Segment(MAX_SEGMENT);
                      Flash_Write_buf (MAX_SEGMENT,0,1,Data);

                      //数据清零
                      Data[0]=0;

                        key1 ++;
                        OLED_PrintfAt(FONT_ASCII_6X8,3,70,"%d",key1);
                        //再读取
                               for(int i=0;i<1;i++)
                      {
                            Data[i] = Flash_Read(MAX_SEGMENT,i,uint8_t);
                            OLED_PrintfAt(FONT_ASCII_6X8,1,70,"%d",Data[i]); 

                      }
                        if(Data[0] !=0) break;

                    }
                }
                else
                {

                    //sOLED_PrintfAt(FONT_ASCII_6X8,3,70,"%d",0);
                }

      }
      /////////////////////////////////////////////////////////////

  }
}

底板控制

/*!
 *     COPYRIGHT NOTICE
 *     Copyright (c) 2016,CTGU-GB
 *     All rights reserved.
 *
 *
 * @file       main.c
* @brief      MSP430F5529 平台主程序

 * @author     CTGU-GB
 * @version    v2.7
 * @date       2016-11-26
 */
#include "include.h"

//定时器中断处理函数
uint16_t Motor1,Motor2;
__interrupt void TIMER_TB0_A0_IRQ_Handler()
{

   //GPIO_TurnBit  (P4, 7);

}

void main()
{

  int Kal = 0;
  DisableInterrupts();          //禁止总中断

  LED_Init(LED_ALL);              //LED灯初始化
  OLED_Init();                    //Oled初始化
  LED_Off(LED1);
  LED_Off(LED2);
  GPIO_Init(P6,0,GPI|PULL_UP);
  GPIO_Init(P6,1,GPI|PULL_UP);
  GPIO_Init(P6,2,GPI|PULL_UP);
  GPIO_Init(P6,3,GPI|PULL_UP); 

  GPIO_Init(P1,2,GPI|PULL_UP);
  GPIO_Init(P1,3,GPI|PULL_UP);
  GPIO_Init(P1,4,GPI|PULL_UP);
  GPIO_Init(P1,5,GPI|PULL_UP);

//  定时器配置
    Set_Vector_Handler(VECTOR_TIMER0_B0,TIMER_TB0_A0_IRQ_Handler);   //设置定时器TA1的中断服务程序为:TIMER1_A0_IRQ_Handler
    TIMER_Interval_Ms(TIMER_B0, 500);    //设置TA1为定时中断,中断时间为500Ms
    TIMER_ITConfig (TIMER_B0, TIMER_CCR0_IRQn, ENABLE);            //使能TIMER的某一个中断
    /////////////////////////////////////////////////////////////////////////////////////////////
    GPIO_ResetBits(PORT6, GPIO_Pin_1 |GPIO_Pin_2|GPIO_Pin_3);

  EnableInterrupts();

  while(1)
  {   

      /*
       //开发射圈1
       GPIO_SetBits(PORT6, GPIO_Pin_0);
        //关其他发射圈
       GPIO_ResetBits(PORT6, GPIO_Pin_1 |GPIO_Pin_2|GPIO_Pin_3);
      while(1)
      {

         while(GPIO_ReadBit(P1,2) ==1)
              {

              }
                LED_Off(LED1);
         while(GPIO_ReadBit(P1,2) ==0)

            {

            }
           LED_On(LED1);
         while(GPIO_ReadBit(P1,2) ==1)

            {

            }
           LED_Off(LED1);
         GPIO_SetBits(PORT6, GPIO_Pin_0);
              break;

      }
      */

      while(1)
      {

      if(GPIO_ReadBit(P1,3) == 0)
        {

           LED_On(LED1);
            //开发射圈1
            GPIO_SetBits(PORT6, GPIO_Pin_1);
            //关其他发射圈
            GPIO_ResetBits(PORT6, GPIO_Pin_2 |GPIO_Pin_3);

          while(GPIO_ReadBit(P1,3) ==0)
              {

              }
                LED_Off(LED1);
            while(GPIO_ReadBit(P1,3) ==1)

            {

            }
                LED_On(LED2);            

            while(GPIO_ReadBit(P1,3) ==0)
              {

              }
            LED_Off(LED2);
            GPIO_ResetBits(PORT6, GPIO_Pin_1);
      }  

      else if(GPIO_ReadBit(P1,4) == 0)
         {
              LED_On(LED1);
            //开发射圈1
            GPIO_SetBits(PORT6, GPIO_Pin_2);
            //关其他发射圈
            GPIO_ResetBits(PORT6, GPIO_Pin_1 |GPIO_Pin_3);

          while(GPIO_ReadBit(P1,4) ==0)
              {

              }
                LED_Off(LED1);
            while(GPIO_ReadBit(P1,4) ==1)

            {

            }
                LED_On(LED2);            

            while(GPIO_ReadBit(P1,4) ==0)
              {

              }
            LED_Off(LED2);
            GPIO_ResetBits(PORT6, GPIO_Pin_2);
      }  

      else if(GPIO_ReadBit(P1,5) == 0)
        {
             LED_On(LED1);
            //开发射圈1
            GPIO_SetBits(PORT6, GPIO_Pin_3);
            //关其他发射圈
            GPIO_ResetBits(PORT6, GPIO_Pin_1 |GPIO_Pin_2);

          while(GPIO_ReadBit(P1,5) ==0)
              {

              }
                LED_Off(LED1);
            while(GPIO_ReadBit(P1,5) ==1)

            {

            }
                LED_On(LED2);            

            while(GPIO_ReadBit(P1,5) ==0)
              {

              }
            LED_Off(LED2);
            GPIO_ResetBits(PORT6, GPIO_Pin_3);
        }

      //GPIO_SetBits  (PORT1, GPIO_Pin_0|GPIO_Pin_1); //P1.0,P1.1输出高电平
      //GPIO_SetBits() ; 

        //////////////////延时////////////////////
        //DELAY_MS(500);

    }
  }
}

8.15号后会对代码思路及硬件做个记录。这几天会稍微休息一会。

原文地址:https://www.cnblogs.com/-wenli/p/11334865.html

时间: 2024-10-04 07:04:39

TI MSP430工程配置及2019年电赛A题编程示例(使用430 F5529)的相关文章

ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval

ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval 题目大意:给一个长度为n,值域为[1, n]的序列{a},要求支持m次操作: 单点修改 1 pos val 询问子区间中某个值域的数的个数,连续的相同数字只记为一个.(即统计数字段的个数) 2 L R x y 数据范围: 1 ≤ n,m ≤ 2×10^5 1 ≤ a[i] ≤ n 解题思路: 连续重复的数字只记一次.所以考虑将每个数字段除第一个出现外的数字都删去(记为0).在读入操作的时候暴力模拟,同时维护

2019暑假——区域赛真题讲解

第一场[cx]2019.7.19 第一题 (2019 ICPC 徐州 H.Rikka with A Long Colour Palette) Q:n条线段(每条线段给出左右边界位置[ l, r ]),k种颜色.你要为每条线段染一种颜色,问至少能被k种颜色所覆盖的区间的最大总长度.∑n <= 2e6,1 <= k <= 2e5,0 <= l < r <= 1e9. A: 第二题 (2018ICPC南京 M - Mediocre String Problem ) Q:给一个

HDU-6532 Chessboard 2019广东省省赛B题(费用流)

比赛场上很容易想到是费用流,但是没有想到建图方法qwq,太弱了. 这里直接贴官方题解: 费用流.离散化坐标,每行用一个点表示,每列也用一个点表示.表示第i-1行的点向表示第i行的点连边,容量为第i行及以后能拿的棋子数的上限,费用为0,同理表示相邻列的点两两连边.若第i行第j列上有棋子,则表示第i行的点向表示第j列的点连边,容量为1,费用为该棋子的价值.可以定义源点表示第0行,汇点表示第0列,源点到汇点的最大费用流即为答案. 就是按照题解的建图方法,还有一些小细节:先要排序排除无用限制来减少限制边

2019美赛D题 人员疏散模型Python编程

Louvre_Evacuation 题目来源:2019年 美赛 D题 完整代码请见:https://github.com/izcat/Louvre_Evacuation 2019 ICM Problem D: Time to leave the Louvre 问题背景 法国发生的恐怖袭击越来越多,在许多热门目的地,亟需一个应对紧急情况的疏散计划. 你们的ICM团队正在帮助设计在法国巴黎卢浮宫的疏散计划. 总的来说,疏散的目标是让所有的人都撤离,尽快安全离开大楼. 接到疏散通知后,为了尽快清空建筑

【java web学习笔记(1)】idea工程配置

1.新建工程,java enterprise-> web application 2. 配置tomcat run-> edit configurations 左上加号新建 并设置好路径 3.改工程配置 新建classes文件夹和lib文件夹 file-> project structure modules-> paths-> use module compile output path 选创建的classes文件夹 dependencies-> +-> jars

VS2015--win32工程配置的一些想法之GdiplusTypes.h(470) : error C3861: &#39;min&#39;: identifier not found

一次一次地,乐此不疲的掉入自己挖的坑儿. 之前博客<VS2015–win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突>写了如何处理algorithm中std:min和windows中min的冲突问题,我们用到了预处理器NOMINMAX. 标准库在<algorithm>头中定义了两个模板函数std::min() 和 std::max(). 通常用它可以计算某个值对的最小值和最大值.可惜在 Visual C++ 无法使用它们,因为没有定义这些函数

细聊 Cocoapods 与 Xcode 工程配置

前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开发者都知道 Cocoapods 在实际使用中,经常遇到各种问题,存在一定的使用成本,因此衡量 Cocoapods 的成本和收益就显得很关键. Cocoapods 的本质是一套自动化工具.那么了解自动化流程背后的原理就很重要,如果我们能手动的模拟 Cocoapods 的流程,无论是对 Cocoapod

TestDirector自定义管理:工程配置

一.工程配置 1.进入工程配置界面 2.点击“customize project entities”弹出自定义字段对话框.(这里有六个表,每个表中的字段分为系统字段(system fields)和用户自定义字段(user fields)),选择DefectàUser Fields节点,点击底部的new Field按钮,输入字段名称和数据类型,并选择显示模式.增加完后,点击ok按钮返回. 这个界面可以添加字段,也可以将英文字段转化为中文字段. 单击“User Fields”下的“缺陷起源”字段,可

vs如何将工程配置,保存到属性表

上次讲到新建一个opencv工程的配置过程,整个流程下来还是非常麻烦的.每次新建一个工程都要走这个流程的话就要疯了! 现在介绍一种将工程配置,保存到属性表的方法,那么下次新建工程时,只要添加这个属性表,整个配置就完成了--     首先新建一个工程,随便什么工程. 打开"属性管理器"并且为Debug平台添加新项目属性列表:("属性管理器"可以在菜单栏"视图"中找到,一般在最下面一行) 属性表取名为opencvDebug,点击添加: 这个时候双击o