芯片型号 STM8S207R
存在问题:AD功能正常 但是PE6口作为按键输入 就有问题了 死活识别不出来 按键高有效
没搞过这个单片机 刚上手两天 比较紧急 我在想是不是第二功能问题 芯片资料看了一整 由于时间关系 还没找到
问题 望高手明示!
我的AD程序
#define KEY_PORTD GPIOE
#define key_1 GPIO_PIN_6
unsigned char Kkey_flag=0;
void main()
{
PB_DDR = 0x00 ;//PB口做AD采集口 AD功能完好
PB_CR1 = 0x00 ;
PB_CR2 = 0x00 ;
GPIO_Init(KEY_PORTD,key_1,GPIO_MODE_IN_PU_NO_IT);
while (1)
{
if(GPIO_ReadInputPin(KEY_PORTD,key_1))
{
delay_ms(5); //延时消抖
if(GPIO_ReadInputPin(KEY_PORTD,key_1))
Kkey_flag=1;
}
}
}
unsigned int ScanFunc(unsigned char channal)
{
sta
tic unsigned int buf[10];
unsigned char i=0;
unsigned char temp;
unsigned char ADC_DL;
unsigned char ADC_DH;
ADC_CSR&=0xf0;
ADC_CSR|=channal;
for(;i<10;i++)
{
ADC_CR1|=0x01;
while(!(ADC_CSR & 0x80)) // EOC = 1
ADC_DL = ADC_DRL; // Read LSB 1st//right
ADC_DH = ADC_DRH; // read MSB
ADC_CSR &= 0x7f ; // EOC = 0
buf
= (unsigned int)(ADC_DL | (unsigned int)(ADC_DH <<8));
}
buf[0]=0;
for(i=1;i<10;i++)
{
buf[0]+=buf;
}
buf[0]=buf[0]/9;
return buf[0];
}
void InitADC(void)
{
ADC_CR1 &= (unsigned char)(0x8f) ;
ADC_CR1 &= (unsigned char)(0xfd) ;
ADC_CR2 = (unsigned char)(0x38) ;//数据右对齐
// ADC_CR3 &= (unsigned char)(0x00) ;
ADC_TDRH |= (unsigned char)(0xff) ;
ADC_TDRL &= (unsigned char)(0x00) ;
ADC_CSR &= (unsigned char)(0x0f) ;
ADC_CSR |= (unsigned char)(0x06) ; //(ADC1_Ain6) ;
ADC_CR1 |= (unsigned char)(0x01) ;
}
最后再查手册 发现忽略了ADC_TDR
一周热门 更多>