MSP432库函数学习笔记-CS

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_COUNTER


void 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库函数是用于开发MSP432微控制器的函数库。要使用MSP432库函数,首先需要下载并安装CCS(Code Composer Studio)开发工具。CCS是由德州仪器(Texas Instruments)公司提供的代码开发和调试套件。可以从TI官网下载CCS并按照安装指南进行安装\[1\]。 在CCS中创建一个新的MSP432项目后,可以下载MSP432库函数。可以从TI官网下载MSP432库函数,并解压缩文件\[2\]。然后,在CCS中右键单击项目文件,选择"Add Existing Files",将下载的函数库文件添加到项目中\[3\]。 通过部署函数库,可以在CCS项目中使用MSP432库函数。在CCS中右键单击项目文件,选择"Add New",然后创建一个名为"driverlib"的新文件。将下载的函数库文件添加到"driverlib"文件中\[3\]。 通过以上步骤,就可以在CCS中使用MSP432库函数进行开发了。MSP432库函数提供了一系列函数和工具,可以帮助开发者更方便地编写和调试MSP432微控制器的应用程序。 #### 引用[.reference_title] - *1* *2* [安装TI_MSP432库和导入CCS工程](https://blog.csdn.net/weixin_42717467/article/details/115005171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MSP430F5529基于CCS库函数开发——软件安装与库函数配置](https://blog.csdn.net/weixin_44098974/article/details/125686172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值