您的位置:首页 > 其它

stm32寄存器版学习笔记07 ADC

2016-07-12 22:52 232 查看
  STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。

1.通道选择

  stm32把ADC转换分成2个通道组:规则通道组相当于正常运行的程序;注入通道组相当于中断。程序初始化阶段设置好不同的转换组,系统运行中不用变更循环转换的配置,从而达到任务互不干扰和快速切换。

  有16个多路通道。可以把转换组织成两组:规则组和注入组。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。

    ● 规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。

     规则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。

    ● 注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。                        注入组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。

  如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉冲将发送到ADC以转换新选择的组。

2.ADC1通道0来采样外部电压值 配置步骤

①开启PA口时钟,设置PA0为模拟输入。

int main(void)
{
u16 adcx;
float temp;
Stm32_Clock_Init(9);    //系统时钟设置
uart_init(72,9600);         //串口初始化为9600
delay_init(72);                //延时初始化
LCD_Init();                   //初始化LCD
Adc_Init_Ch0();        //ADC初始化
POINT_COLOR=RED;//设置字体为红色
//显示提示信息
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");
LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");
while(1)
{
adcx=Get_Adc_Average(0,10);
LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
temp=(float)adcx*(3.3/4096);    //4096为2的12次方 stm32内部ADC是12位的
adcx=temp;
LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,150,temp,3,16,0X80);
LED0=!LED0;
delay_ms(250);
}
}


main.c

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: