五哥1 发表于 2019-1-23 01:36:07

watershade 发表于 2019-1-22 11:09
你如果愿意回答请好好回答。不要通过灌水的方式来赚积分。谢谢
HAL_Delay的函数原型是:void HAL_Delay ( ...

我尝试过用HAL_Delay(0.15)来代替正点原子程序里Delay(150us)的延时,并且成功把标准库的程序改成了HAL库的程序,你有测试过吗?你如何确定这个是灌水?别死搬教条,实践是检验真理的唯一标准。

watershade 发表于 2019-1-25 09:51:46

本帖最后由 watershade 于 2019-1-25 10:08 编辑

五哥1 发表于 2019-1-23 01:36
我尝试过用HAL_Delay(0.15)来代替正点原子程序里Delay(150us)的延时,并且成功把标准库的程序改成了HAL库 ...
兄弟,首先我道个歉。应该和你联系一下,先讨论一下再说你是不是灌水。Whatever,咱就说说这是不是死板和教条。如果你非要用HAL_Delay,那最好的办法是你再重写这个函数,否则按照C语言语法和编译原则你输入的Doubl或float类型回被强制转换成整形。0.15会变成0.但是如果你非要争论会不会产生延时。我想会的。毕竟你执行了几句话,但是延时不可能太大的。而且也不是你想要的150us延时。(实际上这里你写的0.15默认是double类型)
否则按照函数的内容,怎么可能实现?
__weak void HAL_Delay(uint32_t Delay)
{
uint32_t tickstart = HAL_GetTick();
uint32_t wait = Delay;

/* Add a period to guaranty minimum wait */
if (wait < HAL_MAX_DELAY)
{
    wait++;
}

while((HAL_GetTick() - tickstart) < wait)
{
}
}
你忽悠我吧。如果你能让我信服,我发个帖子。专门向你道歉


五哥1 发表于 2019-1-25 18:17:48

watershade 发表于 2019-1-25 09:51
兄弟,首先我道个歉。应该和你联系一下,先讨论一下再说你是不是灌水。Whatever,咱就说说这是不是死板和教 ...

不知道你有没有WT588D的语音模块,给你个程序来测下。

watershade 发表于 2019-1-26 18:23:34

五哥1 发表于 2019-1-25 18:17
不知道你有没有WT588D的语音模块,给你个程序来测下。

咱们讨论的是这个funtion,怎么扯到模块上了?

chenplay 发表于 2019-5-3 07:26:57

使用的比较少的话,用定时中断,也可以。不然资源浪费在等待上
页: 1 [2]
查看完整版本: SysTick时钟做延时