搜索
查看: 6729|回复: 1

STM8S AD采样,读取全为FF???

[复制链接]

该用户从未签到

1

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2009-9-27 19:23:30 | 显示全部楼层 |阅读模式
 
void InitADC_Sample(void) //初始化AD
{
 u8 i=0;
    ADC_DeInit();
 
 ADC_CR2  |= ADC_ALIGN;
 ADC_CR1  = 0x00;// SPSEL = 12
 ADC_CSR |= 0x01;
 //ADC_TDRL = 0xFF;
 //ADC_TDRH = 0xFF;
 
    ADC_CR1 |= ADC_ADON;         /* First set ADON to power on the ADC module.    */
    //i = 6;                   /* Wait >7us to ensure the ADC power on finished.*/
    //while(i--);
    delay(10);
    ADC_CSR &= (~ADC_EOC);
    memset(SensorChanel, 0, sizeof(SensorChanel));
    SensorChanel[0].type = 1;
    SensorChanel[1].type = 0;
    SensorChanel[2].type = 0;
    SensorChanel[3].type = 0;
}
 
/*
********************************************************************************
**函数名称:ADC_GetConversionValue
**函数功能:AD采样
**入口参数:AINx:通道号
**出口参数:采样值
**函数说明:none
**
********************************************************************************
*/
u16 ADC_GetConversionValue(u8 AINx)
{
    u8 templ = 0;
    u8 i=0;
    u8 h=0,l=0;
    u8 dt[2];
   
    u16 temph = 0;
    ADC_CSR &= (~ADC_EOC);
    ADC_CR1 |= ADC_ADON;         /* Set ADON again to start AD convert.           */
    delay(1);
    while(!(ADC_CSR & ADC_EOC));/* Waiting for AD convert finished (EOP=1).      */
    ADC_CSR &= (~ADC_EOC);
     /* Right alignment */
    if (ADC_CR2 & ADC_ALIGN) {
        ON_ALARM_LED();
        /* Read LSB first */
        templ = ADC_DRL;
        /* Then read MSB */
        temph = ADC_DRH & (0x03);       
        temph = (u16)(templ | (u16)(temph >8)&0xFF;
        dt[0] = h;dt[1]=l;
        SendBuf(dt,2);//这里打出的ad值为03 FF即全为1?????不知道哪里出了问题
        
    }
    return ((u16)temph);
}
 
例外:编译器好像对C库函数的调用有点问题?自己写了个printf函数如下:

int print(const char *format, ...)
{
 char buff[50];
 int chars;
 va_list ap;
 va_start(ap, format);
 chars = vsprintf(buff, format, ap);//编译报错,说vsprintf变量未定义,这是库函数啊,这不是扯淡吗???
 va_end(ap);
 if (chars > 0)
 {
  SendBuf((u8 *)buff,chars);
  return 1;
 }
 return 0;
}
 
 
回复

使用道具 举报

该用户从未签到

1

主题

37

帖子

0

蝴蝶豆

初级会员

最后登录
2022-9-6
发表于 2009-12-17 23:39:40 | 显示全部楼层

RE:STM8S AD采样,读取全为FF???

据手册上说在ADC_ADON第一次使能延时后再使能一次ADC_ADON,看你的代码中好象没做这步,不知有没有影响。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-8 04:20 , Processed in 0.144920 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表