[STM8] 搞了一天都没搞通

[复制链接]
739|10
 楼主| jiajs 发表于 2017-9-28 21:57 | 显示全部楼层 |阅读模式
ADC, AD, dc, ADC1, ST

void Init_ADC(void)
{
        GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_FL_NO_IT);
        ADC1_DeInit();
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_0, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, ENABLE);
ADC1_Cmd(ENABLE);
}
void main(void)
{
  FlagStatus flag_status;
                u16 u16_adc1_value;
                Init_UART2();
                Init_ADC();
/* Infinite loop */
  while (1)
  {
                //Send(0xf0);
                ADC1_StartConversion();
                do{
                        flag_status = ADC1_GetFlagStatus(ADC1_FLAG_EOC);
                }
                while(flag_status == RESET); // SET or RESET
                    u16_adc1_value = ADC1_GetConversionValue();
                                ADC1_ClearFlag(ADC1_FLAG_EOC);
                                flag_status = ADC1_GetFlagStatus(ADC1_FLAG_EOC);
                                UART2_sendhex((u16_adc1_value>>8));
                    UART2_sendhex((u16_adc1_value&0xff));
                    UART2_sendstr("\r\n");
  }
  
}
单片机买的淘宝stm8s105k4t6核心板,debug时u16_adc1_value的值,我用可调电源输入大于2.1v时就是1023,小于2.1v就是0。flag_status的值一直是128,ADC1_ClearFlag(ADC1_FLAG_EOC)语句之后还是128不变。ADC1_SCHMITTTRIG_ALL, ENABLE改成ENABLE后情况一样,郁闷
 楼主| jiajs 发表于 2017-9-28 21:59 | 显示全部楼层
ADC1_SCHMITTTRIG_ALL, ENABLE改成DISABLE
liliang9554 发表于 2017-9-28 22:00 | 显示全部楼层

设置成DISABLE
 楼主| jiajs 发表于 2017-9-28 22:01 | 显示全部楼层
设置成DISABLE还是一样的情况。调试的时候flash_state 的值一直是128不知为啥没被清零
zhanghqi 发表于 2017-9-28 22:02 | 显示全部楼层

ADC1_GetConversionValue();这个函数简直看不懂,明明是10bitAD,出来的值常常大于1024!!
heweibig 发表于 2017-9-28 22:03 | 显示全部楼层

ADC设置全是默认的最简单设置,单个通道单次转换,左端对齐模式,
 楼主| jiajs 发表于 2017-9-28 22:04 | 显示全部楼层
这个问题真的无解了吗?换了几个版本的例程代码结果都一样,核心板上PB0接到vcc就是910左后,也没有到1023,接到gnd是0.接到可调电源也是这样,后来用个电位器测试结果一样,debug观察寄存器都正常,郁闷了。
shimx 发表于 2017-9-28 22:05 | 显示全部楼层
难道是adc下载的时候要设置选项字节?
jiaxw 发表于 2017-9-28 22:06 | 显示全部楼层

感觉STM8直接写寄存器反而方便,搞成库很啰嗦
liliang9554 发表于 2017-9-28 22:07 | 显示全部楼层

flag_status 是不是跟其他文件中变量有冲突,所以一直是128;单步执行看看这个值什么时候变128的。
 楼主| jiajs 发表于 2017-9-28 22:10 | 显示全部楼层

问题找到了,核心板vdda没有接供电,犯了个低级错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

940

主题

11975

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部