MSP432P401R LaunchPad教程(一)时钟配置

专栏目录
MSP432P401R LaunchPad教程 基于keil的开发环境
MSP432P401R LaunchPad教程(一)时钟配置
MSP432P401R LaunchPad教程(二)keil环境配置
MSP432P401R LaunchPad教程(三)滴答定时器

如何将性能拉满 配置到48MHz 具体见下文

一.时钟树

1.七个时钟源

从官方参考手册可以看出,这个mcu的时钟信号一共有七个时钟源,意思就是说所有的时钟信号由这七个时钟源通过各种配置 (分频倍频 选择啥的)出来的

这七个时钟源是

两个外部时钟源

HFXTCLK:

高速振荡器时钟源 允许的频率范围1-MHz to 48-MHz LaunchPad上就有一个48Mhz的晶振 Q2

LFXTCLK:

低速振荡器时钟源 允许的频率范围32KHz以下 LaunchPad上就有一个32768Hz的晶振 Q1

五个内部时钟源

DCOCLK:

数字控制振荡器时钟源 意味着其频率可编程的 默认频率为3MHz 我们为了达到mcu最大工作频率48MHz的话 也可以用DCO当作时钟源 只要把DCO的频率编程设置为48MHz 当然没有外部晶振作为时钟源精确 我的工程文件中都用的是外部高速晶振

VLOCLK :

具有9.4-kHz典型频率的内部极低功率低频振荡器(VLO)

REFOCLK :

内部低功耗低频振荡器(REFO),可选择32.768-kHz或128kHz典型频率

MODCLK :

内部低功耗振荡器,典型频率为25 MHz

SYSOSC :

典型频率为5MHz的内部振荡器

2.五个时钟信号

MCLK

主时钟 master clk 为cpu和外设提供时钟的

其时钟源可以来自LFXTCLK, VLOCLK, REFOCLK, DCOCLK,
MODCLK, or HFXTCLK.

MCLK can be divided by 1, 2, 4, 8, 16, 32, 64, or 128.

HSMCLK

子系统主时钟 为外设提供时钟

其时钟源可以来自LFXTCLK, VLOCLK,REFOCLK, DCOCLK, MODCLK, HFXTCLK.

HSMCLK can be divided by 1, 2, 4, 8, 16, 32, 64, or 128.

SMCLK

低速子系统主时钟 为外设提供时钟

其时钟源可以来自HSMCLK 参考手册里说SMCLK的频率限制为HSMCLK额定最大频率的一半 可以我竟然能把SMCLK设置成48MHz 和HSMCLK一样不知道咋回事

我通过这些函数观测到我设置的时钟频率 发现SMCLK也能到48MHz

SMCLK can be divided independently from HSMCLK by 1, 2, 4, 8, 16, 32, 64, or 128.

ACLK

辅助时钟 为外设提供时钟

其时钟源可以来自LFXTCLK, VLOCLK, or REFOCLK

ACLK canbe divided by 1, 2, 4, 8, 16, 32, 64, or 128.

BCLK

低速备用域时钟 为LPM外设提供时钟

其时钟源可以来自

3.默认时钟配置

默认的是时钟配置都是内部时钟源

默认时钟配置是在启动文件system_msp432p401r.c里SystemInit(void)设置的 这个函数是在启动文件汇编文件里调用的 学过stm32的应该都熟悉

可以在system_msp432p401r.c里通过修改这个宏 更改MCLK的频率 即cpu的主频 通过配置发现 HAMCLK和SMCLK也会跟着改变 所以这个宏应该是同时改变这三者频率

二.用外部晶振作为时钟源

上文所说LaunchPad上板载着两个外部晶振 一个高速一个低速

我们就可以用其作为我们的HFXTCLK和LFXTCLK

配置函数如下

/// @brief 使用外部晶振 达到48MHz
/// @param
void SysInit(void)
{//High:48MHz  Low:32768Hz//MCLK=48MHz  SMCLK=48MHzWDTCTL = WDTPW | WDTHOLD; // 停用看门狗/* 第一步需要配置我们的时钟引脚,这里的高速时钟使用的是外部晶振*///低速时钟初始化比较慢MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ, GPIO_PIN3 | GPIO_PIN2, GPIO_PRIMARY_MODULE_FUNCTION); //HighMAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ, GPIO_PIN0 | GPIO_PIN1, GPIO_PRIMARY_MODULE_FUNCTION); //LowCS_setExternalClockSourceFrequency(32768, 48000000);/* Starting HFXT in non-bypass mode without a timeout. Before we start* we have to change VCORE to 1 to support the 48MHz frequency */MAP_PCM_setCoreVoltageLevel(PCM_VCORE1);/* 更改闪存控制器使用的等待状态数用于读取操作。当改变时钟的频率范围时,必须使用此函数以允许可读闪存通俗来讲就是CPU跑太快了,Flash跟不上,让CPU等等它 */MAP_FlashCtl_setWaitState(FLASH_BANK0, 1);MAP_FlashCtl_setWaitState(FLASH_BANK1, 1);CS_startHFXT(false);          //这是晶体 需要驱动CS_startLFXT(CS_LFXT_DRIVE3); //驱动等级3MAP_CS_initClockSignal(CS_MCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);  //MCLK    48MHz   16分频时,滴答延时可达到最长MAP_CS_initClockSignal(CS_SMCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1); //SMCLK   48MHzCS_initClockSignal(CS_HSMCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);     //HSMCLK  48MHzCS_initClockSignal(CS_ACLK  , CS_LFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);    //ACLK    32768Hz  CS_initClockSignal(CS_BCLK  , CS_LFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);    //BCLK    32768Hz// CS_initClockSignal(CS_ACLK , CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1);    //ACLK     这是不用外部低俗晶振  时钟源为CS_REFOCLK_SELECT// CS_initClockSignal(CS_BCLK  , CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1);    //BCLK
}

