器件型号: EK-TM4C1294XL
您好团队:
我一直在尝试在 TIVA RM4C1294 上使用 ADC、但每次我尝试测量 AN0 时、都会在启用样本序列发生器 3 后设置 USTAT 位。 我使用了这个基本演示并从 system_dTM4C129.c 注释掉了 SystemInit;调试时、执行在“while ((ADC0->RIS & 8)== 0);“中进行了训练:
#include
内部 main (void)
{
unsigned int ADC_value;
/*启用 ADC0 和 GPIO 引脚的时钟*/
SysCtl->RCGPIO |=(1<<4); /*启用 GPIOE 或 PE3/AN0 的时钟*/
SysCtl->RCGCADC |=(1<<0); /* AD0 时钟启用*/
/*初始化 AIN0 输入的 PE3 */
GPIOE_AHB->AFSEL |=(1<<3); /*启用备用功能*/
GPIOE_AHB->DEN &=~(1<<3); /*禁用数字功能*/
GPIOE_AHB->AMSEL |=(1<<3); /*启用模拟功能*/
/*初始化样本序列器 3 */
ADC0->ACTSS &=~(1<<3); /*在配置期间禁用 SS3 */
ADC0->EMUX &=~0xF000; /*软件触发转换*/
ADC0->SSMUX3 = 0; /*从通道 0 获取输入*/
ADC0->SSCTL3 |=(1<<1)|(1<<2); /*一次采集一个样本、在第一个样本处设置标志*/
ADC0->ACTSS |=(1<<3); /*启用 ADC0 序列发生器 3 */
SysCtl->RCGCGPIO |= 0x20;//为 GPIOF 打开总线时钟
GPIOF_AHB->DIR |= 0x08;//将绿色引脚设置为数字输出引脚
GPIOF_AHB->DEN |= 0x08;//启用 PF3 引脚作为数字引脚
while (1)
{
ADC0->PSSI |=(1<<3); /*启用 SS3 转换或从 AN0 开始采样数据*/
while ((ADC0->RIS & 8)==0); /*等待直到所有样本转换完成*/
ADC_VALUE = ADC0->SSFIFO3;/*从 SS3 FIFO*/读取 ADC 协版本结果
ADC0->ISC = 8; /*清除协版本清除标志位*/
/*CONTROL 绿色 PF3->LED */
if (ADC_VALUE >= 2048)
GPIOF_AHB->DATA = 0x08;/*接通绿色 LED*/
否则 if (ADC_VALUE < 2048)
GPIOF_AHB->DATA = 0x00;/*关闭绿色 LED*/
}
}
void 系统初始化 (void)
{
SCB->CPACR |= 0x00f00000;
}
此致、
Renan