打印
[技术问答]

76E003频率问题

[复制链接]
1599|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxh11d|  楼主 | 2018-4-4 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main (void)
{
//        unsigned char temp;
        Set_All_GPIO_Quasi_Mode;                                        // Define in Function_define.h
       
        P01_PushPull_Mode;
         
  while(1)
  {
                P01 = !P01;
  }
}


上面这个程序,测出P01口的翻转速度是0.5US左右,这是不是说明系统工作频率只有2MHZ呢,有什么办法可以提高这个速度到16MHZ呢?
沙发
小明的同学| | 2018-4-12 17:00 | 只看该作者
不知道用那么高频率做什么工作,如果真需要,那就换更高频率的芯片。

使用特权

评论回复
板凳
小明的同学| | 2018-4-12 17:01 | 只看该作者
还有你换成
P01=0;
P01=1;
试试

使用特权

评论回复
地板
antusheng| | 2018-4-13 17:20 | 只看该作者
你看看汇编代码。

使用特权

评论回复
5
598330983| | 2018-4-14 16:39 | 只看该作者
好像系统时钟是16M,但是你执行指令肯定不会16, 你查看一下编译后的汇编代码,看看是多少条。

使用特权

评论回复
6
598330983| | 2018-4-14 17:26 | 只看该作者
这个要看汇编代码,一个时钟执行一条,你要看你实现这个用了多少条

使用特权

评论回复
7
huangcunxiake| | 2018-4-15 08:50 | 只看该作者
呵呵,楼主是不是以为你一条C指令只消耗一个时钟周期呢?你不知道while体本身就消耗好几个吗

使用特权

评论回复
8
gejigeji521| | 2018-4-15 10:31 | 只看该作者
这个芯片本身是16M的内置振荡器,你用了循环体想达到这个是不可能的。因为循环体和你的语句都要很多条汇编指令执行。

使用特权

评论回复
9
pmw_56| | 2018-4-15 15:46 | 只看该作者
MCU指令周期与主频率周期不一回事

使用特权

评论回复
10
幸福小强| | 2018-4-15 22:48 | 只看该作者
楼主还不懂单片机执行的整个过程啊。

使用特权

评论回复
11
小灵通2018| | 2018-4-15 23:08 | 只看该作者
2M已经很快了。

使用特权

评论回复
12
gx_huang| | 2018-4-16 09:13 | 只看该作者
我进来看,是看看是否有人在骂LZ呢,还好,本论坛比较文明含蓄。

使用特权

评论回复
13
mintspring| | 2018-4-16 11:53 | 只看该作者
确实有个办法,就是你搞一堆
P01=0;
P01=1;
P01=0;
P01=1;
P01=0;
P01=1;
P01=0;
P01=1;
P01=0;
P01=1;
P01=0;
P01=1;
P01=0;
P01=1;
P01=0;
P01=1;
P01=0;
P01=1;

这样用于while循环体实现的汇编就占比小了。

使用特权

评论回复
14
zhuomuniao110| | 2018-4-16 15:48 | 只看该作者
不是这么操作的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

113

帖子

0

粉丝