OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4391|回复: 2

大神帮看看为什么如下两种程序写法,烧进板子里测出来的IO口输出频率不同

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-8-7
在线时间
0 小时
发表于 2014-8-7 20:53:04 | 显示全部楼层 |阅读模式
5金钱

[mw_shl_code=c,true]方法一 #include "delay.h" #include "sys.h" #include "usart.h" #include "led.h" int main(void) { Stm32_Clock_Init(9); delay_init(72); RCC->APB2ENR|=1<<2; //使能PORTA时钟 RCC->APB2ENR|=1<<5; //使能PORTD时钟 GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003;//PA8 推挽输出 GPIOD->CRL&=0XFFFFF0FF; GPIOD->CRL|=0X00000300;//PD.2推挽输出 while(1) { GPIOD->ODR|=1<<2; //PD.2输出高 GPIOA->ODR|=1<<8; //PA8 输出高 GPIOD->ODR&=~(1<<2); //PD.2输出高 GPIOA->ODR&=~(1<<8); //PA8 输出高 } } 方法二 #include "delay.h" #include "sys.h" #include "usart.h" #include "led.h" int main(void) { Stm32_Clock_Init(9); delay_init(72); LED_Init(); while(1) { GPIOD->ODR|=1<<2; //PD.2输出高 GPIOA->ODR|=1<<8; //PA8 输出高 GPIOD->ODR&=~(1<<2); //PD.2输出高 GPIOA->ODR&=~(1<<8); //PA8 输出高 } } 其中 void LED_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTA时钟 RCC->APB2ENR|=1<<5; //使能PORTD时钟 GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003;//PA8 推挽输出 // GPIOA->ODR|=1<<8; //PA8 输出高 GPIOD->CRL&=0XFFFFF0FF; GPIOD->CRL|=0X00000300;//PD.2推挽输出 //GPIOD->ODR|=1<<2; //PD.2输出高 } 方法一用示波器测出来的IO端口频率约为770khz 方法二用示波器测出来的IO端口频率约为900khz 大神们这是为什么?? [/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-7 23:13:49 | 显示全部楼层
这个不太清楚了,看看汇编代码是不是有什么区别吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-8-7
在线时间
0 小时
 楼主| 发表于 2014-8-8 13:32:25 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-4 02:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表