打印
[STM8]

STM8S105 ADC AIN12的用法

[复制链接]
4738|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenwei1919|  楼主 | 2010-9-8 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chenwei1919 于 2010-9-8 12:26 编辑

STM8S105  AIN12/PF4是ADC1么?貌似105只有ADC1哦,我现在做好的板子上要用到一路AD,刚好剩了一个PF4口,飞线过去,发现不能用,初始化代码如下,用的是库:
GPIO_Init(GPIOF, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, (u8)12, ADC1_PRESSEL_FCPU_D4, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, (u8)12 , DISABLE);
ADC1_StartConversion();

改变测量电压,每次采样的值都无变化,请高手帮忙解答,谢谢
沙发
LQQ8716| | 2015-12-24 09:03 | 只看该作者
void AD_Init(void)//单次
{       
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, ENABLE);//使能fMASTER与外设ADC1连接
    ADC1_DeInit();//恢复ADC1寄存器到默认值
    ADC1_Init(\
            ADC1_CONVERSIONMODE_SINGLE,\
            ADC1_CHANNEL_0,\
            ADC1_PRESSEL_FCPU_D4,\
            ADC1_EXTTRIG_TIM,DISABLE,\
            ADC1_ALIGN_RIGHT,\
            ADC1_SCHMITTTRIG_CHANNEL0,DISABLE\
        );
               
        GPIO_Init(GPIOB, GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT);
        GPIO_Init(GPIOF, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);
}

static u16 Read_AD_NoFilter(u8 chnnel)
{
                static u16 u16_adc1_value;
                u8 flagstatus,DownCount=0;
                u16 temp=0;
    ADC1->CSR &= (uint8_t)(~ADC1_CSR_CH);   //清通道选择标志位
    ADC1->CSR |= (uint8_t)(chnnel);                                  //选择通道
    Delay_us(5);

                ADC1->CR1 |= ADC1_CR1_ADON;                                     //启动转化
                Delay_us(5);
                do
                {
                                DownCount--;
                                flagstatus = (uint8_t)(ADC1->CSR & (uint8_t)0x80);
                }
                while((flagstatus==0)&&(DownCount!=0));
                //while (! ADC1_GetFlagStatus(ADC1_FLAG_EOC));//等待转化结束
                ADC1->CSR &= (uint8_t)(~(uint8_t)0x80);
                //ADC1_ClearFlag(ADC1_FLAG_EOC);  //清除转化结束标志
                if(DownCount != 0)
                {
                                temp  = ADC1_GetConversionValue();           
                }
                //右对齐格式,必须先读低位,再读高位
                //templ = ADC1->DRL;
                //temph = ADC1->DRH;
    return (temp);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:前方是绝路,希望在转角

0

主题

34

帖子

1

粉丝