This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/MSP432-RTOS:访问 ADC 通道8 (A8)

Guru**** 2553450 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/595579/rtos-msp432-rtos-access-adc-channel-8-a8

器件型号:MSP432-RTOS

工具/软件:TI-RTOS

您好!

我尝试将 MSP432 Launchpad 上的 A8 (引脚 P4.5)与 TI-RTOS 配合使用以进行 ADC 输入、但我未能成功使其正常工作。 如果我添加了我定义的 ADC8、代码将不会运行。 但是、如果我使用其中一个预定义的 ADC 通道(0或1)、似乎可以。

我想知道我是否遗漏了一些东西。

我列出了我目前拥有的代码、以防其有用。 代码会编译、但不会在电路板上运行。  

向 Board.h 添加了 ADC8

#define Board_ADC0 MSP_EXP432P401R_ADC0
#define Board_ADC1 MSP_EXP432P401R_ADC1
#define Board_ADC8 MSP_EXP432P401R_ADC8 

更改为 MSP_EXPMSP432P401R.h

typedef 枚举 MSP_EXP432P401R_ADCName{
MSP_EXP432P401R_ADC0 = 0、
MSP_EXP432P401R_ADC1、
MSP_EXP432P401R_ADC8 = 8、
MSP_EXP432P401R_ADCCOUNT = 3
}MSP_EXP432P401R_ADCName;

进入 MSP_EXPMSP432P401R.c

/* ADC 对象*/ADCMSP432_Object
adcMSP432Objects[MSP_EXP432P401R_ADCCOUNT;

/* ADC 配置结构*/
const ADCMSP432_HWAttrs adcMSP432HWAttrs[MSP_EXP432P401R_ADCCOUNT ={}
{
.channel = ADC_INPUT_A0、
gpioPort = GPIO_PORT_P5、
gpioPin = GPIO_PIN5、
gpioMode = GPIO_TICE_MODULE_FUNCTION、
.refVoltage = REF_A_VREF2_5V、
.resolution = ADC_14BIT
}、
{
.channel = ADC_INPUT_A1、
gpioPort = GPIO_PORT_P5、
gpioPin = GPIO_PIN4、
gpioMode = GPIO_TICE_MODULE_FUNCTION、
.refVoltage = REF_A_VREF1_45V、
.resolution = ADC_8位
}、
{
.channel = ADC_INPUT_A8、
gpioPort = GPIO_PORT_P4、
gpioPin = GPIO_PIN5、
gpioMode = GPIO_TICE_MODULE_FUNCTION、
.refVoltage = REF_A_VREF2_5V、
.resolution = ADC_14BIT
}
};

const ADC_Config ADC_CONFIG[]={
{
.fxnTablePtr =&ADCMSP432_fxnTable、
.object =&adcMSP432Objects[0]、
hwAttrs =&adcMSP432HWAttrs[0]
}、
{
.fxnTablePtr =&ADCMSP432_fxnTable、
.object =&adcMSP432Objects[1]、
hwAttrs =&adcMSP432HWAttrs[1]
}、
{
.fxnTablePtr =&ADCMSP432_fxnTable、
.object =&adcMSP432Objects[2]、
hwAttrs =&adcMSP432HWAttrs[2]
}、
{NULL、NULL、NULL}
}; 


已添加至 main.c
#define TASK8STACKSIZE 1024

Task_Structt task8Struct;

特性 task8Stack[TASK8STACKSIZE];


/*构造 adc8任务线程*/

Task_Params_init (&task8Params);
task8Params.arg0 = 10000;
task8Params.STACKSIZE = TASK8STACKSIZE;
task8Params.stack =&task8Stack;
task8Params.priority = 10;
Task_construct(&task8Struct,(Task_FuncPtr) taskADCSample,&task8Params,NULL);

我的 adcSample。 以访问 ADC8

任务 ADCSample, UARg arg0、UARg arg1)

