CS库为clock system即系统时钟配置

此函数库需要系统时钟的基础,可参看我之前的博客MSP432-系统时钟简介

目录

时钟初始化设置

时钟请求模块

获取各时钟源频率

DCO数控时钟源频率设置

CS故障模块

CS中断模块


时钟初始化设置

void CS_setExternalClockSourceFrequency(uint32_t lfxt_XT_CLK_frequency,uint32_t hfxt_XT_CLK_frequency);
//设置外部晶振LFXT和HFXT的频率值

如果不使用外部时钟来源则不管这个,时钟故障机制会选择其他时钟来源


void CS_initClockSignal(uint32_t selectedClockSignal,uint32_t clockSource, uint32_t clockSourceDivider);
//初始化时钟信号//! \param selectedClockSignal Clock signal to initialize.
//!        选择一个时钟信号初始化
//!           - \b CS_ACLK,
//!           - \b CS_MCLK,
//!           - \b CS_HSMCLK
//!           - \b CS_SMCLK
//!           - \b CS_BCLK  [clockSourceDivider is ignored for this parameter]//! \param clockSource  Clock source for the selectedClockSignal signal.
//!        选择时钟信号的时钟源
//!            - \b CS_LFXTCLK_SELECT,
//!            - \b CS_HFXTCLK_SELECT,
//!            - \b CS_VLOCLK_SELECT,     [Not available for BCLK]
//!            - \b CS_DCOCLK_SELECT,     [Not available for ACLK, BCLK]
//!            - \b CS_REFOCLK_SELECT,
//!            - \b CS_MODOSC_SELECT      [Not available for ACLK, BCLK]//! \param clockSourceDivider - selected the clock divider to calculate
//!         clock signal from clock source. This parameter is ignored when
//!         setting BLCK. Valid values are:
//!        选择分频器,时钟信号频率=时钟源频率/x
//!           - \b CS_CLOCK_DIVIDER_1,
//!           - \b CS_CLOCK_DIVIDER_2,
//!           - \b CS_CLOCK_DIVIDER_4,
//!           - \b CS_CLOCK_DIVIDER_8,
//!           - \b CS_CLOCK_DIVIDER_16,
//!           - \b CS_CLOCK_DIVIDER_32,
//!           - \b CS_CLOCK_DIVIDER_64,
//!           - \b CS_CLOCK_DIVIDER_128

要注意这个函数可能导致阻塞,因为此函数会等待CSSTAT寄存器(时钟状态寄存器)被设置为正确的值。

还要注意如果HSMCLK和SMCLK共享相同的时钟源时,当改变HSMCLK的时钟信号,那么SMCLK的时钟信号也会被改变。

bool CS_startHFXT(bool bypassMode);
//检测HFXT外接晶振状态,不带超时bool CS_startHFXTWithTimeout(bool bypassMode, uint32_t timeout);
//检测HFXT外接晶振状态,带有超时

HFXT的外接晶振支持0~48MHz的频率,具体取决于选择的驱动强度。

在调用此函数前需要设置外部晶振频率

有关合适的驱动器设置可参阅特定的元件datasheet

不带超时函数会一直循环直到所有晶振故障标志被清除,可能造成阻塞,带超时则不会阻塞

如果bypassMode被设置为True,则此函数若在短时间内无法排除故障时会绕过故障检测机制,直接从旁路模式打开晶振,直接使用,但一般建议设置为false

正确启动则返回true,未能正确启动则返回false

bool CS_startLFXT(uint32_t xtDrive);
//检测LFXT启动状态bool CS_startLFXTWithTimeout(uint32_t xtDrive, uint32_t timeout);
//带超时的LFXT启动状态//! \param xtDrive is the target drive strength for the LFXT crystal
//!                  oscillator.
//!      Valid values are:
//!         - \b CS_LFXT_DRIVE0,
//!         - \b CS_LFXT_DRIVE1,
//!         - \b CS_LFXT_DRIVE2,
//!         - \b CS_LFXT_DRIVE3,  [Default Value]
//!         - \b CS_LFXT_BYPASS

HFXT的外接晶振支持0~500KHz的频率,具体取决于选择的驱动强度。

在调用此函数前需要设置外部晶振频率

有关合适的驱动器设置可参阅特定的元件datasheet

xtDriver是LFXT晶震的目标驱动强度。

不带超时函数会一直循环直到所有晶振故障标志被清除,可能造成阻塞,带超时则不会阻塞

如果bypassMode被设置为True,则此函数若在短时间内无法排除故障时会绕过故障检测机制,直接从旁路模式打开晶振,直接使用,但一般建议设置为false

正确启动则返回true,未能正确启动则返回false

void CS_setReferenceOscillatorFrequency(uint8_t referenceFrequency);
//选择REFO时钟源频率//! \param referenceFrequency selects between the valid frequencies:
//!        - \b CS_REFO_32KHZ,
//!        - \b CS_REFO_128KHZ,

可选频率为32768Hz和128KHz。

  时钟请求模块

