主题中讨论的其他器件: EK-TM4C123GXL
您好!
我正在使用 TM4C123GH6PM launchpad 读取模拟输入并转换为数字。
在设置中、使用 ADC0、AIN0 (PE3)是模拟电压输入。 我使用修整将1.3V 输入到 PE3。
我使用的 IDE 是 IAR Arm 9.32.1。
我按照 TM4C123GH6PM 微控制器数据表的说明、首先初始化 ADC 模块、配置采样序列发生器、然后进入无限 while 循环、以对电压输入进行采样。
在调试过程中、我检查了每个寄存器设置、它们都被设置为编码。 遗憾的是、输出始终为0x0dcd、没有转换任何数据。
有人能帮我检查一下我是否犯了一些错误吗?
谢谢!
具体代码如下:
#include
#include "lm4f120h5qr.h"
int main()
{
unsigned int volatile ADC_value = 0;
// ADC 频率初始化
SYSCTL_RCC_R &=~(SYSCTL_RCC_PWRDN);// PLL 断电
ADC0_CC_R |= ADC_CC_CS_PIOSC;//设置时钟源:PIOSC
SYSCTL_RCC_R |= SYSCTL_RCC_PWRDN;// PLL 上电
// ADC 模块初始化
SYSCTL_RCGCADC_R |= SYSCTL_RCGCADC_R0;//启用 ADC0时钟门控
SYSCTL_RCGCGPIO_R |= SYSCTL_RCGCGPIO_R4;//启用 GPIO 端口 E 运行模式时钟门控
GPIO_Porte _ DIR_R &=~(1U << 3);//将 PE3设置为输入
GPIO_Porte AFSEL_R |=(1U << 3);//将 PE3功能设置为外设信号
GPIO_Porte _den_R &=~(1U << 3);//禁用 PE3的数字功能
GPIO_Porte AMSEL_R |=(1U << 3);//启用 PE3模拟功能
// ADC 采样序列发生器配置
ADC0_ACTSS_R &&~(ADC_ACTSS_ASEN3);// ADC0 SS3已禁用
ADC0_EMUX_R |= ADC_EMUX_EM3_ALWAYS;//将 ADC0 SS3 TRIGGER 设置为始终(连续采样)
ADC0_SSMUH3_R &&~(ADC_SSMUH3_MUX0_M);// ADC SS3首次采样输入选择
ADC0_SSCTL3_R |= ADC_SSCTL3_IE0 | ADC_SSCTL3_END0;//第1个采样是序列末端并设置 IE 标志
ADC0_IM_R |= ADC_IM_MASK3;// SS3中断发送到中断控制器
ADC0_ACTSS_R |= ADC_ACTSS_ASEN3;// ADC SS3已启用
while (1){
ADC0_PSSI_R |= ADC_PSSI_SS3;//开始采样序列发生器3采样
while (((ADC0_RIS_R 和 ADC_RIS_INR3)= 0);//等待采样完成
ADC_VALUE = ADC0_SSFIFO3_R 和0xFFF;//从 FIFO3读取转换值
ADC0_ISC_R |= ADC_ISC_IN3;// SS3中断状态和清除
}
}