回复【5楼】正点原子: --------------------------------- 在“探索者STM32F4开发板”上,可以进入外部时钟配置,但是换到自己的板子上,进入到如下部分,等待外部时钟就绪,不通过,判断后直接退出。 和开发板上电路一样,区别是开发板用的“STM32F407ZGT6”,自己的板子用的是“STM32F407VET6” /* 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));
---------------------------------
晶振没有问题。
void delay_init(u8 SYSCLK)
{
#ifdef OS_CRITICAL_METHOD //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
u32 reload;
#endif
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
fac_us=SYSCLK/8; //??????·?????ucos,fac_us???è??????
#ifdef OS_CRITICAL_METHOD //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
reload=SYSCLK/8; //???????????????? ??????K
reload*=1000000/OS_TICKS_PER_SEC;//?ù??OS_TICKS_PER_SEC?è?¨?????±??
//reload??24???????÷,×??ó??:16777216,??168M??,????0.7989s×ó??
fac_ms=1000/OS_TICKS_PER_SEC;//?ú±íucos???????±??×???????
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //????SYSTICK????
SysTick->LOAD=reload; //??1/OS_TICKS_PER_SEC??????????
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //????SYSTICK
#else
fac_ms=(u16)fac_us*1000;//·?ucos??,?ú±í????ms?è????systick?±????
#endif //SYSTEM_SUPPORT_UCOS
}
这个函数是配置系统“滴答”时钟的么?怎么没有配置RCC,SYSCLK是多少,程序里配置系统时钟是在哪里?
; Reset handler
Reset_Handler  ROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
---------------------------------
在“探索者STM32F4开发板”上,可以进入外部时钟配置,但是换到自己的板子上,进入到如下部分,等待外部时钟就绪,不通过,判断后直接退出。
和开发板上电路一样,区别是开发板用的“STM32F407ZGT6”,自己的板子用的是“STM32F407VET6”
/* 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;
}
if (HSEStatus == (uint32_t)0x01)
{
---------------------------------
说明你的外部晶振电路有问题.
一周热门 更多>