请问大神这个标红的地址对不对?麻烦详解一下

2019-03-23 17:33发布

        ADC2->CR2 = 0x08;//数据右对
        ADC2->TDRH=0x20;//AIN13 禁止施密特触发       
        ADC2->CR1 |= 0X01;

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
KCP
1楼-- · 2019-03-23 18:38
/ 有没有大神给解答一下啊
谭谭()
2楼-- · 2019-03-23 23:31
 精彩回答 2  元偷偷看……
KCP
3楼-- · 2019-03-24 02:56
谭谭() 发表于 2017-8-25 11:10
兄弟,你这个没头没尾的就发出来,有点难啊!建议你看一下你开发板的芯片手册里面对应寄存器的详解,里面应 ...

这是全部程序

#include "stm8s.h"   
#include "OLED12864.h"

void GPIO_int(void)//初始化按键,指示灯
{
        GPIOG->DDR=GPIOG->DDR&0x3f;//PG6,PG7按键配置为输入模式
        GPIOG->CR1=GPIOG->CR1|0xC0;//PG6,PG7按键配置为上拉输入
        GPIOA->DDR=GPIOA->DDR|0x30;//PA4,PA5指示灯配置为输出模式
        GPIOA->CR1=GPIOA->CR1|0x30;//PA4,PA5指示灯d配置为推挽模式
        GPIOA->ODR=0x00;//点亮指示灯
}

void Clock_init(void)//时钟配置 内部16M
{
        CLK->CKDIVR=0;
}

void AD_int(void)//电位器 PF5 初始化 AIN13
{
        u8 value;
        u16 ADC_TDR_tmp;
       
        ADC2->CSR = 13; //AIN13通道选择       
        //select 4MHz clock based on 16MHz fMaster (div4), single mode
        ADC2->CR1 = 0x20;

        ADC2->CR2 = 0x08;//数据右对
        ADC2->TDRH=0x20;//AIN13 禁止施密特触发       
        ADC2->CR1 |= 0X01;//使能ADC,,CR1=0000 0001
       
        value=30;
        while(value--); //等待ADC稳定.

        ADC2->CSR &= 0x7f;//清EOC标志
        ADC2->CR1 |= 0x01;//启动AD
}

main()
{
        unsigned int tem_c=0;
        unsigned char B_k1=0,B_k2=0;
        unsigned int ADConverValue=0;
       
        for(tem_c=0;tem_c<50000;tem_c++);
        Clock_init();
        GPIO_int();
        LCD_Init();
        LCD_Fill(0);
  LCD_P8x16Str(12,0,"U-EASYTECH");  
  LCD_P8x16Str(30,3,"AD test:");      
        AD_int();
       
        while (1)
        {
          if((GPIOG->IDR&0x80)==0x80)B_k1=0; //PG7为高电平,未有按键
                else if(B_k1==0)//PG6按下时,指示灯亮
                {
                        for(tem_c=0;tem_c<500;tem_c++);
                        if((GPIOG->IDR&0x80)==0x00)
                        {
                                B_k1=1;
                                GPIOA->ODR=0x30;
                        }
                }
               
                if((GPIOG->IDR&0x40)==0x40)B_k2=0; //PG6为高电平,未有按键
                else if(B_k2==0)//PG7按下时,指示灯灭
                {
                        for(tem_c=0;tem_c<500;tem_c++);
                        if((GPIOG->IDR&0x40)==0x00)
                        {
                                B_k2=1;
                                GPIOA->ODR=0x0;
                        }
                }
               
                if(ADC2->CSR&0x80)
                {
                        ADC2->CSR &= (u8)(~0x80);//清除EOC标志
                     ADConverValue=ADC2->DRH*256+ADC2->DRL;
                        ADC2->CR1 |= 0x01;//启动AD
                        Display_data(12,6,ADConverValue,0);//将采集到的值显示
                }
        }
}

一周热门 更多>