adc_handle adc8;

ADC_Params 参数;

uint16_t adcValue8;

ADC_PARAMS_INIT (params);

adc8 = adc_open (Board_adC8、params);

 

while (1){

Task_sleep ((((UINT) arg0)/ Clock_tickPeriod);

/*阻塞模式转换*/

adc_convert (adc8、&adcValue8);

System_printf ("示例%u \n"、adcValue8);

system_flush();

GPIO_TOGGLE (Board_LED2);

//理论上关闭 ADC 驱动程序。 永远不会达到此代码

// adc_close (adc8);

/* ADC 对象*/

ADCMSP432_Object adcMSP432Objects[MSP_EXP432P401R_ADCCOUNT

/* ADC 配置结构*/

CONST ADCMSP432_HWAttrs adcMSP432HWAttrs[MSP_EXP432P401R_ADCCOUNT ={

.channel = ADC_INPUT_A0、

gpioPort = GPIO_PORT_P5、

gpioPin = GPIO_PIN5、

gpioMode = GPIO_TICE_MODULE_FUNCTION、

.refVoltage = REF_A_VREF2_5V、

.resolution = ADC_14BIT

}、

.channel = ADC_INPUT_A1、

gpioPort = GPIO_PORT_P5、

gpioPin = GPIO_PIN4、

gpioMode = GPIO_TICE_MODULE_FUNCTION、

.refVoltage = REF_A_VREF1_45V、

.resolution = ADC_8位

}、

.channel = ADC_INPUT_A8、

gpioPort = GPIO_PORT_P4、

gpioPin = GPIO_PIN5、

gpioMode = GPIO_TICE_MODULE_FUNCTION、

.refVoltage = REF_A_VREF2_5V、

.resolution = ADC_14BIT

};

const ADC_Config ADC_CONFIG[]={

.fxnTablePtr =&ADCMSP432_fxnTable、

.object =&adcMSP432Objects[0]、

hwAttrs =&adcMSP432HWAttrs[0]

}、

.fxnTablePtr =&ADCMSP432_fxnTable、

.object =&adcMSP432Objects[1]、

hwAttrs =&adcMSP432HWAttrs[1]

}、

.fxnTablePtr =&ADCMSP432_fxnTable、

.object =&adcMSP432Objects[2]、

hwAttrs =&adcMSP432HWAttrs[2]

}、

