爱普特APT32F110x系列时钟介绍

news2024/10/4 19:59:52

最近要用APT32F110x做一些开发,顺便学习一下。

APT32F110x 是由爱普特推出的基于平头哥(T-Head Microsystems)CPU 内核开发的 32 位高性能低成本单片机。
APT32F1104x基于嵌入式 Flash 工艺制造,内部丰富的模拟资源,包括模拟比较器、LCD 控制器,面向的应用为工业控制,小家电,消费电子设备,可穿戴设备等应用。

APT32F1104x的系统时钟源选择和 HCLK/PCLK 频率管理 
  支持多种时钟源作为系统时钟运行: 
-  内部低速振荡器(IMOSC)为缺省时钟源:5.556MHz/4.194MHz/2.097MHz/131.072KHz 
-  内部高速振荡器(HFOSC):48MHz 
-  外部主晶振(EMOSC):0.4MHz ~ 24MHz/32.738KHz 
-  外部 RTC 晶振(ESOSC):32.768KHz 
-  内部超低功耗振荡器(ISOSC):27KHz 
  可编程 CPU 时钟(HCLK)和外设时钟(PCLK) 
  外部时钟失效监测(Clock Fail Monitor),支持时钟去抖选项 
  可选择的系统内部时钟源输出(CLO) 

时钟结构如下图:

 

爱普特提供了demo,其时钟设置在board_config.c中的:

csi_clk_config_t tClkConfig = 
	{SRC_HFOSC, HFOSC_48M_VALUE, SCLK_DIV1, PCLK_DIV1, 5556000, 5556000};
	//{SRC_EMOSC, 20000000, SCLK_DIV1, PCLK_DIV2, 5556000, 5556000};
	//{SRC_IMOSC, IMOSC_5M_VALUE, SCLK_DIV1, PCLK_DIV2,5556000, 5556000};
	//{SRC_HFOSC, HFOSC_48M_VALUE, SCLK_DIV1, PCLK_DIV1,5556000, 5556000};
	//{SRC_IMOSC, IMOSC_4M_VALUE, SCLK_DIV1, PCLK_DIV1,5556000, 5556000};
	//{SRC_IMOSC, IMOSC_2M_VALUE, SCLK_DIV1, PCLK_DIV1,5556000, 5556000};
	//{SRC_IMOSC, IMOSC_131K_VALUE, SCLK_DIV1, PCLK_DIV1,5556000, 5556000};
	//{SRC_ESOSC, ESOSC_VALUE, SCLK_DIV1, PCLK_DIV1,5556000, 5556000};

csi_clk_config_t的结构则定义在sys_clk.h:

typedef struct {
	cclk_src_e		eClkSrc;	//clock source
	uint32_t		wFreq;		//clock frequency
	hclk_div_e		eSdiv;		//SDIV
	pclk_div_e		ePdiv;		//PDIV
	uint32_t		wSclk;		//SCLK
	uint32_t		wPclk;
}csi_clk_config_t;

结构字段的具体解释:

cclk_src_e        eClkSrc;    //对应的是SYSCLK_SEL[2:0]
uint32_t        wFreq;    //clock frequency, 输入时钟的频率,比如内部低速振荡器(IMOSC)的:5.556MHz/4.194MHz/2.097MHz/131.072KHz
hclk_div_e        eSdiv;   //SCLK的分频,即SYSCLK_DIV的值, 由“wTargetSclk = wFreq/g_wHclkDiv[tClkConfig.eSdiv];”中的“g_wHclkDiv”决定,取决于g_wHclkDiv的索引值是多少
pclk_div_e        ePdiv;  //PCLK分频,即PCLK_DIV, 实际值是“tClkConfig.wPclk = tClkConfig.wSclk/(0x1<<tClkConfig.ePdiv);”
uint32_t        wSclk;  //SYSCLK,设置无意义,实际由“tClkConfig.wSclk = wTargetSclk;”决定,csi_sysclk_config中会重新赋值
uint32_t        wPclk;   //PCLK,设置无意义,实际由”tClkConfig.wPclk = tClkConfig.wSclk/(0x1<<tClkConfig.ePdiv);“决定,csi_sysclk_config中会重新赋值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/493366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ShardingJDBC核心概念与快速实战

