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);
}
调试卡在了程序中加粗一句,求助!
谢谢各路大神!
#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的程序有问题。
三、你的芯片问题,可以是坏的
四、仿真器的影响