你的代码不完整吧,delay_s 调用了 delay_ms(1000) 然后就是 delay_us() 函数了。
delay_ms 代码 和 delay_us 之间什么关系?你这代码看不出来。
自己排查吧,可以不要 delay_ms 函数,直接单独调用 delay_us 看看有问题么有,有的话往下排查,看看 delay_us 怎么实现的,寄存器值对不对,时钟选的对不对。排查后没问题,就往上分析,delay_ms 怎么调用的 delay_us 对不对,变量初始值,全都排查一遍。
你这个工程上 rtos 系统了吧,上系统就不要用 systick 了,系统已经用了这个时钟,不要再给 systick 赋初值使能了,整个系统时间基准都被打乱了还暂停,当然时间不准了,换个 timer 试试