如题,STM32F407使用原子大哥的SYSTICK延时函数:
参数和环境:
8M外接晶振,
倍频到SYSCLK=168M,HCLK=168M,
systick时钟采用HCLK的8分频
KEIL MDK下使用JTAG V8硬件仿真
出现问题:
1. delayus函数延时时间在理论的20倍左右
2. delayms函数延时时间在理论的17倍左右
不知道上述问题是仿真与实际差别的正常结果,还是什么问题,我已经通过库函数RCC_GetClocksFreq()确定SYSCLK,HCLK配置正确
本人新手,恳请大家指教!!!谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
今年年底打算学学吧,呵呵,要不落伍了。。。
---------------------------------
原子哥谦虚了,这个延时函数应该可以直接移植到407上吧?可是不知道为什么和理论值差这么多,可能是那块的问题啊,难道只能用示波器测了?
我直接使用寄存器按照原子大哥的流程写的,也是出现了问题。
一直卡死在红 {MOD}的那一行。
void Clock_Init(u8 PLL)
{
unsigned char temp=0;
MYRCC_DeInit(); //复位并配置向量表
RCC->CR |= 0x00010000; //外部高速时钟使能HSEON
while(!(RCC->CR>>17)); //等待外部时钟就绪
//RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
RCC->LLCFGR |= (PLL<<6); //设置PLL值 2~16
RCC->LLCFGR |= (1<<22); //PLLSRC ON
FLASH->ACR |= 0x00000002; //FLASH 2个延时周期
RCC->CR|=0x01000000; //PLLON
while(!(RCC->CR>>25)); //等待PLL锁定
RCC->CFGR|=0x00000002; //PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟设置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
一周热门 更多>