目录 ShardingSphere介绍 ShardingSphere特点 ShardingSphere简述 ShardingSphere产品区分 ShardingJDBC实战 核心概念 实战 ShardingJDBC的分片算法 ShardingSphere目前提供了一共五种分片策略&#xff1a; 分库分表带来的问题 ShardingSphere介绍 ShardingSphere特…

结合SSE实现实时位置展示与轨迹展示

概述 实时位置与实时轨迹的展示是webgis中非常常见的一个功能&#xff0c;本文结合SSE来实现实现此功能。 SSE简介 SSE是Sever-Sent Event的首字母缩写&#xff0c;它是基于HTTP协议的&#xff0c;在服务器和客户端之间打开一个单向通道&#xff0c;服务端响应的不再是一次性…

车牌输入框 封装 (小程序 vue)

车牌输入框 封装 小程序licenseNumber.jslicenseNumber.jsonlicenseNumber.wxmllicenseNumber.wxss样例 vuevnp-input-box.vuevnp-input.vuevnp-keyboard.vue样例 小程序 licenseNumber.js const INPUT_NUM 8;//车牌号输入框个数 const EmptyArray new Array(INPUT_NUM).fi…

6个「会议议程」实例和免费模板

我们都参加过一些团队会议&#xff0c;在这些会议上&#xff0c;大多数与会者对会议的目的一无所知&#xff0c;而发言者则使讨论偏离轨道。 接下来就是一场真正的灾难了。 你会发现你的团队因为“上述会议”而浪费了很多时间&#xff0c;却没有达到任何目的。 好消息! 一个…

【Python】序列类型②-元组

文章目录 1.元组简介2.元组的定义2.1定义只有一个元素的元组 3.元组的下标访问4.元组的常用方法5.使用in判断是否存在元素6.多元赋值操作 1.元组简介 元组和列表一样可以存放多个,不同数据类型的元素 与列表最大的不同就是:列表是可变的,而元组不可变 2.元组的定义 元组的定义:…

TCP/UDP协议

一、协议的概念 什么是协议&#xff1f; 从应用的角度出发&#xff0c;协议可理解为“规则”&#xff0c;是数据传输和数据的解释的规则。 假设&#xff0c;A、B双方欲传输文件。规定&#xff1a; 第一次&#xff0c;传输文件名&#xff0c;接收方接收到文件名&#xff0c;…

Springboot +Flowable,ReceiveTask的简单使用方法

一.简介 ReceiveTask&#xff08;接受任务&#xff09;&#xff0c;它的图标如下图所示&#xff1a; ReceiveTask 可以算是 Flowable 中最简单的一种任务&#xff0c;当该任务到达的时候&#xff0c;它不做任何逻辑&#xff0c;而是被动地等待用户确认。 ReceiveTask 往往适…

RepVGG: Making VGG-style ConvNets Great Again

文章地址&#xff1a;《RepVGG: Making VGG-style ConvNets Great Again》 代码地址&#xff1a;https://github.com/megvii-model/RepVGG 文章发表于CVPR2021&#xff0c;文章提出一种将训练态和推断态网络结构解耦的方法。文章认为目前复杂的网络结构能够获取更高的精度&am…

学大数据需要java学到什么程度

大数据需求越来越多&#xff0c;只有技术在手不愁找不到工作。 学习大数据需要掌握什么语言基础&#xff1f; 1、Java基础 大数据框架90%以上都是使用Java开发语言&#xff0c;所以如果要学习大数据技术&#xff0c;首先要掌握Java基础语法以及JavaEE方向的相关知识。 2、My…

记一次OJ在线代码编辑器(代码编译+运行,C、C++、Java)

如何在SpringBootVue的项目中实现在线代码编译及执行&#xff08;支持编译运行C、C、Java&#xff09;&#xff0c;研究了一天&#xff0c;真实能用&#xff0c;下面直接上源码&#xff01;&#xff01;&#xff01; ————————————————————————————…

