| 代码如下: #include"iostm8s103k3.h"
 #define u8 unsigned char
 #define u16 unsigned int
 
 u8 voltl=0,templ=0;
 
 void GPIOB_Init()
 {
 PB_DDR=0XFF;
 PB_CR1=0X00;
 PB_CR2=0X00;
 }
 void HSI_8M()
 {
 CLK_SWCR|=0x02; //开启切换
 CLK_SWR=0xe1;
 while((CLK_SWCR & 0x01)==0x01);
 CLK_CKDIVR=0x08;//f=f(RC)/2
 CLK_SWCR&=(~0x02); //关闭切换
 }
 void Init_ADC()
 {
 ADC_CR1  = 0x00;                   //分频系数为4 连续转换模式 先不启动ADC转换
 ADC_CR2  = 0x38;                   //非外部触发  数据右对齐   禁止扫描模式
 ADC_TDRL|= 0x08;                   //禁止AIN3施密特触发器功能
 ADC_CR1_ADON =1;                 //第一次写1是从低功耗模式唤醒
 
 }
 void GET_Temp_AD()
 {
 ADC_CSR = 0x02;                    //禁止转换结束中断 设置转换通道为AIN2
 ADC_CR1_ADON =1;                   //开启AD转换
 
 while(ADC_CSR_EOC==0);             //等待转换结束
 ADC_CSR&=(~0x80);                  //清除转换结束标志
 temp = ADC_DRH;                    //读出AD转换结果
 templ = ADC_DRL;
 
 }
 void GET_Volt_AD()
 {
 ADC_CSR = 0x03;                   //禁止转换结束中断 设置转换通道为AIN3
 ADC_CR1_ADON =1;                   //开启AD转换
 //ADC_CR1|=0x01;                      //开启AD转换
 while(ADC_CSR_EOC==0);             //等待转换结束
 ADC_CSR&=(~0x80);                    //清除转换结束标志
 voltl = ADC_DRL;
 volt = ADC_DRH;   //读出AD转换结果
 }
 void main(void)
 {
 HSI_8M();
 GPIOB_Init();
 Init_ADC();
 while(1)
 {
 GET_Temp_AD();
 GET_Volt_AD();
 GET_Temp();
 GET_Volt();
 }
 }
 |