历史上的今天
今天是:2025年02月22日(星期六)
2020年02月22日 | MSP430Ware使用笔记 初始化DCO至8MHz
2020-02-22 来源:eefocus
1.平台说明MSP430F5438。
2.ACLK选择XT1,频率为32.768K,MCLK和SMCLK选择DCOCLKDIV,频率为8000K。
// 辅助时钟 ACLK 32.768K
// 系统时钟 子系统时钟 8000K
#include "inc/hw_memmap.h"
#include "ucs.h"
#include "wdt_a.h"
#include "gpio.h"
#include "sfr.h"
void main (void)
{
// 停止看门狗
WDT_A_hold(WDT_A_BASE);
// P4.0保持输出状态
GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN0);
// 初始化P7.0和P7.1为复用功能
GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_P7 , GPIO_PIN0 | GPIO_PIN1 );
// 启动XT1
UCS_LFXT1Start( UCS_BASE , UCS_XT1_DRIVE0 , UCS_XCAP_3 );
// DCO参考时钟选择XT1,选择了默认参数
// UCS_clockSignalInit( UCS_BASE, UCS_FLLREF, UCS_XT1CLK_SELECT ,UCS_CLOCK_DIVIDER_1 );
// DCO时钟8MHz
// 该函数第二个参数为系统工作频率 8000K,第三个参数为 工作频率/DCO参考频率
UCS_initFLLSettle( UCS_BASE, 8000 , 244 );
// 使能全局中断
__bis_SR_register(GIE);
while(1)
{
// 翻转P4.0
GPIO_toggleOutputOnPin(GPIO_PORT_P4,GPIO_PIN0);
// 软件延时
__delay_cycles(1000000);
}
}
从代码的角度来看,使用MSPWare使编程更加简洁,修改更加方便。
最后添加UCS_getSMCLK等函数验证结果,代码如下:
// 辅助时钟 ACLK 32.768K
// 系统时钟 子系统时钟 8000K
#include "inc/hw_memmap.h"
#include "ucs.h"
#include "wdt_a.h"
#include "gpio.h"
#include "sfr.h"
uint32_t clockValue_ACLK = 0;
uint32_t clockValue_MCLK = 0;
uint32_t clockValue_SMCLK = 0;
void main (void)
{
// uint16_t status;
// 停止看门狗
WDT_A_hold(WDT_A_BASE);
// P4.0保持输出状态
GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN0);
// 初始化P7.0和P7.1为复用功能
GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_P7 , GPIO_PIN0 | GPIO_PIN1 );
// 启动XT1
UCS_LFXT1Start( UCS_BASE , UCS_XT1_DRIVE0 , UCS_XCAP_3 );
// DCO参考时钟选择XT1,实际选择了默认参数
// UCS_clockSignalInit( UCS_BASE, UCS_FLLREF, UCS_XT1CLK_SELECT , UCS_CLOCK_DIVIDER_1 );
// DCO时钟8MHz
// 该函数第二个参数为系统工作频率 8000K,第三个参数为 工作频率/DCO参考频率
UCS_initFLLSettle( UCS_BASE, 8000 , 244 );
// 如果使用XT1或者XT2,需要调用该函数
UCS_setExternalClockSource(UCS_BASE,32768,8000000);
clockValue_SMCLK = UCS_getSMCLK(UCS_BASE);
clockValue_MCLK = UCS_getMCLK(UCS_BASE);
clockValue_ACLK = UCS_getACLK(UCS_BASE);
// 使能全局中断
__bis_SR_register(GIE);
while(1)
{
// 翻转P4.0
GPIO_toggleOutputOnPin(GPIO_PORT_P4,GPIO_PIN0);
// 软件延时
__delay_cycles(1000000);
}
}
史海拾趣
|
尊敬的斑竹及各位大牛们好,小弟一直关注次论坛!现在想问个问题?我的wince5.0系统现在可以识别u盘了,但是如果是FAT32格式的u盘识别时间要1分半钟(有时候可能还长),如果是FAt格式的u盘很快就识别了时间大概是10秒左右,我已经测试了n遍都是这样 ...… 查看全部问答> |
|
我对汇编不是很熟悉,看论坛里面有几个DX搞过这个,所以想请教下: 情况是:用AXD调试,bios可以起来!烧写到nandflash中后,就不可以了,所以就是nand_boot_beg段有问题了, 没有将nandflash中的代码搬到ram中去! nand_boot_beg代码如下 nand ...… 查看全部问答> |
|
我的设备的物理地址基址是0x3800 0000,映射成虚拟地址是0x9000 0000 和0x B000 0000 我设计的流接口驱动程序使用VirtualAlloc()函数、VirtualCopy()以及MmMapIoSpace()函数应该怎么映射地址?… 查看全部问答> |
|
linux硬件环境搭建好,在开发板上交叉编译运行自己的程序,却显示/bin/sh:./hello not found. 小弟终于搭建好uboot+linux2.6+busybox的硬件环境,用nfs系统成功驱动。 我自己编了简单的c程序,测试运行情况。 我在linux主机用arm-linux-gcc编译后,复制到开发板根目录运行 却显示 /bin/sh: ./hello not found 请问是交叉编译 ...… 查看全部问答> |
|
Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础 ...… 查看全部问答> |
|
本人菜鸟,请高手指点。有个M3(lm3s8962)小系统,要高速进行AD采样搜集,>=600K 采样频率。AD本身采样频率大于100MSPS,再加上SDRAM做数据缓冲。请问用M3能否实现?采用什么接口接受AD数据。SDRAM那里有什么要注意的?谢谢!… 查看全部问答> |




