华大芯片时钟调试配置记录
华大F460系列出了好几款,手里有一款HC32F460PETB系列的芯片,去年官网上面给出的例程还是2.1版本,今年再去看的时候,驱动和例程已经更新到了3.0,对比之后发现驱动部分改变还比较大,虽然本质上还是对寄存器进行配置,但是配置形式和封装,还有宏的检查上面,感觉让人理解的话,更加困难一些。根据代码能跑就不要乱动的原则,本来是不想更新的,但是2.1的时候发现一些问题,比如PA11设置为输入的时候,总是读取不到低电平;使用keil的V6.16编译器的时候,就会造成功能很v5版本的不一样,keil的V6编译器与V5相比,有多快?想必用的人都身能体会!自从更换了V6编译器,编译一遍划水3分钟的好日子就一去不复返了。所以,更新驱动库就显得迫在眉睫了。
上一篇讲述了开机启动文件,对了,从启动开始,单步调试就能知道运行流程了。华大(现在改名小华半导体)芯片启动文件详细讲解_风一样的航哥的博客-CSDN博客
今天来简单概述一下时钟的配置。能在数据手册和用户手册看到的东西就不多说了,总结起来大概就是这样子的:
首先外部高速时钟进来,通过选择器进行选择,这里选择有两个第一是外部高速时钟,第二是内部高速时钟作为PLL的时钟源,这里我们选择的是外部高速时钟,外部高速时钟进入PLL之前需要进行分频,为什么要分频呢?应该是消除外部干扰,比如8M的外部高速时钟进入后,进行8分频,这样的话就得到了1M的时钟,然后这1M的时钟再进行倍频,倍频后就得到了一个特别高速的时钟,这个时钟是无法进行使用的,因为频率太快了,所以还有进行再次的分频,分频后的时钟呢就可以作为系统时钟来使用了,系统时钟有了,我们再根据AHP和APB上外设的不同,对系统时钟进行分频处理,这样就得到了我们所需要的外设时钟了,然后根据不同的时钟进行通信。
外部高速时钟
↓
分频
↓
倍频
↓
选择为系统时钟
↓
系统时钟分频
↓
不同的外设时钟总线再次分频
↓
结束
今天遇到的问题是将8M晶振改为12M,因为keta开发板和petb两个开发板是不一样的。参考配置方法为:
华大hc32f460的官方板使用8Mhz无源晶振,关键点如下:
8M无源晶振配置:stcXtalCfg.enMode = ClkXtalModeOsc;
12M有源晶振配置:stcXtalCfg.enMode = ClkXtalModeExtClk;
/* Switch system clock source to MPLL. */
/* Use Xtal as MPLL source. */
/* active crystal:ClkXtalModeExtClk,passive crystal:ClkXtalModeOsc */
stcXtalCfg.enMode = ClkXtalModeExtClk;
stcXtalCfg.enDrv = ClkXtalLowDrv;
stcXtalCfg.enFastStartup = Enable;
CLK_XtalConfig(&stcXtalCfg);
CLK_XtalCmd(Enable);
以上问题解决。
配置12MHz有源晶振,具体配置总结如下:
(1)system_hc32f460.h的宏定义, XTAL_VALUE由8Mhz改为12Mhz
(2)keil工程配置XTAL改为12Mhz
(3)时钟初始化代码,stcXtalCfg.enMode = ClkXtalModeExtClk;(重点)
(4)PLL锁相环按照手册要求配置,在频率范围内
在以上重点的地方:要结合硬件电路确认是无源晶振还是有源晶振,不然就会跟我一样,调到怀疑自己。那怎么区别有源还是无源晶振呢?通常说的有源晶振叫做石英晶体振荡器。 而无源晶振称为石英晶体谐振器简称晶体。 传统的有源晶振和无源晶振非常好区分,有源晶振一般最少得有三个以上引脚:Vcc+、Vcc-和输出端。 而无源晶振只有两个引脚。
看这个晶振电路图,只有两个引脚,是无源晶振啦。要将stcXtalCfg.enMode,ll库中stcXtalInit.u8Mode,设置为CLK_XTAL_MD_OSC.
其他的分频系数,要根据自己需要进行计算。看懂用户用户手册就不难啦。
华大芯片时钟调试配置记录相关推荐
- 华大 MCU 之三 时钟控制器(CMU)配置记录
今天在新项目(MCU 为华大 HC32F460)中不再使用外部晶振,转而要使用 HC32F460 内部的 HRC,之前在使用外部晶振时,对华大 MCU 的时钟配置有过一些了解,但是,由于使用内部晶 ...
- 瑞萨芯片程序移植到华大芯片,运行过程中出现HardFault
记录一下遇见的大坑还没找到原因 如果有大佬遇见过同样问题可以唠唠T T 将原瑞萨芯片R5F100FG的程序移植到华大芯片HC32L176MATA上就移植底层的硬件初始化. 应用层逻辑不动,这样就不用自 ...
- 关于恩智浦MCS9SXEP100芯片时钟配置的问题
关于恩智浦MCS9SXEP100芯片时钟配置的问题 起因: 最近工作上用到了恩智浦的MC9SXEP100芯片,在对其使用过程中对时钟模块配置和调试看门狗芯片SGM760时遇到的一些问题进行记录和交流, ...
- CAN控制器芯片MCP2510调试记录
CAN控制器芯片MCP2510调试记录 配置CAN内核选项 配置CAN相关的内核选项,将下面几项配置添加到defconfig中: kernel/arch/arm/configs/xxx_defconf ...
- 嵌入式开发——rtc时钟调试笔记
前段时间在调试AM335X的rtc时钟功能,一开始是使用芯片内部的rtc时钟模块,后来发现功耗有点高,转而使用rtc时钟芯片,型号为ds1672..现在把两者的调试要点记录下来,方便后续的查阅. 注: ...
- Proteus仿真stm32和51单片机,串口通信调试过程记录
前言 本文所用Proteus版本为8.10,主要内容为在Proteus中仿真stm32和51单片机进行串口通信,记录了仿真过程中遇到的问题和解决办法. 这里要注意的是,在Proteus中 ...
- PHY芯片lan8720调试笔记
简介 因工作需要,设计一款产品,使用STM32F407+LAN8720实现TCP通信.板子焊好后,运行程序一直卡在while (ETH_GetSoftwareResetStatus() == SET) ...
- Centos7 NTP时钟同步配置
Centos7 NTP时钟同步配置 NTP在Linux下有两种时钟同步方式:直接同步(也称跳跃同步)和平滑同步(也称微调同步). 直接同步 使用ntpdate命令进行同步,直接进行时间变更. 如果服务 ...
- MyMac M1/Mac/Win Config配置记录---kalrry
MyMac M1/Mac/Win Config配置记录---kalrry 前言 一.MyMac常用软件列表: 二.✅ Homebrew 三.✅ Xcode Comand Line Tools() 四. ...
最新文章
- 【Spark篇】---Spark解决数据倾斜问题
- dobbo 管理端端口_安装 Dubbo 管理控制台
- 【AI产品】一键去除杂物,Photo Eraser助你拍出美丽照片
- 使用Spring Security3的四种方法概述
- eclipse各种配置
- java 交换两个数的值(临时变量,加减,异或)
- 互联网+2.0:技术有多强 梦想才有多近
- 近一个月来的学习总结(今天的你比昨天的你进步了吗?)
- 操作系统进程线程程序
- TCMalloc : Thread-Caching Malloc
- 【Prison Break】第五天(4.1)
- android 语音库,安卓系统也能用苹果语音库:Vocalizer TTS语音引擎及语音包合集
- LPVOID和PVOID的区别是什么
- JDK和CGLIB动态代理的区别
- 【JavaScript】简易打地鼠游戏
- boost/mpl/assert.hpp:189:21: error: unnecessary parentheses in declaration of ‘assert_arg‘ [-Werror=
- 人民币大写的正确写法(开票据事项)
- urllib库如何设置代理如何传递并保存cookie【python爬虫入门进阶】(02-3)
- 数据守护集群之MPP主备集群
- 【WLAN】【基础知识】WIFI那些事儿之PMF