OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3197|回复: 0

调试时总是显示PLL配置出现问题

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-4-2
在线时间
1 小时
发表于 2016-4-2 16:09:14 | 显示全部楼层 |阅读模式
#include "stm32f0xx.h"
        #include "stm32f0xx_conf.h"
        #include "stm32f0xx_it.h"         
        #include  <stdio.h>
  #include "SYSTICK_51R8T6.H"       
        #include "UART_51R8T6.H"
        #include "NVIC_51R8T6.H"
        #include "TIMER_51R8T6.H"
        #include "DS18B20_51R8T6.H"
        #include "ADC_51R8T6.H"  
  #include  "stm32f0xx_adc.h"       

/* 类型定义 typedef------------------------------------------------------------*/
/* 预定义字符------------------------------------------------------------------*/
/* 宏定义----------------------------------------------------------------------*/
#define M  5 //为5个通道
/* 变量定义--------------------------------------------------------------------*/

/////////////////////////////////////////////////////////////////////
unsigned  char   tempL; //温度传感器低字节
unsigned  char   tempH;        //温度传感器高字节
unsigned char    LED_flag = 0 ;
extern  unsigned int  AD[M];
unsigned int led_num = 0;
unsigned char  g_inbuf1[2];
/* 子函数声明------------------------------------------------------------------*/
   void System_Clk_Config(void);
   void Gpio_Init_Config(void);
         void Pll_Init_Config(void);
         void Led_Test_PC8(void);
   void Led_Test_PC9(void);
   void Led_Test_PC8_PC9(void);
   void Led_off(void);
/********************************************************************************
函数名称:main()
功    能:主函数入口
参    数:无
返 回 值:无
*********************************************************************************/
int main(void)
{  
            unsigned char   AD_Temp[10]={0x00};
      unsigned char i;
      led_num =200;
///////////////////////////////////////////////////////////////////////////////       
            SystemInit (); //系统时钟配置函数  通过不同的定义 来选择不同的主频
      Gpio_Init_Config();
            NVIC_config();  /*嵌套向量中断控制器  */
            delay_init();
            Uart_Init();
           //Timer2_Init();
///////////////////////////////////////////////////////////////////////////////               
           //Display_ConfigMenu();
///////////////////////////////////////////////////////////////////////////////               
                  if(DS18B20_Reset())//初始化DS18B20,兼检测18B20
            {
                printf("DS18B20 检测失败! \r\n");     
            }
      else
                printf("DS18B20 初始化成功! \r\n");       
       
      while (1)  
      {        
                            if(g_inbuf1[0]== 0xDD)  
                                                                {  
                                                                       
                                                                         LED_flag =1;
                                                                         ADC_StopOfConversion(ADC1);
                }
                if(LED_flag ==1)
                                                                {
                   if(g_inbuf1[0]== 0x01)       
                                                                         {
                                                                               
                                                                                 Led_Test_PC8();
                                                                                 
                                                                         }
                               if(g_inbuf1[0]== 0x02)       
                                                                         {       
                                                                                     
                                                                                  Led_Test_PC9();
                   }                                                                          
                                                 if(g_inbuf1[0]== 0x03)               
                                                                         {
                                                                                  
                                                                                  Led_Test_PC8_PC9();
                   }                                                                                 
                                                 if(g_inbuf1[0]== 0x04)               
                                                                         {  
                                                                               
                                                                                  Led_off();       
                                                                         }                                                                                 
                 }
                if(g_inbuf1[0] ==0xEE)
                {
                                                                         LED_flag = 0;
                                                                         ADC_StopOfConversion(ADC1);
                                                                         DS18B20_Convert();
                   tempL = DS18B20_Read_Byte(); // LSB   
                   tempH = DS18B20_Read_Byte(); // MSB  
                                                                         Uart_Put_Char(tempL);
                                                                         Uart_Put_Char(tempH);
                }                                       
                                              if(g_inbuf1[0]== 0xFF)   
                                                                {
                                                                         LED_flag = 0;
                   ADC_DMA_Reset();                                                                               
                                                                         ADC_StartOfConversion(ADC1); //开始数据采集;                                                                
                ///////////////////////////////////////////////////
                                                                        //
                                                                          AD_Temp[0]= AD[0];
                                                                          AD_Temp[1]= AD[0]/256;
                                                                          AD_Temp[2]= AD[1];
                                                                          AD_Temp[3]= AD[1]/256;
                                                                          AD_Temp[4]= AD[2];
                                                                          AD_Temp[5]= AD[2]/256;
                                                                          AD_Temp[6]= AD[3];
                                                                          AD_Temp[7]= AD[3]/256;
                                                                          AD_Temp[8]= AD[4];
                                                                          AD_Temp[9]= AD[4]/256;   
                                                                          for(i=0;i<10;i++)
                                                                          {
                                                                                                 Uart_Put_Char(AD_Temp);
                                                                                                 Delay(5000);               
                                                                          }
               }
                                                                  
   }
         
}