这个函数我参考了一个B站up主和官方例程

三.具体工程

我目前基于ti的固件库 进行了二次封装 欢迎大家到我的个人博客中下载

[博客链接](小吕的博客 (dxclv.top))

MSP432P401R LaunchPad教程(一)时钟配置相关推荐

  1. MSP432P401R LaunchPad教程(二)keil环境配置

    MSP432P401R LaunchPad教程(二)keil环境配置 专栏目录 MSP432P401R LaunchPad教程 基于keil的开发环境 MSP432P401R LaunchPad教程( ...

  2. MSP432P401R LaunchPad教程(三)滴答定时器

    MSP432P401R LaunchPad教程(三)滴答定时器 专栏目录 MSP432P401R LaunchPad教程 基于keil的开发环境 MSP432P401R LaunchPad教程(一)时 ...

  3. Cubemx与HAL库系列教程|系统时钟配置详解及源码分析

    STM32时钟系统简介 STM32种类繁多,时钟系统也不尽相同,但基本的还是大差不差,今日小飞哥就F1系列的MCU简单聊一聊STM32的时钟系统 1.时钟种类介绍: 先来看一看时钟树图,包含了整个系统 ...

  4. STM32开发---F103系统时钟配置

    本篇,用自问自答,记录STM32系统时钟配置一些关节点. 因为已重写了系统时钟配置的代码,不再细研配置的过程.步骤,忘了就翻代码就好,且网上不缺絮絮叨叨的各种教程. 一句话总结:  过程高深, 使用简 ...

  5. STM32F0xx_RTC实时时钟配置详细过程

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang Ⅰ.概述 今 ...

  6. STM32CubeMX系列教程8:配置工程模板(串口+不定长数据收发+DMA+IDLE中断+软中断)

    文章目录 摘要 生成工程 配置外设 1.配置时钟与Debug 2.配置串口与DMA 3.配置定时器与中断 配置时钟树 配置工程设置 点击`GENERATE CODE`生成工程 修改源码 配置软中断 配 ...

  7. Kali Linux常用服务配置教程安装及配置DHCP服务

    Kali Linux常用服务配置教程安装及配置DHCP服务 在Kali Linux中,默认没有安装DHCP服务.下面将介绍安装并配置DHCP服务的方法. 1.安装DHCP服务 在Kali Linux中 ...

  8. Spring Cloud Alibaba基础教程:Nacos配置的多环境管理

    <Spring Cloud Alibaba基础教程>连载中,关注我一起学期!前情回顾: <使用Nacos实现服务注册与发现> <支持的几种服务消费方式> <使 ...

  9. STM32的时钟配置随笔

    以前使用STM32都是使用库函数开发,最近心血来潮想要使用寄存器来试试手感,于是乎便在工作之余研究了一下STM32F4的时钟配置,在此将经历过程写下来作为锻炼,同时也供和我一样的新手参考,如有错误或者 ...

最新文章

  1. PHP内置函数生成随机数的方法汇总
  2. tombstone问题分析
  3. JavaScript正则表达式-基础入门
  4. Xamarin使XRPC实现接口/委托远程调用
  5. 石油化工行业需要怎样的工作流平台?
  6. php负载均衡原理_负载均衡的原理(通俗理解)
  7. html基础电子文档,html基础
  8. 华为砸数十亿美金作为奖励 刺激员工信心
  9. 摄像头安装说明_老司机告诉你马路上不同摄像头有不同作用,注意区分小心扣分...
  10. 企业如何做好EDM-企业做EDM的方案设计
  11. jquery 发送验证码60s倒计时,后重新发送
  12. 苹果电脑上好用的几款复制粘贴工具
  13. 只需三步!查看笔记本电脑连接的WiFi密码
  14. 流水灯c语言程序 流程图,流水灯流程图(单片机流水灯流程图)
  15. 在 SSM 中使用 Ajax 进行数据传递
  16. 书摘:别做正常的傻瓜
  17. 《圈外课程学习记录》3.1 数据化汇报展示
  18. 西门子博图指令——Array数据中元素的写入
  19. 量子计算机关键技术有哪些,实现量子通信的关键技术有哪些?
  20. VMR论文visualization实验总结

热门文章

  1. 获取手机宽度高度dpr的方法
  2. 关于微信小程序如何获取用户头像(保存到本地)新方法
  3. BetaFlight开源工程结构简明介绍
  4. 服务器系统装QC软件,HP-QC环境安装设置
  5. 数据通信技术初级工程师
  6. 搭乘地铁|轻轨规律(^-^) [大三四八九月实习]
  7. 22年PMP考试内容大改,敏捷项目管理全套资料,不看过不了!
  8. 如何用快捷键关闭计算机,电脑如何快捷键关机
  9. Unity如何在AssetStore寻找需要的资源并下载导入?
  10. 很多智能手表都用6739芯片_天诺智能手表伴童年,AI智能在身边