微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 复位后不工作

复位后不工作

时间:10-02 整理:3721RD 点击:
阻容(10K电阻,104电容)复位电路,调试的板子一切正常,新作来的小批量板子,按键复位后芯片不工作,会是什么原因啊,芯片周边的引脚都没焊原件,基本就是最小系统,用了串口1下载程序用,下载后不断电程序可正常运行,断电重启和按复位键后都不能工作,搞不懂啊,从来没遇到过这种情况,哪位大侠给点思路,求助!

能够下载程序,下载后不能工作,那就应该是你的程序问题了;
还有就是复位配置,程序从哪个存储区开始运行,检查下对不对。

时钟配置程序:
void Stm32_Clock_Init(u8 PLL)
{
        unsigned char temp=0;   
        MYRCC_DeInit();                  //复位并配置向量表
        RCC->CR|=0x00010000;  //外部高速时钟使能HSEON
        while(!(RCC->CR>>17));//等待外部时钟就绪
        RCC->CFGR=0X00000400; //APB1=div2;APB2=div1;AHB=div1;
        PLL-=2;//抵消2个单位
        RCC->CFGR|=PLL<<18;   //设置PLL值 2~16
        RCC->CFGR|=1<<16;          //PLLSRC ON
        FLASH->ACR|=0x32;          //FLASH 2个延时周期
        RCC->CR|=0x01000000;  //PLLON
        while(!(RCC->CR>>25));//等待PLL锁定
        RCC->CFGR|=0x00000002;//PLL作为系统时钟         
        while(temp!=0x02)     //等待PLL作为系统时钟设置成功
        {   
                temp=RCC->CFGR>>2;
                temp&=0x03;
        }   
}                    
主程序:
int main(void)
{       
        Stm32_Clock_Init(9);//系统时钟设置
        delay_init(72);                //延时初始化
        Timerx_Init(10,7199);//10Khz的计数频率,计数到10为1ms  
        delay_ms(10);
        Adc_Init();          
        DPIO_Init();
        uart_init(72,19200); //串口1初始化          
       
        while(1)
        {
PBout(3)=0;
    delay_ms(1200);       
        PBout(3)=1;
        delay_ms(1200);
        }
}                                                          

void MYRCC_DeInit(void)
{                                                                                                                            
        RCC->APB1RSTR = 0x00000000;//复位结束                         
        RCC->APB2RSTR = 0x00000000;
          
          RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能.其他关闭.          
          RCC->APB2ENR = 0x00000000; //外设时钟关闭.                          
          RCC->APB1ENR = 0x00000000;   
        RCC->CR |= 0x00000001;     //使能内部高速时钟HSION                                                                                                                                  
        RCC->CFGR &= 0xF8FF0000;   //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]                                         
        RCC->CR &= 0xFEF6FFFF;     //复位HSEON,CSSON,PLLON
        RCC->CR &= 0xFFFBFFFF;     //复位HSEBYP                     
        RCC->CFGR &= 0xFF80FFFF;   //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE
        RCC->CIR = 0x00000000;     //关闭所有中断
        //配置向量表                                  
#ifdef  VECT_TAB_RAM
        MY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else   
        MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
}

我也有这个问题,,,是启动问题还是别的?小编搞懂了没?给解释一下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top