MSP430Ware使用笔记 初始化DCO至8MHz

发布者:安静宁静最新更新时间:2020-02-22 来源: eefocus关键字:MSP430  初始化  DCO 手机看文章 扫描二维码
随时随地手机看文章

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);

    }

}


关键字:MSP430  初始化  DCO 引用地址:MSP430Ware使用笔记 初始化DCO至8MHz

上一篇:如何使用 MSP430 内部频率 VLO 以及如何校正频率
下一篇:嵌入式RTOS在MSP430单片机上的实现

推荐阅读最新更新时间:2024-11-09 06:23

MSP430FR6989系列教程之定时器
一、定时器 MSP430单片机的时钟模块主要包括: 三个时钟:辅助时钟ACLK 、主时钟MCLK 、子系统时钟SMCLK 三个振荡器:低频时钟源LFXT1 、高频时钟源XT2 、数字控制RC振荡器DCO 而MSP430单片机工作所需时钟就是由这些振荡器振荡后经处理产生的。 Timer_A 的功能包括: • 具有四种工作模式的异步 16 位定时器/计数器 • 可选择和可配置的时钟源 • 多达七个可配置的捕捉/比较寄存器 • 具有脉宽调制 (PWM) 功能的可配置输出 • 异步输入和输出锁存 • 中断用于快速解码所有 Timer_A 中断的向量寄存器 二、代码编写 这里附上完整的main.c代码 #include msp4
[单片机]
MSP430第二十五章:32位乘法器
1. 32位乘法器(MPY32)介绍 MPY32是不属于CPU的外围模块,这意味着它的活动不会影响CPU活动。乘法器寄存器是外围寄存器,用CPU指令加载和读取。 MPY32支持: 无符号乘法 有符号乘法 累计无符号乘法 累计有符号乘法 8、16、24、32位运算 分数运算 8位和16位操作兼容16位硬件乘法器 不需要“符号扩展”指令的8位和24位乘法 2. MPY32操作 MPY32支持8位、16位、24位和32位操作数进行无符号乘、有符号乘、无符号乘累积和有符号乘累积操作。操作数的大小由操作数被写入的地址以及是否以字或字节的形式写入来定义。操作的类型是根据第一个操作数写入的地址来选择的。硬件乘法器有两个32位的操作数
[单片机]
<font color='red'>MSP430</font>第二十五章:32位乘法器
使用STM32CubeMX生成初始化代码
我使用STM32CubeMX生成初始化代码,使用LL库,这里只介绍跟i2c相关的部分,其他必要的初始化需要自己完成。芯片使用stm32f042。本文的代码不能到手即用,只提供思路。 1、初始化 初始化部分包括GPIO、DMA、I2C等。 1、GPIO 这部分自动生成就OK,一般不需要作修改; LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA); /**I2C1 GPIO Configuration PA9 ------ I2C1_SCL PA10 ------ I2C
[单片机]
MSP430f2619学习—Timer_A定时器
1、定时器时钟图 2、Timer_A寄存器配置 (1)时钟源设置 TACTL |= TASSEL_2 + ID_3 + MC_1 + TACLR; 此处选择SMCLK,8分频,向上计数模式,TACLR位可清TAR计数值; (2)中断配置 MSP430f2619定时器A共有3个捕获/比较寄存器,中断配置涉及到的寄存器:TACTL/TACCTL0/TACCTL1/TACCTL2; 设置方法: TACTL |= TAIE;//溢出中断允许 TACCTL0 |= CCIE;//捕获/比较通道0中断允许 TACCTL1 |= CCIE;//捕获/比较通道1中断允许 TACCTL2 |= CCIE;//捕获/比较通道2中断允许 ,定时
[单片机]
<font color='red'>MSP430</font>f2619学习—Timer_A定时器
MSP430 UART(一)
异步串行通信(UART) 的特点如下: ●传输7位或8位数据,可采用奇校验、偶校验或者无校验; ●具有独立的发送和接收移位寄存器; ●具有独立的发送和接收缓冲寄存器; ●支持最低位优先或最高位优先的数据发送和接收方式; ●内置多处理器系统,包括线路空闲和地址位通信协议; ●通过有效的起始位检测将MSP430单片机从低功耗模式下唤醒; ●可编程实现分频因子为整数或小数的波特率; ●具有用于检测错误或排除错误的状态标志位; ●具有用于地址检测的状态标志位; ●具有独立的发送和接收中断能力。 MSP430 UART的结构 寄存器功能: UCABEN:用于使能或者禁用波特率发生器; UC0B
[单片机]
<font color='red'>MSP430</font> UART(一)
s3c2440裸机-LCD编程-3-框架准备和LCD初始化
1.准备框架 为了让程序更加好扩展,体现出”高内聚、低耦合 的特点,能够兼容各种不同型号的lcd,假如有两款尺寸大小的lcd,如何快速的在两个lcd上切换? 首先我们抽象出lcd_3.5.c和lcd_4.3.c的共同点,比如都有初始化函数init(),我们可以新建一个lcd.c,然后定义一个结构体: struct lcd_opr{ void (*init)(void); }; 用户不接触lcd_3.5.c和lcd_4.3.c,只需要在lcd.c里通过指针访问对应的结构体的函数,也就调用了不同init(),如下图所示: 我们的目的是在LCD显示屏上画线、画圆(geomentry.c)和写字(font.c)其核心是画点(
[单片机]
MSP430F5529-PWM波在串口中的输出及调整
本篇的代码能在试用的端口输出PWM波(附上修改的基本方法) 先放代码: PWM.c Created on: 2021年9月12日 Author: feidao #include MSP430F5529.h #include PWM.h void PWM1(volatile int direction,volatile int speed) { P1DIR |=BIT4; //TA0.3 P1SEL |=BIT4; P1DIR |=BIT5; //TA0.4 P1SEL |=BIT5; TA0CCR0=650;//修改它跟频率有关 if(direction==1) { TA0CCTL3=OUTMOD
[单片机]
<font color='red'>MSP430</font>F5529-PWM波在串口中的输出及调整
MSP430G2553 移植 Contiki RTOS 实时操作系统
平台:Code Composer Studio 10.4.0 MSP-EXP430G2 LaunchPad 试验板 MSP430G2553 LaunchPad™ Development Kit (MSP‑EXP430G2ET) contiki下载:contiki-os Github 本文参考自二、Contiki移植 —— 一根线 本工程示例 新建工程 移植过程 新建contiki文件夹 添加core、cpu文件夹 将Github下载的contiki/core内如下文件复制进刚建好的core文件夹 dev内仅保留watchdog.h lib内仅保留list.c、list.h 把建好的core文件夹加
[单片机]
<font color='red'>MSP430</font>G2553 移植 Contiki RTOS 实时操作系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved