工具/软件: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}
};