本帖最后由 yaomei65 于 2016-5-15 23:50 编辑 所使用的版子是STM32F072RB DISCO 库用了STM32F0xx_StdPeriph 1.5.0版本 把库全部弄好 LED确实有出来 接下来要测试systick的时候delay一直不对 後来发现系统时间只有8MHZ 理论上要是48MHZ 截取一小段程序放在下方 里面的 "HSEStatus" 数值一直都是0 以至於无法设定时钟 我认为这是HSE没有就绪 请问我是有漏掉设定哪个步骤吗? static void SetSysClock(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /******************************************************************************/ /* PLL (clocked by HSE) used as System clock source */ /******************************************************************************/ /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/ /* Enable HSE */ RCC->CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ do { HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); if ((RCC->CR & RCC_CR_HSERDY) != RESET) { HSEStatus = (uint32_t)0x01; } else { HSEStatus = (uint32_t)0x00; } 在附上我的文档 除了main与it其他都没去修改 |
LED_test.rar
下载4.01 MB, 下载次数: 2, 下载积分: ST金币 -1
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
调用很简单:
#define USE_EXTERNAL_HSE 0
#define USE_INTERNAL_HSI 1
#define SystemClockMHz 48//MHZ
void func()
{
if (HW_SystemClockMux(USE_EXTERNAL_HSE, SystemClockMHz) == 0) //为了USB尝试切换HSE时钟//SystemClockMHz
{
HW_SystemClockMux(USE_INTERNAL_HSI, SystemClockMHz); /* 配置系统时钟为48M for USB clock */
}
}
评分
查看全部评分
即使是USB的应用,也可以通过HSI倍频PLL到48MHz,来使用。(DEMO板测试正常)
这段代码我从2010年开始用到现在了,每次换MCU也只是对其进行局部调整#if
希望对你有帮助~~
估计如果跑例程的话,他自带的是HSI了。这个要看时钟树了
评分
查看全部评分