大家好、
我尝试使用 tm4c129在多个引脚中读取模拟值、但我始终得到零。
可以帮帮我吗?
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.
大家好、
我尝试使用 tm4c129在多个引脚中读取模拟值、但我始终得到零。
可以帮帮我吗?
同意供应商对"简单性"的处方并遵循(已知合格)示例代码。 (这种简单性最好通过始终难忘的"亲吻"(供应商代理商从未使用过)来传达-因此(反复)海报问题由于不必要的复杂性而"总是"!)
挂图未能正确遵循"SW_TM4C-DRL-UG-2"(外设驱动程序用户指南)、被误解或未正确遵循。 他对 ADC 函数的使用虽然是"原始的"、但通常与这些 API 函数不兼容。 具体而言:
但是海报代码: ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH1); 实际上已选择序列0。 (可产生多达8个步进转换)
示例代码"Single_end.C"(找到的示例/外设)久经考验-说明了正确的函数顺序。 与外设驱动程序用户指南(如上)结合使用时、有效地提供了一个针对相应 ADC 相关功能的可靠"发展蓝图"。。。
为了节省(其他人)和本海报(时间/精力)、我展示了他的"ADC.c"代码的关键部分(未修改): (这些部分说明并记录我的发现)
{
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
//
//为这些引脚选择模拟 ADC 功能。
//请查阅数据表以查看每个引脚分配的函数。
// TODO:更改此选项以选择您正在使用的端口/引脚。
//
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_0);
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_1);
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_2);
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_3);
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_4);
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_5);
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_6);
GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_7);
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_0);
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_1);
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_2);
***
ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC0_BASE、0、1、ADC_CTL_CH2);
ADCSequenceStepConfigure (ADC0_BASE、0、2、ADC_CTL_CH3);
ADCSequenceStepConfigure (ADC0_BASE、0、3、ADC_CTL_CH4);
ADCSequenceStepConfigure (ADC0_BASE、0、4、ADC_CTL_CH5);
ADCSequenceStepConfigure (ADC0_BASE、0、5、ADC_CTL_CH6);
ADCSequenceStepConfigure (ADC0_BASE、0、6、ADC_CTL_CH7);
ADCSequenceStepConfigure (ADC0_BASE、0、7、ADC_CTL_CH12);
ADCSequenceStepConfigure (ADC0_BASE、0、8、ADC_CTL_CH13);
ADCSequenceStepConfigure (ADC0_BASE、0、9、ADC_CTL_CH14);
ADCSequenceStepConfigure (ADC0_BASE、0、10、ADC_CTL_CH15 | ADC_CTL_IE |
ADC_CTL_END);
***
IntEnable (INT_ADC0SS0);
//
//由于采样序列3现在已配置,因此必须将其启用。
//
ADCSequenceEnable (ADC0_BASE、0);
ADCSequenceEnable (ADC0_BASE、1);
ADCSequenceEnable (ADC0_BASE、2);
ADCSequenceEnable (ADC0_BASE、3);
ADCSequenceEnable (ADC0_BASE、4);
ADCSequenceEnable (ADC0_BASE、5);
ADCSequenceEnable (ADC0_BASE、6);
ADCSequenceEnable (ADC0_BASE、7);
ADCSequenceEnable (ADC0_BASE、8);
ADCSequenceEnable (ADC0_BASE、9);
ADCSequenceEnable (ADC0_BASE、10);
***
uint32_t read_adc (uint32_t 序列、uint32_t *值)
{
ADCIntClear (ADC0_BASE、SEQUENCE);
ADCProcessorTrigger (ADC0_BASE、SEQUENCE);
while (!ADCIntStatus (ADC0_BASE、sequence、false)){}
返回(ADCSequenceDataGet (ADC0_BASE、序列、值));
}
大家好、
我现在可以看到很多错误。 我返回了几个步骤、可以使它正常工作。
这是新代码。
谢谢!