微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32f4-discovery板子,调试卡在while(RCC_GetSYSCLKSource()...

stm32f4-discovery板子,调试卡在while(RCC_GetSYSCLKSource()...

时间:10-02 整理:3721RD 点击:
程序如下:
调试卡在了程序中加粗一句,求助!
谢谢各路大神!
#include <stm32f4xx.h>
#include <stdio.h>
void RCC_Configuration(void);        //ê±?ó????
void USART1_Configuration(void);     //′??ú1????

int main(void)
{
uint16_t i = 0;
RCC_Configuration();
USART1_Configuration();
//USART1_NVIC_Configuration();
//DMA_Configuration();
//DMA_NVIC_Configuration();
while(1)
{
  if(USART_GetFlagStatus(USART1,USART_IT_RXNE) == SET)
  {
   USART_SendData(USART1,USART_ReceiveData(USART1));
   for(i = 0;i < 500;i++);
  }
}
}

/*ê±?ó*/
void RCC_Configuration(void)              //ê±?ó????
{
ErrorStatus HSEStartUp;                 //???ùDí±?á?£??óêüHSE?e??·μ???μ
RCC_DeInit();                           //è±ê?RCC??′??÷
RCC_HSEConfig(RCC_HSE_ON);              //?a??HSE,HSE=8M
HSEStartUp = RCC_WaitForHSEStartUp();   //μè′yHSE?e??

if(HSEStartUp == SUCCESS)               //?e??3é1|
{
  RCC_PLLConfig(RCC_PLLSource_HSE,4,288,4,8);        //VCOIN=4M,VCOOUT=288M,PLL=72M,others=36M
  RCC_HCLKConfig(RCC_SYSCLK_Div1);                     //AHB=SYSCLK     72M
  RCC_PCLK1Config(RCC_HCLK_Div2);                      //CLK1=AHB/2     36M
  RCC_PCLK2Config(RCC_HCLK_Div2);                      //CLK2=AHB/2     36M
  
  /*?óê±FLASH 2???ü?ú£?ê1?ü?¤?á?o′?£¨±?D?μ?£?*/
  FLASH_SetLatency(FLASH_Latency_2);
  FLASH_PrefetchBufferCmd(ENABLE);
  
  RCC_PLLCmd(ENABLE);                                  //ê1?üPLL
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  //μè′yPLL?íD÷
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);           //????PLL?aSYSCLK
  while(RCC_GetSYSCLKSource() != 0x08);                //μè′y?μí3ê±?ó?íD÷
}
}
/*′??ú1*/
void USART1_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;    //3?ê??ˉGPIO?á11ì?
USART_InitTypeDef USART_InitStructure;  //3?ê??ˉUSART?á11ì?

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);  //ê1?üGPIOAê±?ó
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //ê1?üUSART1ê±?ó

/*????USART1μ?GPIO*/
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;           //???D1ü??9
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;         //?′ó?1|?ü
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;        //í?íìê?3?
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //I/O?ú×???· ×a?μ?ê50MHz
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;         //é?à μ?×è
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;        //?a??ê?3?
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;     //?Té???à μ?×è
GPIO_Init(GPIOA,&GPIO_InitStructure);

/*????USART1μ??£ê?*/
USART_InitStructure.USART_BaudRate   = 9600;                 //2¨ì??ê?a9600
USART_InitStructure.USART_WordLength = USART_WordLength_8b;  //×?3¤?a8bit
USART_InitStructure.USART_StopBits   = USART_StopBits_1;     //1??í£?1??
USART_InitStructure.USART_Parity     = USART_Parity_No;      //?T????D§?é
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  //2??§3?á÷á?????
USART_InitStructure.USART_Mode       = USART_Mode_Rx | USART_Mode_Tx;            //?£ê?
USART_Init(USART1,&USART_InitStructure);

//USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);       //ê1?üUSART1?óêü??′??÷·???ê±2úéú?D??

USART_Cmd(USART1,ENABLE);       //ê1?ü′??ú1

//USART_ClearFlag(USART1,USART_FLAG_TC);
}

一、确定你的晶振不是不起振了。
二、初始化RCC的程序有问题。

三、你的芯片问题,可以是坏的
四、仿真器的影响

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

网站地图

Top