void CS_enableClockRequest(uint32_t selectClock);
//使能时钟请求模块void CS_disableClockRequest(uint32_t selectClock);
//禁用时钟请求模块//! \param selectClock selects specific request disables. Valid values are
//!        are a logical OR of the following values:
//!        - \b CS_ACLK,
//!        - \b CS_HSMCLK,
//!        - \b CS_SMCLK,
//!        - \b CS_MCLK

时钟请求模块可减小不需要特定时钟系统模块的动态功率

获取各时钟源频率

uint32_t CS_getACLK(void);
uint32_t CS_getSMCLK(void);
uint32_t CS_getMCLK(void);
uint32_t CS_getBCLK(void);
uint32_t CS_getHSMCLK(void);
uint32_t CS_getDCOFrequency(void);
//获取各时钟源频率
//单位为Hz

如果时钟来源为HFXT或LFXT则需要先调用CS_setExternalClockSourceFrequency函数

DCO数控时钟源频率设置

void CS_setDCOCenteredFrequency(uint32_t dcoFreq);
//设置DCO的中心频率//! \param dcoFreq selects between the valid frequencies:
//!        - \b CS_DCO_FREQUENCY_1_5, [1MHz to 2MHz]
//!        - \b CS_DCO_FREQUENCY_3,   [2MHz to 4MHz]
//!        - \b CS_DCO_FREQUENCY_6,   [4MHz to 8MHz]
//!        - \b CS_DCO_FREQUENCY_12,  [8MHz to 16MHz]
//!        - \b CS_DCO_FREQUENCY_24,  [16MHz to 32MHz]
//!        - \b CS_DCO_FREQUENCY_48   [32MHz to 64MHz]
void CS_tuneDCOFrequency(int16_t tuneParameter);
//精调DCO频率

每个频率代表一个频率范围的中间值,可通过CS_tuneDCOFrequency函数精调。

void CS_setDCOFrequency(uint32_t dcoFrequency);
//自动将DCO调谐到给定的频率

最大可设置为64MHz

void CS_enableDCOExternalResistor(void);
//使用外部电阻void CS_disableDCOExternalResistor(void);
//不使用外部电阻
void CS_setDCOExternalResistorCalibration(uint_fast8_t uiCalData,uint_fast8_t freqRange);
//设置DCO校准值

一般使用校准填充建议的外部电阻器的数据(见设备数据表)。

CS故障模块

void CS_enableFaultCounter(uint_fast8_t counterSelect);
//使能CS模块故障计数器void CS_disableFaultCounter(uint_fast8_t counterSelect);
//禁用CS模块故障计数器void CS_resetFaultCounter(uint_fast8_t counterSelect);
//复位CS模块故障计数器//! \param counterSelect selects the fault counter to enable
//!        - \b CS_HFXT_FAULT_COUNTER
//!        - \b CS_LFXT_FAULT_COUNTERvoid CS_startFaultCounter(uint_fast8_t counterSelect,uint_fast8_t countValue);
//设置故障计数器的起始值//! \param counterSelect selects the fault counter to reset
//!        - \b CS_HFXT_FAULT_COUNTER
//!        - \b CS_LFXT_FAULT_COUNTER
//! \param countValue selects the cycles to set the fault counter to
//!        - \b CS_FAULT_COUNTER_4096_CYCLES
//!        - \b CS_FAULT_COUNTER_8192_CYCLES
//!        - \b CS_FAULT_COUNTER_16384_CYCLES
//!        - \b CS_FAULT_COUNTER_32768_CYCLES

CS中断模块

void CS_enableInterrupt(uint32_t flags);
//使能单个时钟控制中断源void CS_disableInterrupt(uint32_t flags);
//禁用单个时钟控制中断源uint32_t CS_getEnabledInterruptStatus(void);
//获取启动的中断的状态uint32_t CS_getInterruptStatus(void);
//获取中断状态//! \param flags is a bit mask of the interrupt sources to be enabled.  Must
//! be a logical OR of:
//!                     - \b CS_LFXT_FAULT,
//!                     - \b CS_HFXT_FAULT,
//!                     - \b CS_DCOMIN_FAULT,
//!                     - \b CS_DCOMAX_FAULT,
//!                     - \b CS_DCO_OPEN_FAULT,
//!                     - \b CS_STARTCOUNT_LFXT_FAULT,
//!                     - \b CS_STARTCOUNT_HFXT_FAULT,void CS_clearInterruptFlag(uint32_t flags);
//清除中断标志//! \param flags is a bit mask of the interrupt sources to be cleared.  Must
//! be a logical OR of:
//!                     - \b CS_LFXT_FAULT,
//!                     - \b CS_HFXT_FAULT,
//!                     - \b CS_DCO_OPEN_FAULT,
//!                     - \b CS_STARTCOUNT_LFXT_FAULT,
//!                     - \b CS_STARTCOUNT_HFXT_FAULT,

中断源根据使用的模块不同而变化,可以参考数据表查看可用中断源

