关于精英版的 {MOD}下载A盘RCC程序问题

2019-08-17 07:22发布

u8 RTC_Init(void)
{
        //检查是不是第一次配置时钟
        u8 temp=0;
        if(BKP->DR1!=0X5050)//第一次配置
        {         
                  RCC->APB1ENR|=1<<28;     //使能电源时钟            
                RCC->APB1ENR|=1<<27;     //使能备份时钟            
                PWR->CR|=1<<8;           //取消备份区写保护
                RCC->BDCR|=1<<16;        //备份区域软复位          
                RCC->BDCR&=~(1<<16);     //备份区域软复位结束                   
            RCC->BDCR|=1<<0;         //开启外部低速振荡器
            while((!(RCC->BDCR&0X02))&&temp<250)//等待外部时钟就绪         
                {
                        temp++;
                        delay_ms(10);
                };
                if(temp>=250)return 1;//初始化时钟失败,晶振有问题          
                RCC->BDCR|=1<<8; //LSI作为RTC时钟             
       
最后这句,应该是选LSE作为RTC时钟才对啊,怎么说是LSI,谁能解答一下。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
bayga456
2019-08-17 12:55
void Adc3_Init(void)
{
        RCC->APB2ENR|=1<<15;                //ADC3 时钟使能
        RCC->APB2RSTR|=1<<15;                //ADC 复位
        RCC->APB2RSTR&=~(1<<15);        //复位结束
        RCC->CFGR&=~(3<<14);                //分频因子清零
        //SYSCLK/DIV2=12M ADC 时钟设置为 12M,ADC 最大时钟不能超过 14M
        //否则将导致 ADC 准确度下降
        RCC->CFGR|=2<<14;
        ADC3->CR1&=0XF0FFFF;                //工作模式清零
        ADC3->CR1|=0<<16;                        //独立工作模式
        ADC3->CR1&=~(1<<8);                        //非扫描模式
        ADC3->CR2&=~(1<<1);                        //单次转换模式
        ADC3->CR2&=~(7<<17);
        ADC3->CR2|=7<<17;                        //软件控制转换
        ADC3->CR2|=1<<20;                        //使用外部触发(SWSTART)!必须使用一个事件触发
        ADC3->CR2&=~(1<<11);                //右对齐
        ADC3->SQR1&=~(0XF<<20);
        ADC3->SQR1|=0<<20;                        //1 个转换在规则序列中 也就是只转换规则序列 1
        //设置通道 1 的采样时间
        ADC3->SMPR2&=~(7<<3*6);                //通道 6 采样时间清空
        ADC3->SMPR2|=7<<3*6;                //通道 6,239.5 个周期,提高采样时间可以提高精度
        ADC3->CR2|=1<<0;                        //开启 AD 转换器
        ADC3->CR2|=1<<3;                        //使能复位校准
        while(ADC1->CR2&1<<3);                //等待校准结束
这也是精英的程序,LSENS程序里面的,最后两句:使能了ADC3复位,等待的是ADC1校准结束,难道这两是同一个寄存器?
有知道的网友,请指教一下。

一周热门 更多>