io口翻转,频率

2019-03-24 16:08发布

我把mclk设置成8M外部晶振,没有分频,对io求反应该是单周期指令.测p1频率应该是4Mhz才对,而我用示波器测P1为667khz
#include"msp430x14x.h"
void main()
{
  WDTCTL=WDTPW+WDTHOLD;
  P1DIR=0XFF;
  P5DIR=0X70;
  P5SEL=0X70;
  unsigned int iq0;
  BCSCTL1&=~XT2OFF;          //打开XT2振荡器
   do
   {
   IFG1 &= ~OFIFG;     // 清除振荡器失效标志
   for (iq0 = 0xFF; iq0 > 0; iq0--);  // 延时,等待XT2起振
  }s
  while ((IFG1 & OFIFG) != 0);    // 判断XT2是否起振
  BCSCTL2 =SELM_2+SELS;     //选择MCLK、SMCLK为XT2
  while(1)
  {
    P1OUT^=0XFF;
  }

} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
chunyang
1楼-- · 2019-03-24 20:32
 精彩回答 2  元偷偷看……
leang521
2楼-- · 2019-03-24 21:15
< :TI_MSP430_内容页_SA7 --> C语言编译时会根据不同条件优化代码,但大部分情况下还是达不到汇编的高效的,你这个高效的代码应该是反转,跳转两条指令,我不知道反转跳转两条指令的周期是多少。所以无法定实际输出频率。
wstt
3楼-- · 2019-03-25 02:43
我也遇到过这种问题,只有个直接时钟输出引脚输出的时钟跟理论一致,一般来讲C写的IO翻转代码不能达到单周期的效率,同时430对IO的寄存器操作是否是真正的单周期,这个我也不能确定
孤独剑
4楼-- · 2019-03-25 06:40
 精彩回答 2  元偷偷看……
deweyled
5楼-- · 2019-03-25 12:32
你可以查看下C转汇编之后的代码,看看是不是单周期就完成了。
tagetage
6楼-- · 2019-03-25 12:41
到不了那个速度

一周热门 更多>

相关问题

    相关文章