nokiaboy 发表于 2023-8-15 13:49

HC32f460 GPIO翻转速度

按照官方hc32f460_ddl_Rev2.2.0例程配置的时钟,配置GPIO翻转,其速度只能到6Mhz左右。有没有哪位老师的配置能够使GPIO翻转速度达到10Mhz以上的呢?

yang377156216 发表于 2023-8-15 14:02

ddl 库都出 3.1.0 版本了,怎么还在使用旧版本呢?使用寄存器写翻转功能是最快的,别用库函数。

nokiaboy 发表于 2023-8-15 14:11

yang377156216 发表于 2023-8-15 14:02
ddl 库都出 3.1.0 版本了,怎么还在使用旧版本呢?使用寄存器写翻转功能是最快的,别用库函数。 ...

翻转直接操作的寄存器

wubangmi 发表于 2023-8-15 15:33

翻过20Mhz以上的,不过用的是寄存器写法,没有调用库函数

martinhu 发表于 2023-8-15 15:40

追求速度的,不要使用库,最好直接操作寄存器,看编译后汇编代码指令数,越少越好

nokiaboy 发表于 2023-8-15 15:47

wubangmi 发表于 2023-8-15 15:33
翻过20Mhz以上的,不过用的是寄存器写法,没有调用库函数

      POx = (uint16_t *)((uint32_t)(&M4_PORT->PORRB) );
      *POx = (*POx) | Pin12;

            POx = (uint16_t *)((uint32_t)(&M4_PORT->POSRB) );
      *POx = (*POx) | Pin12;

翻到8.7M

zlf1208 发表于 2023-8-15 16:17

本帖最后由 zlf1208 于 2023-8-15 16:20 编辑

nokiaboy 发表于 2023-8-15 15:47
POx = (uint16_t *)((uint32_t)(&M4_PORT->PORRB) );
      *POx = (*POx) | Pin12;


把格式转换、求地址等操作都移到循环外面,频率就上去了。

编程不能仅讲究书写工整,要明白程序编译后是什么样的,什么样的格式是重复低效的。

wubangmi 发表于 2023-8-15 16:18

nokiaboy 发表于 2023-8-15 15:47
POx = (uint16_t *)((uint32_t)(&M4_PORT->PORRB) );
      *POx = (*POx) | Pin12;



如图

fxyc87 发表于 2023-8-15 17:20

nokiaboy 发表于 2023-8-15 15:47
POx = (uint16_t *)((uint32_t)(&M4_PORT->PORRB) );
      *POx = (*POx) | Pin12;



你这不是最快的,有专用的翻转寄存器,而不是SET,RESET

nokiaboy 发表于 2023-8-15 17:38

zlf1208 发表于 2023-8-15 16:17
把格式转换、求地址等操作都移到循环外面,频率就上去了。

编程不能仅讲究书写工整,要明白程序编译后是 ...

好的,谢谢你

nokiaboy 发表于 2023-8-15 17:41

wubangmi 发表于 2023-8-15 16:18
如图

谢谢你,如果我要同时写PB0-PB7呢?是不是应该操作SET和RESET寄存器

nokiaboy 发表于 2023-8-15 17:42

fxyc87 发表于 2023-8-15 17:20
你这不是最快的,有专用的翻转寄存器,而不是SET,RESET

那个试过了,没有直接用SET和RESET快

zhanghqi 发表于 2023-8-15 20:23

用新不用旧

xch 发表于 2023-8-15 21:50

本帖最后由 xch 于 2023-8-15 22:09 编辑

nokiaboy 发表于 2023-8-15 17:42
那个试过了,没有直接用SET和RESET快
通用输出翻转寄存器(POTRx) ?
for(;;)
{
CM_GPIO->POTRx = 1<<PIN_NUM;
}

照理说编译后,仅两条指令。就算4周期吧?速度200MHZ的M4 可以达到50mhz翻转,25MHZ频率

nokiaboy 发表于 2023-8-16 08:48

xch 发表于 2023-8-15 21:50
通用输出翻转寄存器(POTRx) ?
for(;;)
{


嗯,差不多。但是操作IO口给8位并口LCD屏写数据就变慢了

woai32lala 发表于 2023-8-17 14:29

学习

daichaodai 发表于 2023-8-18 08:26

要达到最快翻转速率,只能用库函数。

gygp 发表于 2023-9-7 09:47

GPIO翻转速度会受到多种因素影响

kmzuaz 发表于 2023-9-7 10:10

具体的翻转速度可能会受到其他硬件和软件环境的影响。

bartonalfred 发表于 2023-9-7 10:16

GPIO的工作模式越高,其翻转速度就越快。
页: [1] 2
查看完整版本: HC32f460 GPIO翻转速度