/////////////////////////////////////////////////////////////////////////////////////////////

/********************************************************************************
函数名称:SYSTEM_CLK_Config()
功    能:系统时钟配置
参    数:无
返 回 值:无
*********************************************************************************/
void System_Clk_Config(void)
{
       
  RCC_HSEConfig(RCC_HSE_ON);  /* 使能外部高速时钟 HSE */
  while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); /* 等待HSE就绪 */               
  RCC_PLLCmd(ENABLE);   /* 使能锁相环PLL */
  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  /* 等待PLL就绪*/       
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  /* 选择PLL为系统时钟 */
  while (RCC_GetSYSCLKSource() != 0x08);   /* 等待PLL已经成功成为系统时钟 */

}
/********************************************************************************
函数名称:Pll_Init_Config()
功    能:PLL配置
参    数:无
返 回 值:无
*********************************************************************************/
void Pll_Init_Config(void)
{
           RCC_ClocksTypeDef RCC_ClockFreq;
           NVIC_InitTypeDef NVIC_InitStructure;

     RCC_GetClocksFreq(&RCC_ClockFreq);

    /* 使能时钟安全系统(CSS): HSE出现故障时产生一个NMI异常***********************/
     RCC_ClockSecuritySystemCmd(ENABLE);
    /* Enable and configure RCC global IRQ channel, will be used to manage HSE ready
     and PLL ready interrupts.
     These interrupts are enabled in stm32f0xx_it.c file **********************/
     NVIC_InitStructure.NVIC_IRQChannel = RCC_IRQn;
     NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
     NVIC_Init(&NVIC_InitStructure);       
}


/********************************************************************************
函数名称:Gpio_Init_Config()
功    能:GPIO配置
参    数:无
返 回 值:无
*********************************************************************************/
void Gpio_Init_Config(void)
{
     GPIO_InitTypeDef        GPIO_InitStructure;   
     /* GPIOC 外部时钟使能 */
     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
    // RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
     /* 配置 PC8 and PC9 外部输出上拉模式 */
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
     GPIO_Init(GPIOC, &GPIO_InitStructure);
}
/********************************************************************************
函数名称:Led_Test_PC8()
功    能:闪灯--PC8--蓝色       
参    数:无
返 回 值:无
*********************************************************************************/
void Led_Test_PC8(void)
{     
            GPIO_ResetBits( GPIOC,GPIO_Pin_9);
            GPIO_WriteBit(GPIOC, GPIO_Pin_8, (BitAction)((1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8))));
            delay_ms(led_num);
}       
/********************************************************************************
函数名称:Led_Test_PC9()
功    能:闪灯--PC9-绿色
参    数:无
返 回 值:无
*********************************************************************************/
void Led_Test_PC8_PC9(void)
{     
            GPIO_WriteBit(GPIOC, GPIO_Pin_8|GPIO_Pin_9, (BitAction)((1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8|GPIO_Pin_9))));
            delay_ms(led_num);
}       

/********************************************************************************
函数名称:Led_Test_PC9()
功    能:闪灯--PC9-绿色
参    数:无
返 回 值:无
*********************************************************************************/
void Led_Test_PC9(void)
{     
            GPIO_ResetBits( GPIOC,GPIO_Pin_8);
            GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)((1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_9))));
            delay_ms(led_num);
}       
/********************************************************************************
函数名称:Led_off()
功    能:关掉所有的灯
参    数:无
返 回 值:无
*********************************************************************************/
void Led_off(void)
{
           GPIO_ResetBits( GPIOC,GPIO_Pin_8 | GPIO_Pin_9);
}       






///////////////////////////////////////////////////////////////////////////////////////
#ifdef  USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
  while (1)
  {
  }
}
#endif
图中红色文字部分

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 03:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表