太奇怪了,msp430f149的while(1)中只写一句翻转的话,这家伙竟然产生600KHz左右的方波,这是
这是我的程序软件环境:IAR 5.20
下载器:FET430UIF、并口下载器(两个都下载过,结果一样)
芯片:MSP430F149
#include <msp430x14x.h>
//********************************************************************
// 描述:时钟初始化,使用外部晶振7.3728M
// 输入:无输出:无
//校准:今天把系统时钟系统的看了一遍,基本明白了,2011-08-17
//********************************************************************
void CLK_init(void)
{
unsigned int i=0;
BCSCTL1 &= ~XT2OFF; // XT2on,使能外部高速晶振
do
{
IFG1 &=~OFIFG;//清除振荡器失效标志
for (i = 0xFF; i > 0; i--);// 延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振
BCSCTL2 |= SELM_2 + SELS;// MCLK = SMCLK = XT2 (safe),选择外部晶振
}
void main(void)
{
CLK_init(); //时钟初始化
P1SEL &=0x00;//P1.0选择IO功能
P1DIR |=0x01;//方向为输出
P1OUT &=0xFE;
while(1)
{
P1OUT ^=0x01;
}
}
下面是示波器截图,可以看到有600KHz左右的方波(⊙o⊙)哦
http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_670947EPJRAG.jpg
(原文件名:照片3050.jpg)
http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_670948J8W465.jpg
(原文件名:照片3051.jpg)
http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_670949WLS8KT.jpg
(原文件名:照片3052.jpg)
http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_670950G0584R.jpg
(原文件名:照片3053.jpg) 循环一次正好是耗时6个时钟,所以你把晶振 7372800/(6*2) 就正好是600K左右了 回复【1楼】ele_eye
-----------------------------------------------------------------------
那这个149不是单指令周期的东东了? 是不是你晶振出问题了 阿,你可以用示波器看看晶振的输出或者换一个单片机试试看 是你小子,哼哼! 回复【2楼】guxingganyue
那这个149不是单指令周期的东东了?
-----------------------------------------------------------------------
你用1条汇编指令写出 读寄存器 + 异或 + 写寄存器 + 跳转 来看看? 拍照时,对焦要准确,相机要拿稳,按动快门时不可用猛劲 看门狗呢 默认是打开的吧默认的时间呢 是多少?
片子复位之后某些寄存器的值怎么样子的,考虑下。 异或操作,就是每次取反 回复【5楼】gzhuli咕唧霖
回复【2楼】guxingganyue
那这个149不是单指令周期的东东了?
-----------------------------------------------------------------------
你用1条汇编指令写出 读寄存器 + 异或 + 写寄存器 + 跳转 来看看?
-----------------------------------------------------------------------
回复【8楼】xiaoking蒋杰
异或操作,就是每次取反
----------------------------------------------------------------------- 看门狗的没关。main函数开头加句 WDTCTL = WDTPW + WDTHOLD ;试试。 回复【4楼】240671900 疯狂的石头
-----------------------------------------------------------------------
何发现的 回复【6楼】wandy2010 老铁
-----------------------------------------------------------------------
手机不行啊 是LZ奇怪吧,这是一条C取反指令,没运行一次,将对应IO电平置反,怎么奇怪了! 回复【10楼】aida66
-----------------------------------------------------------------------
刚试了,结果一样啊 回复【5楼】gzhuli 咕唧霖
-----------------------------------------------------------------------
不会汇编啊,,等我忙完了再用汇编试试吧 回复【7楼】lyzhangxiang
-----------------------------------------------------------------------
刚算了,我用7.3728MHz的晶振,狗默认时间是:4.4444ms
计算:2^15×1/7372800=0.00444444
http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_671443V4E9YW.jpg
(原文件名:11.jpg) 回复【13楼】wuha 致命武器
-----------------------------------------------------------------------
取反出现方波不奇怪,怪哉:600KHz 回复【楼主位】guxingganyue
-----------------------------------------------------------------------
我不是很清楚 msp430f149 的指令 ,可惜的是我还从来没有用过此类的单片机,
你可以去仔细调试一下,看看C语言对应的 汇编语言是什么? 有几条指令,每条指令占几个时钟,
包括的 C语言P1OUT ^=0x01;是直接取反IO还是,读+异或+写+IO翻转,
你需要确认此单片机的是否有直接能把IO取反的汇编指令,还有IO的翻转速度,
还有循环跳转指令站几个时钟
从现象看 肯定的是有 6 个时钟的,这是无需怀疑, LZ在这里猜来猜去 还不如把对应汇编贴出来 我记得avr,12兆主频,产生3M方波,取反IO口 这么多几分白混了。 。。。。。。。。
页:
[1]