[其他]

systick定时器做延时测试

[复制链接]
515|6
手机看帖
扫描二维码
随时随地手机跟帖
nawu|  楼主 | 2023-3-30 17:00 | 显示全部楼层 |阅读模式
一、systick时钟框图

5546664254248f1e46.png

二、程序

2.1、初始化

void delay_init()
{
    fac_us=CLOCK_SYS_FREQ/8000000;                 
    fac_ms=(uint16_t)fac_us*1000;                     
}


2.2、延时函数

void delay_us(uint32_t nus)
{        
    uint32_t temp;            
    SysTick->LOAD=nus*fac_us;                              
    SysTick->VAL=0x00;                           
    SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;     
    do
    {
        temp=SysTick->CTRL;
    }while((temp&0x01)&&!(temp&(1<<16)));         
    SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;   
    SysTick->VAL =0X00;                           
}

void delay_ms(uint16_t nms)
{                     
    uint32_t temp;           
    SysTick->LOAD=(uint32_t)nms*fac_ms;               
    SysTick->VAL =0x00;                           
    SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;   
    do
    {
        temp=SysTick->CTRL;
    }while((temp&0x01)&&!(temp&(1<<16)));         
    SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;   
    SysTick->VAL =0X00;                                    
}


2.3、主程序

int main(void)
{
        BOARD_Init();
        delay_init();
        init_led();
        init_key();
        printf("\r\nled test.\r\n");

        while(1)
        {               
                GPIO_WriteBit(BOARD_LED0_GPIO_PORT, BOARD_LED0_GPIO_PIN, 1u);
                delay_ms(1);
                GPIO_WriteBit(BOARD_LED0_GPIO_PORT, BOARD_LED0_GPIO_PIN, 0u);
                delay_ms(1);

        }
}

三、程序测试

LED4指示灯电平输出,1ms间隔翻转。
输出电平波形:
5868464254254ab286.png

————————————————
版权声明:本文为CSDN博主「极术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47569031/article/details/127403846

使用特权

评论回复
jackcat| | 2023-4-13 20:29 | 显示全部楼层
利用systick来延时,这阻塞了CPU吗?

使用特权

评论回复
cashrwood| | 2023-4-13 20:49 | 显示全部楼层
systick 延时时间怎么计算的?

使用特权

评论回复
ccook11| | 2023-4-13 21:13 | 显示全部楼层
延时的时间是怎么计算的               

使用特权

评论回复
i1mcu| | 2023-4-13 21:24 | 显示全部楼层
怎么实现Systick做一秒钟延时不占用CPU

使用特权

评论回复
vivilyly| | 2023-4-13 21:31 | 显示全部楼层
stm32延时如何不影响其他程序  

使用特权

评论回复
tifmill| | 2023-4-13 22:24 | 显示全部楼层
用定时器设置延迟函数吧               

使用特权

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

本版积分规则

72

主题

3307

帖子

3

粉丝