本人是刚学习STM8的菜鸟,今天自己照着师傅给的模板编写了一个STM8ADC的程序(温度传感器的),并且在数码管上显示,按照师傅给的程序运行,把温度传感器拔掉的话就显示0,而卧自己的显示0过一会儿显示其他值,然后下个时间显示0,如此循环。然后我就对照了两个程序师傅给的
void ADC1_START(u8 chanel)
{
ADC1->CSR=chanel; //选择通道4
ADC1->CR1|=ADC1_CR1_ADON; //开启adc转换
}
我自己认为chanel既然是选择的第四通道就直接改为
void ADC1_START()
{
ADC1->CSR=4; //选择通道4
ADC1->CR1|=ADC1_CR1_ADON; //开启adc转换
}
试了下发现问题不是出在数字上,而是void ADC1_START(),为什么会这样子啊?
我师傅的函数声明是void ADC1_START(u8 chanel),然后主程序里面是ADC1_START(CHANEL);ps:定义CHANEL为4,然后函数是
void ADC1_START(u8 chanel)
{
ADC1->CSR=chanel; //选择通道4
ADC1->CR1|=ADC1_CR1_ADON; //开启adc转换
}
我的是声明void ADC1_START(void),主程序是void ADC1_START();然后函数是void ADC1_START()
{
ADC1->CSR=4; //选择通道4
ADC1->CR1|=ADC1_CR1_ADON; //开启adc转换
}
我的显示就成我开头描述的一样了,一直0,79,0,79来回显示,而卧师傅的一直是0.然后我改成我师傅那样子,就对了。请问为什么会这样子啊。菜鸟很好奇啊。。求大家帮帮忙。
|