打印
[STM32L1]

STM32L151延时问题

[复制链接]
1730|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
windit|  楼主 | 2014-9-12 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void delay_init(uint16_t SYSCLK)
{
   // SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  HCLK/8
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
   
    //fac_us=SYSCLK/8; //SYSTICK 的时钟固定为HCLK 时钟的1/8   
    fac_us=SYSCLK/8;

    fac_ms=(uint16_t)fac_us*1000;

}

void delay_us(uint16_t nus)
{
    uint32_t temp;           

    SysTick->LOAD=nus*fac_us; //时间加载            

    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(uint16_t nms)
{
    uint32_t temp;           

    SysTick->LOAD=(uint32_t)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)

    SysTick->VAL =0x00;      //清空计数器

    SysTick->CTRL=0x01 ;     //开始倒数

    do
    {
        temp=SysTick->CTRL;
    }
    while(temp&0x01&&!(temp&(1<<16)));//等待时间到达  

    SysTick->CTRL=0x00;    //关闭计数器

    SysTick->VAL =0X00;    //清空计数器
}
这是STM32f4上面的延时函数,是可以用的!但是移到STM32L151上面就不准确了!求大神帮忙解释下啊,或者给份能精确延时的示例呀。。。
沙发
mmuuss586| | 2014-9-12 12:34 | 只看该作者
SysTick_Config(RCC_Clocks.HCLK_Frequency /1000);//延时1mS
SysTick_Config(RCC_Clocks.HCLK_Frequency /10000);//延时100uS
自己再简单修改下;

L151不准,比如延时1mS,你测试出来是差多少啊?

使用特权

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

本版积分规则

13

主题

20

帖子

2

粉丝