初级会员

- 积分
- 98
- 金钱
- 98
- 注册时间
- 2019-5-29
- 在线时间
- 28 小时
|
现在我手里有两个工程APP和IAP,相同的时钟配置下,APP程序烧写进去正常运行,IAP烧进去单片机就挂掉了,必须硬复位再烧正常程序J-LINK才能找到设备,为了方便查问题,我两个工程都改为MAIN函数直接配置时钟,然后WHILE(1)什么都不干,还是相同的现象。
有问题的IAP工程我是从F107改成F103的,107上正常运行过,改得细节应该都对,启动文件宏定义芯片型号FLASH大小都改了,还是有问题,自我感觉就剩下两个工程的官方库函数我用的版本可能不一样,IAP是我从网上下载的工程然后自己改的,大佬们知道其他可能的原因么。另外我单片机用的25MHz外部晶振然后PLL5倍频125Mhz,虽然103不推荐使用这么高的主频,但是相同配置下我在APP工程上正常跑没问题。
- void RCC_Configuration(void)
- {
- ErrorStatus HSEStartUpStatus;
- RCC_ClocksTypeDef RCC_ClockFreq;
- /* RCC system reset(for debug purpose) */
- RCC_DeInit();
- /* Enable HSE */
- RCC_HSEConfig(RCC_HSE_ON);
- /* Wait till HSE is ready */
- HSEStartUpStatus = RCC_WaitForHSEStartUp();
- if(HSEStartUpStatus != ERROR)
- {
- /* Enable Prefetch Buffer */
- FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
- /****************************************************************/
- /* HSE=25MHz, HCLK=72MHz, PCLK2=72MHz, PCLK1=36MHz */
- /****************************************************************/
- /* Flash 2 wait state */
- FLASH_SetLatency(FLASH_Latency_2);
- /* HCLK = SYSCLK */
- RCC_HCLKConfig(RCC_SYSCLK_Div1);
- /* PCLK2 = HCLK */
- RCC_PCLK2Config(RCC_HCLK_Div1);
- /* PCLK1 = HCLK/2 */
- RCC_PCLK1Config(RCC_HCLK_Div2);
- /* ADCCLK = PCLK2/4 */
- RCC_ADCCLKConfig(RCC_PCLK2_Div6);
- /* Configure PLLs *********************************************************/
- /* PPL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */
- //RCC_PREDIV2Config(RCC_PREDIV2_Div5);
- //RCC_PLL2Config(RCC_PLL2Mul_8);
- /* Enable PLL2 */
- //RCC_PLL2Cmd(ENABLE);
- /* Wait till PLL2 is ready */
- //while(RCC_GetFlagStatus(RCC_FLAG_PLL2RDY) == RESET)
- //{}
- /* PPL1 configuration: PLLCLK = (PLL2 / 5) * 9 = 72 MHz */
- //RCC_PREDIV1Config(RCC_PREDIV1_Source_PLL2, RCC_PREDIV1_Div5);
- RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_5);//4
- /* Enable PLL */
- RCC_PLLCmd(ENABLE);
- /* Wait till PLL is ready */
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
- {}
- /* Select PLL as system clock source */
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
- /* Wait till PLL is used as system clock source */
- while(RCC_GetSYSCLKSource() != 0x08)
- {}
- }
- RCC_GetClocksFreq(&RCC_ClockFreq);
- /* Enable GPIOs clocks */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
- RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
- }
复制代码
|
|