菜鸟机器 发表于 2022-7-11 04:15 你自己掌握好这其中的灵活性和原理就行了,没有必要纠结那么多 每个SPI器件的通讯速度都是不一样的,有的快有的慢,快的有100多MHZ的,比单片机的72MHZ还快,像这种压根就不需要算是 有的却只有几MHZ,这种情况就得加延时了 为了方便的代码的移植,你可以用滴答时钟做一个延时,使用的时候,根据你所用的SPI器件和单片机的时钟来调整就行 像这种while的延时就别在STM32上折腾了,还什么示波器来看,还改代码的,这是开始入门学单片机的代码,知道延时的原理就行了 滴答时钟直接就完事了 |
caoxinri123 发表于 2022-7-11 16:17 为什么要改为循环延时呢?不能调整t值吗? |
用循环延时,正确的做法是,先按照大概的指令时间,然后再用示波器微调 |
黄youhui 发表于 2022-7-11 10:47 非本人写的,我也不知道原作者用意。所以没乱改。 |
菜鸟机器 发表于 2022-7-9 19:17 你都用103了,还用这种傻瓜式延时。随便抄一个滴答定时器也行啊 |
Y_G_G 发表于 2022-7-10 23:05 原来如此。没错就是SPI通讯延时。 |
菜鸟机器 发表于 2022-7-10 19:50 这种延时估计大多就是那种要求不高的,比如有的SPI没那么快,就有一个做做样子就行的,比如只要延时1uS 那这代码就随便一写就行,反正大于1uS就行,在SPI只作为器件控制而已,不作为大数据传送的时候,这种延时对整个程序影响又不大 |
zlc558 发表于 2022-7-10 16:33 这样能用么?会不会对原来程序有影响~ |
qq624353765 发表于 2022-7-10 06:47 非本人写的,我也不知道原作者用意。 |
Y_G_G 发表于 2022-7-10 00:01 是啊,感觉很不标准。 |
可以修改为使用定时器中断 |
所以要少用delay函数 |
有systick为什么还要这种延时代码呢? |
菜鸟机器 发表于 2022-7-9 19:17 你自己试试呗,延迟后翻转IO口,用示波器频率计测试。μs级别的延迟这么写还可以,也没有别的方便的方法,如果是ms级的延迟还这么些就显得太蠢了,用systick。 |
Hephaestus 发表于 2022-7-9 15:13 t怎么调整? |
可以调整t的大小,但是注意并不是按比例缩放,STM32在72MHz有2个flash latency,在24MHz没有。 |