MySQL 知识:迁移数据目录到其他路径

一、系统环境 操作系统&#xff1a;Centos 7 已安装环境&#xff1a;MySQL 8.0.26 二、开始操作 2.1 关闭SELinux 为了提高 Linux 系统的安全性&#xff0c;在 Linux 上通常会使用 SELinux 或 AppArmor 实现强制访问控制&#xff08;Mandatory Access Control MAC&#xff…

中间件的概念

中间件(middleware)是基础软件的一大类&#xff0c;属于可复用的软件范畴。中间件在操作系统软件&#xff0c;网络和数据库之上&#xff0c;应用软件之下&#xff0c;总的作用是为处于自己上层的应用软件提供运行于开发的环境&#xff0c;帮助用户灵活、高效的开发和集成复杂的…

阶段二38_面向对象高级_网络编程[UDP单播组播广播代码实现]

知识&#xff1a; InetAddresss:getByName,getHostName,getHostAddress方法UDP通信程序&#xff1a;单播&#xff0c;组播&#xff0c;广播代码实现一.InetAddress 的使用 1.static InetAddress getByName(String host) 确定主机名称的IP地址。主机名称可以是机器名称&#x…

【Java】通过反射方法不改变HashCode以修改String的值

如何修改String的值&#xff1f; 我们首先会想到如下两种方法 方式一&#xff1a;通过StringBuild/StringBuffer String s1 "Hello World!"; System.out.println("s1"s1" HashCode"s1.hashCode()); StringBuilder sb new StringBuilder(s1…

Android JNI配置CMakeLists.txt修改.cpp在logcat打印日志

Android JNI配置CMakeLists.txt修改.cpp在logcat打印日志 C/C代码里面常用的printf没法在Android 的logcat输出显示。需要特别配置C才能显示在logcat里面。 &#xff08;1&#xff09;CMakeLists.txt定义&#xff1a; find_library( # Sets the name of the path variable.l…

yolov1原理

目标检测方法 传统的方法可以按照检测系统分为两种&#xff1a; DPM&#xff0c;Deformatable Parts Models&#xff0c;采用sliding window检测R-CNN、Fast R-CNN。采用region proposal的方法&#xff0c;生成一些可能包含待检测物体的potential bounding box&#xff0c;再…

opencv_c++学习(三)

一、获取图像像素指针 CV Assert(mylmage.depth() CV 8U); CV_Assert()函数判断图像数据的类型是否为uchar类型&#xff0c;不满足则抛出异常。 Mat.ptr(int i0)获取像素矩阵的指针&#xff0c;索引i表示第几行&#xff0c;从0开始计行数。 Mat.ptr(int i0)获取像素矩阵的指针…

【五一创作】【远程工具】- Tabby 下载、安装、使用、配置【ssh/Serial】-免安装、解压即用

目录 一、Tabby 概述 二、Tabby 下载、安装 三、Tabby 的使用  &#x1f449;3.1 使用SSH协议连接Linux开发主机  &#x1f449;3.2 使用Serial(串口)协议连接开发板 一、Tabby 概述 在远程终端工具中&#xff0c;secureCrt 和 XShell 是两款比较有名的远程工具&#xff0c;但…

shell脚本之例题详解

文章目录 1 检查用户家目录中的test.sh文件是否存在&#xff0c;并且检查是否有执行权限2 提示用户输入100米赛跑的秒数&#xff0c;要求判断秒数大于0且小于等于10秒的进入选拔赛&#xff0c;大于10秒的都淘汰&#xff0c;如果输入其它字符则提示重新输入&#xff1b;进入选拔…

Selenium:集成测试报告

目录 一、分拆后的实现代码 二、创建用于执行所有用例的ALL_HTMLtest.py文件 三、集成测试报告 随着软件不断迭代功能越来越多&#xff0c;对应的测试用例也会呈指数增长。一个实现几十个功能的项目&#xff0c;对应的用例可能有上百个甚至更多&#xff0c;如果全部集成在一…