请香主提供一个GPIO翻转(18M)的例子: STM32F的宣传资料上说STM32F103X系列gpio最快反转速度为18M ,我调试了许久都达不到这个速度,只有不到3M的样子,搜索了几个论坛也没看到类似的范例,所以麻烦香主提供一个 ---------------------------------------- ------------------------------------------ 实验总结: 查了以前所有相关的帖子,实现io最快速度要看https://bbs.21ic.com/club/bbs/list.asp?boardid=49&t=2912729帖子四楼部分, 但是,以实验结果来看不用写成具体到寄存器地址的形式,比如 “要在GPIOA.0产生翻转输出:" *(vu32 *)0x40010810 = 0x0001; *(vu32 *)0x40010814 = 0x0001"” 直接写成: GPIOx->BRR = GPIO_Pin; GPIOx->BSRR = GPIO_Pin;即可,例如: While(1){ GPIOA->BRR = GPIO_Pin_8; GPIOA->BSRR = GPIO_Pin_8; GPIOA->BRR = GPIO_Pin_8; GPIOA->BSRR = GPIO_Pin_8; GPIOA->BRR = GPIO_Pin_8; GPIOA->BSRR = GPIO_Pin_8; GPIOA->BRR = GPIO_Pin_8; GPIOA->BSRR = GPIO_Pin_8; GPIOA->BRR = GPIO_Pin_8; GPIOA->BSRR = GPIO_Pin_8; } 上述程序即可以使PA.8的反转频率达到约18M。 以上在STM32F103C8T6+iar 4.42 +jlink v6下验证通过。 另外非常疑问的一点如下: 无论GPIO_Init时候,无论GPIOA 端口速度被初始化成50M,或10M,或2M,上述程序均可输出18M的波形,只是初始化成2M时,波形较难看(飘在空中的正弦波),10M和50M的波形非常相近(近似正弦波),换句话说,一般的应用端口初始化成10M应该足够用了。 最后:说得再多,不如自己试一下,想偷懒的话反而更浪费时间。 香主在这个问题上同样也犯了懒,反而浪费了过多口舌。 |