wanyisq 发表于 2016-7-7 09:13
首先你的两个时钟都设置的DCO时钟源 其次你也没有对DCO进行配置啊 16M的时钟哪来的?
问题解决了,主要是因为使用的芯片是MSP430F5438A,貌似和网上很多的例程是不一样的,很多的程序写进去直接提示各种宏定义没有。。所以程序也根本写不进去,更别说调试了。
在
UCSCTL6 |= XCAP_3; // 配置晶振电容复制代码
之后加了两句:
UCSCTL1 = DCORSEL_4; // 选择DCO的范围
UCSCTL2 |= 240; // 设置DCO频率为16M复制代码
但也不能说解决了问题,因为我使用的晶振是16M的,然后设计了一次5W次机器周期的程序翻转P4.0的输出,也就是测试的输出方波周期是10W次机器周期的视角,
按理说DCORSEL_0、DCORSEL_1、DCORSEL_2、DCORSEL_3之类的应该是表示DCO时钟的1/2/3/4分频,或者是1/2/4/8分频才差不多,但是实际测试的结果为:
配置 - 输出频率 - DCO频率 - 分频
DCORSEL_0 - 11Hz - 1M - 16
DCORSEL_1 - 22Hz - 2M - 8
DCORSEL_2 - 49Hz - 5M - 3.5??
DCORSEL_3 - 92Hz - 9M - 11/6??
DCORSEL_4 - 169Hz - 16M - 1
DCORSEL_5 - 169Hz - 16M - 1
DCORSEL_6 - 0Hz - 0 - /
DCORSEL_7 - 0Hz - 0 - /复制代码
且不说6、7为什么是0。。0、1对应的是1M和2M的频率还是好理解的,但是49Hz和92Hz是怎么出来的。。我就是在想不通了,169Hz对应的计算频率是16M,应该已经是电路的极限了,但是分2次频的话也应该是84Hz啊,92Hz是怎么来的?