打印

STM32F407非中断延时和系统时钟问题,求助

[复制链接]
275|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你画我瞎|  楼主 | 2018-7-31 12:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、这种延时不准确
void Delay_Us(unsigned long Nus)
{  
                unsigned long temp;   
        
         SysTick->LOAD=168*Nus; //重装值   
         SysTick->VAL=0x00;      
         SysTick->CTRL=0x01 ;     
         do
         {
                temp=SysTick->CTRL;
         }
                while(temp&0x01&&(!(temp&(1<<16))));
                SysTick->CTRL=0x00;      
                SysTick->VAL =0X00;      
}
void Delay_Ms(unsigned int nms)
{
        
                unsigned long temp;  
                // SysTick->LOAD=(unsigned long)nms*168000;
                SysTick->LOAD=nms;
                SysTick->VAL =0x00;         
                SysTick->CTRL=0x01 ;         
                do
                {
                temp=SysTick->CTRL;
                }
                while(temp&0x01&&(!(temp&(1<<16))));
                SysTick->CTRL=0x00;      
                SysTick->VAL =0X00;      
}   
用这种方式不知道为什么不准确。非中断方式的延时程序。
2、选择了外部时钟,但是读取到的时钟还是168M
void Delay_Init(void)
{
                RCC_ClocksTypeDef  rcc_clocks;
                u32 re;
//                RCC->CFGR &=~(3<<2);
//                RCC->CFGR |=(1<<3);
                SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);        //选择HCLK/8
//                SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);        //选择 HCLK
                SysTick->CTRL&=~(1<<2);                 //选择 HCLK/8
//                SysTick->CTRL|=(1<<2);                 //选择 HCLK
//         SystemCoreClock=21000000;
               
                RCC_GetClocksFreq(&rcc_clocks);  
                re=rcc_clocks.HCLK_Frequency /1000000;
                fac_us=SystemCoreClock/1000000;        
                fac_ms=(unsigned int)fac_us*1000;
                LCD_ShowNum(40,80,re,10,RED);
                LCD_ShowNum(40,40,fac_us,10,RED);
                LCD_ShowNum(40,60,fac_ms,10,RED);
}
用库函数和寄存器都操作过,怎么选择HCLK/8出来都是168M时钟。

求高手指点,不胜感激

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

395

主题

395

帖子

0

粉丝