我使用的是 TM4C123GH6PM launchpad。
IAR 开发软件。
我想在 A0和 A1引脚上使用两个传感器。
连续读取这些值、进行处理。
这是我的代码。
请更正:
..................................................................................................
#include
#include
#include
//#include
#include
#include
/*
数据 PA4 13.
SCK PA2 11.
SS PA3 12.
三、会议的报告 *
unsigned long ADC_Result = 0;
float ADC_Result1=0;
void adc_init();
unsigned long adc ();
void send_dc();
void serial_clk();
unsigned long adc ()
{
无符号长整型结果;
ADC0->PSSI = 0X0004;//开始采样序列发生器2
while (((ADC0->RIS &0x04)=0);
结果= ADC0->SSFIFO2 &0XFFF;
ADC0->ISC = 0X0004;
返回结果;
}
int main (空)
{
//...13.4.1模块初始化第817页
SYSCTl->RCGCADC =0x00000001; //1. 已选择 ADC 0模块
//通用 I/O 运行模式时钟 RRCGCGPIO 第340页
sysctl->RCGCGPIO=0X00000011; //2. 选择端口 A 和端口 E
//DAC 引脚设置
// GPIO 方向 GPIODIR 第663页
GPIOA->DIR =0X1C; // PA2、PA3、PA4作为输出引脚
// GPIO 数字使能(GPIODEN)第682页
GPIOA->DEN =0X1C; // PA2、PA3、PA4为数字启用
// GPIO 数据(GPIODATA)第662页
GPIOA->DATA =0x08; //初始引脚数据
//ADC 端口引脚初始化
GPIOE->AFSEL =(1<<2)|(1<<3); //3. 设置 ADC 输入引脚的 GPIOAFSEL 位
GPIOE->DEN &=~0x0C; //4. 通过清除 GPIO 数字使能(GPIODEN)寄存器中相应的 DENbit、将 AINx 信号配置为模拟输入
GPIOE->AMSEL =(1<<2)|(1<<3); //5. 通过向 GPIOAMSEL 寄存器的相应位写1来禁用所有要使用的 ADC 输入引脚的模拟隔离电路
GPIOE->DIR &=~0x0C;
//13.4.2采样序列发生器配置
ADC0->ACTSS &=~0X0004; //1. 通过清除 ADCACTSS寄存 器中相应的 ASENn 位、确保禁用采样序列发生器
// ADC SS2启用- 4个采样
ADC0->EMUX = 0XF000; //2. 在 ADCEMUX 寄存器中配置采样序列发生器的触发事件
//设置为连续采样
ADC0->SSMUX3=1; //4. 对于采样序列中的每个采样、在 ADCSSMUXn 寄存器中配置相应的输入源
ADC0->SMUX2 = 0; // SSMUX3 -> AIN1 & SSMUX2 -> AIN0
ADC0->SSCTL2 = 0x60; //5. 对于采样序列中的每个采样、在 ADCSSCTLn 寄存器的相应半字节中配置采样控制位
//第2个采样是最后一个采样并且之后的中断被启用(这适用于 SS2)
ADC0->IM =(1<<2); //6. 要使用中断、请在 ADCIM 中设置相应的 MASK 位
// ADCSSCTL2 IEn 位被置位
ADC0->ACTSS |= 0X0004; //7. 将 ADCACTSS 寄存器中相应的 ASENn 位置位、启用采样序列发生器逻辑
ADC0->SSPRI = 0X1023;
while (1)
{
ADC_Result = ADC();
ADC_Result1 =(ADC_Result/4095)*3.3;
ADC_Result = ADC_Result | 0x3000;
}
}..................................................................................................
我无法理解 ADC_Result 将具有哪个值、来自 AIN0或 AIN1。
以及如何同时从 AIN0或 AIN1获取值。