void CS_registerInterrupt(void (*intHandler)(void));
//注册中断处理函数void CS_unregisterInterrupt(void);
//注销中断处理函数

MSP432库函数学习笔记-CS相关推荐

  1. MSP432库函数学习笔记-GPIO

    简述MSP432Pxx-GPIO库的各函数 1,GPIO模式设置,PxDIR寄存器 2,GPIO复用功能配置,PxSEL寄存器 3,GPIO输出电平设置,PxOUT寄存器 4,GPIO输入模式下上/下 ...

  2. MSP432库函数学习笔记-UART

    目录 MSP432工作框图 UART初始化 UART使能 UART数据传输 UART休眠 UART状态查询 UART中断使能 UART中断状态查询和中断处理 UART字符串传输 MSP432工作框图 ...

  3. MSP432P401R TI Drivers 库函数学习笔记(二)认识TI-RTOS (TI-POSIX)

    目录 简介 TI-RTOS FreeRTOS POSIX 运行时对象查看器 (Runtime Object Viewer) TI-POSIX 介绍 在源代码中使用 POSIX TI-POSIX支持的函 ...

  4. MSP430F5529 DriverLib 库函数学习笔记(九)SPI

    目录 硬知识 USCI的同步模式 SPI概述 SPI特性及结构框图 同步操作原理与操作 USCI寄存器--SPI模式 USCI_x_SPI API (机翻) 处理状态和初始化的函数 参数 处理数据的函 ...

  5. STM32 TIM定时器 库函数学习笔记

    一些库函数的用法手册上讲得不甚详细,网上也几乎没有资料,把我个人理解的一些东西和大家分享一下,如有错漏请批评指正. TIM_DeInit(TIM2);//注意:按缺省值复位后,时钟源为内部时钟,不必再 ...

  6. 【AVR ASF4库函数学习笔记】二、GPIO

    目录 枚举类型 函数 平台:Microchip Studio (原Atmel Studio 7) 欣世纪 DMAVR-L Atmega 128A - AU 头文件为port.h 枚举类型 enum p ...

  7. 【AVR ASF4库函数学习笔记】一、使用Microchip Studio图形化配置工程

    目录 新建工程 配置 点灯 效果 平台:Microchip Studio (原Atmel Studio 7) 欣世纪 DMAVR-L Atmega 128A - AU 新建工程 选择所用的芯片后点击C ...

  8. MSP432P401R TI Drivers 库函数学习笔记(八)ADC

    目录 API (机翻) 上机实战 引脚配置 ADC引脚配置 串口引脚配置 指示工作状态的LED1引脚配置 代码部分 ADC初始化和读取函数 myADC.c myADC.h 获取数据并通过串口发送 ma ...

  9. MSP432P401R TI Drivers 库函数学习笔记(七)I2C驱动OLED屏幕

    目录 API (机翻) 上机实战 引脚配置 I2C引脚配置 工作指示灯LED1引脚配置 文件结构 I2C 初始化.读写函数 myI2C.c myI2C.h OLED初始化和测试代码 main.c ma ...

最新文章

  1. 大数据、智慧城市成生态贵州新名片
  2. 每天一道LeetCode-----重排链表,节点顺序是从头取一个,从尾取一个,从头取一个,从尾取一个.....
  3. mysql 代码怎么优化_MySQL 性能优化的简略办法
  4. Redis工作笔记-Hash类型
  5. 前端:后端,我要分手,你不适合我
  6. 关于 C++ 中输入输出的猜想
  7. [理解ASP.NET Core框架]一个五十行的控制台Web
  8. 大规模图搜索和实时计算在阿里反作弊系统中的应用
  9. 31. Next Permutation
  10. access阿里云 mysql_如何使用access数据库
  11. 微信小程序——定位(根据经纬度算距离)
  12. c语言子程序返回指令,十八、使用call和ret指令实现子程序的调用和返回
  13. tic tac toe php,Python函数找出tic tac toe获胜者
  14. 计算机单招知识点重点,2018年度单招考试《数学》必背知识点(一).doc
  15. matlab 用m_map画地形水深图
  16. vue中的路由对象和路由记录
  17. word文档在线编辑推荐超级文档
  18. QT笔记——临时的悬浮窗口
  19. Lucene.Net 实现搜索功能
  20. 二、功能篇:八相供电用料豪华,功能齐全应有尽有

热门文章

  1. php写后台轮播图,后台管理系统--轮播图管理
  2. channelarlist_易优CMS:channelartlist 获取当前频道的下级栏目的内容列表
  3. WordCount实现
  4. 麦肯锡称三年内将会发生金融AI大变革
  5. 多传感器融合之雷达图像数据集自动生成 - 20220613
  6. 工具mysql5.528特点_未来主力 试驾全新宝马5系528Li
  7. 经济学说史名词解释及课后习题答案
  8. Java radius源码_Java开发的radius server服务端
  9. 手把手教你写复制U盘文件神器(一)
  10. uni app 开发微信小程序及上线体验