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_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相关推荐
- MSP432库函数学习笔记-GPIO
简述MSP432Pxx-GPIO库的各函数 1,GPIO模式设置,PxDIR寄存器 2,GPIO复用功能配置,PxSEL寄存器 3,GPIO输出电平设置,PxOUT寄存器 4,GPIO输入模式下上/下 ...
- MSP432库函数学习笔记-UART
目录 MSP432工作框图 UART初始化 UART使能 UART数据传输 UART休眠 UART状态查询 UART中断使能 UART中断状态查询和中断处理 UART字符串传输 MSP432工作框图 ...
- MSP432P401R TI Drivers 库函数学习笔记(二)认识TI-RTOS (TI-POSIX)
目录 简介 TI-RTOS FreeRTOS POSIX 运行时对象查看器 (Runtime Object Viewer) TI-POSIX 介绍 在源代码中使用 POSIX TI-POSIX支持的函 ...
- MSP430F5529 DriverLib 库函数学习笔记(九)SPI
目录 硬知识 USCI的同步模式 SPI概述 SPI特性及结构框图 同步操作原理与操作 USCI寄存器--SPI模式 USCI_x_SPI API (机翻) 处理状态和初始化的函数 参数 处理数据的函 ...
- STM32 TIM定时器 库函数学习笔记
一些库函数的用法手册上讲得不甚详细,网上也几乎没有资料,把我个人理解的一些东西和大家分享一下,如有错漏请批评指正. TIM_DeInit(TIM2);//注意:按缺省值复位后,时钟源为内部时钟,不必再 ...
- 【AVR ASF4库函数学习笔记】二、GPIO
目录 枚举类型 函数 平台:Microchip Studio (原Atmel Studio 7) 欣世纪 DMAVR-L Atmega 128A - AU 头文件为port.h 枚举类型 enum p ...
- 【AVR ASF4库函数学习笔记】一、使用Microchip Studio图形化配置工程
目录 新建工程 配置 点灯 效果 平台:Microchip Studio (原Atmel Studio 7) 欣世纪 DMAVR-L Atmega 128A - AU 新建工程 选择所用的芯片后点击C ...
- MSP432P401R TI Drivers 库函数学习笔记(八)ADC
目录 API (机翻) 上机实战 引脚配置 ADC引脚配置 串口引脚配置 指示工作状态的LED1引脚配置 代码部分 ADC初始化和读取函数 myADC.c myADC.h 获取数据并通过串口发送 ma ...
- MSP432P401R TI Drivers 库函数学习笔记(七)I2C驱动OLED屏幕
目录 API (机翻) 上机实战 引脚配置 I2C引脚配置 工作指示灯LED1引脚配置 文件结构 I2C 初始化.读写函数 myI2C.c myI2C.h OLED初始化和测试代码 main.c ma ...
最新文章
- 大数据、智慧城市成生态贵州新名片
- 每天一道LeetCode-----重排链表,节点顺序是从头取一个,从尾取一个,从头取一个,从尾取一个.....
- mysql 代码怎么优化_MySQL 性能优化的简略办法
- Redis工作笔记-Hash类型
- 前端:后端,我要分手,你不适合我
- 关于 C++ 中输入输出的猜想
- [理解ASP.NET Core框架]一个五十行的控制台Web
- 大规模图搜索和实时计算在阿里反作弊系统中的应用
- 31. Next Permutation
- access阿里云 mysql_如何使用access数据库
- 微信小程序——定位(根据经纬度算距离)
- c语言子程序返回指令,十八、使用call和ret指令实现子程序的调用和返回
- tic tac toe php,Python函数找出tic tac toe获胜者
- 计算机单招知识点重点,2018年度单招考试《数学》必背知识点(一).doc
- matlab 用m_map画地形水深图
- vue中的路由对象和路由记录
- word文档在线编辑推荐超级文档
- QT笔记——临时的悬浮窗口
- Lucene.Net 实现搜索功能
- 二、功能篇:八相供电用料豪华,功能齐全应有尽有