你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8 GPIO翻转速度问题

[复制链接]
albertjacksoon 提问时间:2014-12-13 18:47 /
使用13.56MH晶振作为系统时钟.主函数如下:
void main(void)
{
   /* CLK configuration -------------------------------------------*/
   /* Select HSE as system clock source */
   CLK_SYSCLKSourceSwitchCmd(ENABLE);
   CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
   /* system clock prescaler: 1*/
   CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
   while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE)
   {}
    /* GPIO Configuration */
    GPIO_Init(GPIOB, GPIO_Pin_2, GPIO_Mode_Out_PP_Low_Fast);
    while (1)
   {
      GPIOB->ODR ^= GPIO_Pin_2;
   }
}
实现测量GPIO的翻转速度只有1.1MH这是为什么呢?GPIO的翻转速度不是最高10MH吗?
请高手指教

收藏 评论22 发布时间:2014-12-13 18:47

举报

22个回答
大器所成 回答时间:2014-12-13 21:01:37
抢沙发!
巅峰残狼 回答时间:2014-12-13 21:20:15
GPIO_Init(GPIOB, GPIO_Pin_2, GPIO_Mode_Out_PP_Low_Fast);
初始化的时候速度设置的多少
albertjacksoon 回答时间:2014-12-13 22:00:03
巅峰残狼 发表于 2014-12-13 21:20
GPIO_Init(GPIOB, GPIO_Pin_2, GPIO_Mode_Out_PP_Low_Fast);
初始化的时候速度设置的多少

10M 调用库函数与操作寄存器效果一样
奔跑小蜗牛 回答时间:2014-12-15 09:13:17
IO口输出速度怎么可能达到晶振的速度??手册的2M 10M 50M是翻转速度,不是输出速度。13.56M的晶振,IO能输出个2M 3M就很不错了。
QianFan 回答时间:2014-12-15 13:10:18
直接使用BRR,BSRR两个寄存器,比操作ODR要更快一些
晓枫VS枯叶 回答时间:2014-12-15 17:12:04
楼上正解使用这两个寄存器操作可以更快,测试过stm32 I/0的翻转速度也不过3M左右,可以使用类似下面语句操作。
GPIOB->BRR=GPIO_Pin_11;
GPIOB->BSRR=GPIO_Pin_11;
albertjacksoon 回答时间:2014-12-15 18:16:50
STM8没有BRR和BSRR寄存器
万里-363223 回答时间:2014-12-15 22:29:56
把编译器的优化级别设置为最高级,实现一条语句执行一句汇编,试一下
Dylan疾风闪电 回答时间:2014-12-16 18:26:20
想要翻转快,只有提高主时钟频率。因为主时钟确定的情况下,指令周期时间也是确定的,那么程序的执行必定有最低耗时。
123下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版