STM8 的 ADC 转换速率和精度的问题,为什么手册如此粗糙
1个回答
展开全部
ADC1的基本的单次转换
void InitADC()
{
ADC1->CR1 = 0x20; //分频系数为4 单次转换模式 先不启动ADC转换
ADC1->CR2 = 0x08; //非外部触发 数据右对齐 禁止扫描模式
ADC1->CSR = 0x03; //禁止转换结束中断 设置转换通道为AIN3
ADC1->TDRL|= 0x08; //禁止AIN3施密特触发器功能
ADC1->CR1 |= 0x01; //第一次写1是从低功耗模式唤醒
}
unsigned int GET_AD()
{
unsigned int temph=0;
unsigned char templ=0;
ADC1->CR1 |= 0x01; //启动AD转换
while(!(ADC1->CSR0x80)); //等待转换结束
ADC1->CSR = ~0x80; //清除转换结束标志
templ = ADC1->DRL;
temph = ADC1->DRH; //读出AD转换结果
temph = ConTOINT(temph,templ);
return(temph);
}
void InitADC()
{
ADC1->CR1 = 0x20; //分频系数为4 单次转换模式 先不启动ADC转换
ADC1->CR2 = 0x08; //非外部触发 数据右对齐 禁止扫描模式
ADC1->CSR = 0x03; //禁止转换结束中断 设置转换通道为AIN3
ADC1->TDRL|= 0x08; //禁止AIN3施密特触发器功能
ADC1->CR1 |= 0x01; //第一次写1是从低功耗模式唤醒
}
unsigned int GET_AD()
{
unsigned int temph=0;
unsigned char templ=0;
ADC1->CR1 |= 0x01; //启动AD转换
while(!(ADC1->CSR0x80)); //等待转换结束
ADC1->CSR = ~0x80; //清除转换结束标志
templ = ADC1->DRL;
temph = ADC1->DRH; //读出AD转换结果
temph = ConTOINT(temph,templ);
return(temph);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询