关于STM8S AD口设为IO口出现的问题在线求解答

2019-07-15 15:08发布

芯片型号 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)
{
static 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) ;  
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
liujinyi016
1楼-- · 2019-07-15 21:07
 精彩回答 2  元偷偷看……
hkxiaoma
2楼-- · 2019-07-15 22:07
寄存器操作配置也好  库函数操作也好 就是读取不出来
hkxiaoma
3楼-- · 2019-07-16 03:15
jinyi7016 发表于 2016-1-15 09:30
一、确定你电路上的正确。
二、确定你没有打开复用功能。

最后再查手册   发现忽略了ADC_TDR

一周热门 更多>