{NULL、NULL、NULL}

};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jon、

     请尝试以下操作:

    typedef 枚举 MSP_EXP432P401R_ADCName{
    MSP_EXP432P401R_ADC0 = 0、
    MSP_EXP432P401R_ADC1、
    MSP_EXP432P401R_ADC8、
    
    MSP_EXP432P401R_ADCCOUNT
    }MSP_EXP432P401R_ADCName;
    

    并告诉我们您的结果。

     谢谢、

      David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:

    我感谢您的回答。 我想我尝试在 MSP_EXP432P401R_ADCName 中的值与实际 ADC 通道(如 A8)之间建立直接关联、但这些值仅用作 adcMSP432HWAttrs 和 adcMSP432Objects 的引用。 我发现如果我创建的 adcMSP432HWAttrs 数量与 MSP_EXP432P401R_ADCName 定义的 ADC_Config ADC_CONFIG 相同、我可以使用 MSP_EXP432P401R_ADC8值8。 此外、我包含了一个启用 A8 GPIO 引脚的条目、现在我可以从 A8读取。
    很抱歉、我看不到向发布格式化代码的选项。

    这些是我所做的更改:

    谢谢、Jon

    //////////////////
    Board.h

    #define Board_ADC0 MSP_EXP432P401R_ADC0
    #define Board_ADC1 MSP_EXP432P401R_ADC1
    #define Board_ADC2 MSP_EXP432P401R_ADC2
    #define Board_ADC3 MSP_EXP432P401R_ADC3
    #define Board_ADC4 MSP_EXP432P401R_ADC4
    #define Board_ADC5 MSP_EXP432P401R_ADC5
    #define Board_ADC6 MSP_EXP432P401R_ADC6
    #define Board_ADC7 MSP_EXP432P401R_ADC7
    #define Board_ADC8 MSP_EXP432P401R_ADC8


    MSP_EXP432P401R.h

    typedef 枚举 MSP_EXP432P401R_ADCName{
    MSP_EXP432P401R_ADC0 = 0、
    MSP_EXP432P401R_ADC1、
    MSP_EXP432P401R_ADC2、
    MSP_EXP432P401R_ADC3、
    MSP_EXP432P401R_ADC4、
    MSP_EXP432P401R_ADC5、
    MSP_EXP432P401R_ADC6、
    MSP_EXP432P401R_ADC7、
    MSP_EXP432P401R_ADC8、
    MSP_EXP432P401R_ADCCOUNT
    }MSP_EXP432P401R_ADCName;


    MSP_EXP432P401R.c

    /* ADC 配置结构*/
    CONST ADCMSP432_HWAttrs adcMSP432HWAttrs[MSP_EXP432P401R_ADCCOUNT ={

    .channel = ADC_INPUT_A0、
    gpioPort = GPIO_PORT_P5、
    gpioPin = GPIO_PIN5、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT
    }、

    .channel = ADC_INPUT_A1、
    gpioPort = GPIO_PORT_P5、
    gpioPin = GPIO_PIN4、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF1_45V、
    .resolution = ADC_8位
    }、

    .channel = ADC_INPUT_A2、
    gpioPort = GPIO_PORT_P5、
    gpioPin = GPIO_PIN3、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT
    }、

    .channel = ADC_INPUT_A3、
    gpioPort = GPIO_PORT_P5、
    gpioPin = GPIO_PIN2、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT
    }、

    .channel = ADC_INPUT_A4、
    gpioPort = GPIO_PORT_P5、
    gpioPin = GPIO_PIN1、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT
    }、

    .channel = ADC_INPUT_A5、
    gpioPort = GPIO_PORT_P5、
    gpioPin = GPIO_PIN0、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT
    }、

    .channel = ADC_INPUT_A6、
    gpioPort = GPIO_PORT_P4、
    gpioPin = GPIO_PIN7、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT
    }、

    .channel = ADC_INPUT_A7、
    gpioPort = GPIO_PORT_P4、
    gpioPin = GPIO_PIN6、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT
    }、

    .channel = ADC_INPUT_A8、
    gpioPort = GPIO_PORT_P4、
    gpioPin = GPIO_PIN5、
    gpioMode = GPIO_TICE_MODULE_FUNCTION、
    .refVoltage = REF_A_VREF2_5V、
    .resolution = ADC_14BIT

    };

    const ADC_Config ADC_CONFIG[]={

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[0]、
    hwAttrs =&adcMSP432HWAttrs[0]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[1]、
    hwAttrs =&adcMSP432HWAttrs[1]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[2]、
    hwAttrs =&adcMSP432HWAttrs[2]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[3]、
    hwAttrs =&adcMSP432HWAttrs[3]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[4]、
    hwAttrs =&adcMSP432HWAttrs[4]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[5]、
    hwAttrs =&adcMSP432HWAttrs[5]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[6]、
    hwAttrs =&adcMSP432HWAttrs[6]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[7]、
    hwAttrs =&adcMSP432HWAttrs[7]
    }、

    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[8]、
    hwAttrs =&adcMSP432HWAttrs[8]
    }、
    {NULL、NULL、NULL}
    };

    GPIO_PinConfig gpioPinConfigs 中

    /* MSP_EXP432P401R_LED_GREEN */
    GPIOMSP432_P2_1 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、
    /* MSP_EXP432P401R_LED_BLUE */
    GPIOMSP432_P2_2 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、
    GPIOMSP432_P4_5 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING