STM8S 时钟配置源码程序

基于stm32控制六位数码管显示定时器时钟+proteus仿真(附源码) 此Proteus仿真使用的是stm32F103R6,74LS245模块,LCD1602,按键,这里主要介绍一下74LS245模块,74LS245是一种集成电路芯片,通常被称为“八位双向电平转换器”。它通常用于将信号从一个电平转换为另一个电平,或者在两个不同的系统之间进行数据传输。在数字系统中,它常被用来增强输入/输出(I/O)的驱动能力。这个模块有八个输入/输出引脚(A1-A8和B1-B8),B1-B8口它们可以在输入和输出模式之间切换。它还有两个方向控制引脚(DIR和DIR!),用来控制数据的流向。 阅读详情

型号:stm8s903k3

编译器:STVD4.3.5+cosmic 8k 5.4.1

其他:采用操作寄存器,不使用库

-----------------

时钟是单片机的灵魂,所有的东西都和时钟有关。相比AVR反人类的熔丝位设置时钟/振荡源。stm只要操作寄存器就可以了。最关键的是!!就算设置错了也不!会!锁!死!

----------------

stm内部时钟示意图。



由图就可知,系统时钟可以由外部HSE(high speed external)或内部高速时钟HSI(high speed internal)或内部低速时钟LSI(low speed internal)提供。这里以内部高速时钟举例,内部高速时钟HSI经过HSIDIV分频,得到Fmaster时钟,这个请注意,顾名思义,这个时钟是主要时钟,芯片内的其他所有时钟,都是通过这个时钟分频而来(一次分配),并且他还控制这这些外设时钟的门(开启或者关闭)。

Fmaster是主干,内部/外部时钟是根,CPU或者外设时钟是枝,根和枝有很多,但是主干就一个。

 

因此,配置时钟的思路就是。

首先确定好Fmaster的值,默认是分频8,我们可以通过HSIDIV位来改变。

第二确定好CPU的频率,通过设置CPUDIV实现。

第三选择使能的外设时钟,在有功耗要求的情况下,关闭不使用的时钟可以降低功耗。默认全部开启。

第四其他设置,时钟切换啊SWIM啊时钟输出等等。下面源码没设置均默认。


下面是源码

 /************************************************************************/
/* 功能:时钟配置初始化
 * 形参:无
 * 返回:无
 * 修改:2014-11-14
 * 缘由:全局时钟初始化,主频,门控位              */ 
/************************************************************************/
void clk_init(void)
{

	/*对于内部高速时钟HSI[16MHz],其逻辑关系是HSI---[HSIDIV分频]---[时钟选择门]---
	* 主时钟Fmaster---{[CPUDIV分频]---Fcpu时钟;其他外设时钟}
	*/
	CLK_ICKR = 0x01;	//Internal clock control register。复位值,使能HSI时钟,快速唤醒禁止
	CLK_ECKR = 0x00;	//External clock control register。HSE禁止。
	CLK_SWR	 = 0xE1;	//Clock master switch register。选择HSI为主时钟。
	CLK_SWCR = 0x00;	//Clock switch control register。时钟切换,中文数据手册翻译似乎有误
	
        /*Clock divider register。分频Fmaster和Fcpu。
	* 默认是8和1,现在是2和1,因此Fmaster=8M,Fcpu=8M	*/
	CLK_CKDIVR = 0x08;
	CLK_PCKENR1 = 0xFF;	//Peripheral clock gating register 1。Fmaster与外设时钟连接
	CLK_PCKENR2 = 0x0;	//同上
	CLK_CSSR = 0x0;	        //Clock security system register。时钟安全检测关
	CLK_CCOR = 0x0;		//Configurable clock control register。时钟输出关闭
}

-------------------

更新,stm有个LSI校准的功能,具体可以看芯片手册。而且这个校准功能,库函数已经写好了。但是使用的时候要注意两点。

一,库函数的LSI校准功能是使用AWU和TIM3的,因此在上面的配置中CLK_PCKENR2里面应该配置为打开AWU外设,否则会死循环。

二,TIM3如果需要做其他功能的话,务必在LSI校准之后配置,即顺序时主时钟初始化----LSI校准----TIM3配置,否则会无法启动TIM3

三,以上的LSI校准程序来自最新的官方固件库。其实个人认为如果频率要求不严就不要配置了,比如蜂鸣器……

STM8S001J3开发避坑指南:从零开始用IAR EWSTM8点亮LED(附完整源码) 本文是一份针对STM8S001J3微控制器在IAR EWSTM8开发环境下的实战避坑指南。详细解析了从零搭建LED点灯工程时,在工程结构、芯片选型、头文件路径、源码适配及库文件裁剪等环节的常见编译陷阱与解决方案,帮助开发者高效驯服这颗8位MCU。 阅读详情

相关推荐

避坑指南:IAR for STM8 3.11.1 配置 STM8S003 模板工程时常见的5个编译错误

本文详细解析了使用IAR for STM8 3.11.1配置STM8S003模板工程时常见的5个编译错误,包括头文件路径设置、MCU型号宏定义、stm8s_conf.h文件处理、硬件驱动文件筛选及库源码解压失败等问题。通过实战经验分享,帮助开发者快速定位并解决这些棘手问题,提升开发效率。

weixin_33743880的博客 510

stm8s003_切换时钟流程分析、配置外部晶振(库函数调用)

疑问,如果外部晶振开启失败了,又关闭了旧的时钟,会不会不能往下运行?验证:把外部晶振取下,模拟开启失败的情况。不管是关闭旧时钟CLK_CURRENTCLOCKSTATE_DISABLE,还是不关闭旧时钟CLK_CURRENTCLOCKSTATE_ENABLE,程序都能继续往下执行,并且时钟频率为旧的时钟频率。注:如果在开启外部晶振前,把内部时钟的分频调成1(16MHz),那么外部晶振开启失败后时钟频率还是16MHz;设置这个用处就是,

人非生而知之者 2787

STM8S105微控制器完整源码与库文件实战包

STM8S105是一款基于STM8内核的中端8位微控制器,广泛应用于工业控制、消费电子和汽车电子等领域。其内核采用高效的RISC架构,具备32位宽的寄存器文件与高效的指令集,支持单时钟周期操作,显著提升了运算效率。在内存组织方面,STM8S105配备了最多64KB的Flash程序存储器与2KB的RAM数据存储器,支持ISP与IAP功能,便于现场升级与动态配置。其外设模块包括:GPIO、定时器、ADC、SPI、I2C、USART等,能够满足多种嵌入式应用场景的需求。

weixin_31974443的博客 739

STM8S之时钟设置

昨天被安排做别的工作,耽误一天,今天继续写,坚持学习。 1,STM8S的4种时钟源可用做主时钟: ● 1-24MHz高速外部晶体振荡器(HSE) ● 最大24MHz高速外部时钟信号(HSE user-ext) ● 16MHz高速内部RC振荡器(HSI) ● 128KHz低速内部RC(LSI) 各个时钟源可单独打开或关闭,从而优化功耗。 2,系统的启动 为使系统快速启动,复...

dijianfei2190的博客 1210

STM8S103微控制器开发实践例程源码

微控制器在嵌入式系统中发挥着核心作用,其中STM8S103系列以其出色的性能与极高的性价比受到广泛关注。本章将介绍STM8S103的基本信息,为理解后续章节内容奠定基础。STM8S103微控制器采用的是8位的STM8核心,是STMicroelectronics(意法半导体)推出的高性能、低功耗产品。适用于多种应用场合,如工业控制、消费电子、汽车电子等。该系列处理器通常集成了丰富的外设接口,如SPI、I2C、USART等,能够支持广泛的应用需求。

weixin_35752122的博客 670

STM8S903微控制器控制无刷直流电机无感驱动源码项目

STM8S903属于STMicroelectronics的STM8微控制器系列,该系列具备高性能、低功耗和丰富的片上资源特性。它内置了高性能的8位微处理器核心,以及足够的GPIO口、模拟外设、通信接口和定时器等资源,非常适合用于电机控制。

weixin_32098457的博客 694

关于STM8的时钟源配置

关于STM8的时钟源配置

armauk的专栏 6577

stm8s003与ds1307时钟芯片程序

stm8s003与ds1307时钟芯片程序,硬件IIC模式,连对SCL,SDA即可。

STM8 定时器TIM1 计时

ST公司的STM8单片机的TIM1定时器,是一个16位高级控制定时器,可用于实现基本的定时,PWM波的产生,这里主要分析下基本的计时功能。        我们先看ST提供的库函数中TIM1定时器的初始化函数       void TIM1_TimeBaseInit(uint16_t TIM1_Prescaler,                        TIM1_CounterMode

梦里水鬼 5779

基于STM8S003K3T6设计的8路继电器带LCD1602显示的控制板ALTIUM原理图+PCB+软件程序源码.zip

基于STM8S003K3T6设计的8路继电器带LCD1602显示的控制板ALTIUM原理图+PCB+软件程序源码,硬件采用2层板设计,大小为100*100mm,包括AD设计的完整原理图和PCB源文件,及软件控制程序源码。 硬件主要器件: Bell Electrical Bell LCD1602 LCD1602 LED1 LM2576 LM2576 Relay-JZC Single-Pole Single/Dual-Throw Relay Res1 Resistor STM8S003K3T6 Value line, 16 MHz STM8S 8-bit MCU, 8 Kbytes Flash, 128 bytes data EEPROM, 10-bit ADC, 3 timers, UART, SPI, I2C SW-PB Push Button

一文读懂世界模型(World Model):AI的“数字大脑”,通往AGI的核心基石

世界模型正成为AI领域的关键技术,它让AI在虚拟环境中模拟物理世界规律并预测行动后果,从而减少现实试错成本。2018年Ha和Schmidhuber提出的VAE+RNN架构奠定基础,2022年后自监督学习推动快速发展。当前世界模型分为潜空间、生成式、强化学习和对象中心四大流派,已在机器人、自动驾驶、工业仿真等领域落地应用。尽管面临长时序预测误差等挑战,未来将向多模态建模、大模型融合等方向发展,成为实现具身智能和通用人工智能的核心基石。

m0_38116472的博客 806

【IAR工程】STM8S208RB基于ST标准库蜂鸣器(BEEP)驱动

【IAR工程】STM8S208RB基于ST标准库蜂鸣器(BEEP)驱动

perseverance51博客 931

保姆级教程:在Ubuntu 22.04上用Conda搞定nuPlan数据集环境(Python 3.9 + PyTorch)

本文提供了一份详细的Ubuntu 22.04环境下使用Conda配置nuPlan自动驾驶数据集的保姆级教程,涵盖Python 3.9安装、Conda环境管理、PyTorch配置及数据集可视化验证等关键步骤,帮助开发者高效搭建开发环境。

weixin_29061997的博客 254

STM32L051xx的时钟配置

1、背景 最近,做移植,因此对目标平台做一些了解。 STM32L051C6T6资源为32K Flash;2K EEPROM;8K RAM;37 GPIOs;1ADC(10 Channels) 2、系统刚起来时的时钟配置 时钟配置是嵌入式程序中比较重要且基础的部分。 有四种不同的时钟源,可用于驱动系统时钟(SYSCLK)。 时钟源:HSI16、HSE、PLL、MSI AHB、APB1...

zhejfl的博客 3817

岭回归的MATLAB步骤

MATLAB 实现框架,它涵盖了从数据导入到岭回归的步骤,包括计算共线性、使用 MAE、MSE、R²、MAPE 进行评价,以及绘制相应的可视化图表。

subject625Ruben的博客 1089

Unity Sprite Editor切片功能详解:如何快速将一张大图拆分成多个小图(附常见问题解决)

本文详细解析了Unity Sprite Editor的切片功能,指导开发者如何高效地将一张大图拆分为多个独立小图。文章涵盖了自动与手动切片操作步骤、轴心点设置、子精灵命名管理等核心技巧,并针对切片错位、性能优化等常见问题提供了实用解决方案,帮助提升2D游戏资源处理效率。

i0j1k2l3m的博客 647

stm8s 串口通讯源码程序(8位数据,奇校验,2个停止位)

串口初始化第一步,配置波特率,波特率是和时钟相关的,因此首先要配置时钟,时钟的配置参见上一篇博客。stm8s主时钟设置 如果在串口初始化中,如果串口时钟没有打开,请在主时钟配置中打开串口时钟。 配置波特率,stm8s的波特率,时钟,波特率寄存器值的计算相比avr和51又是巨大的进步,stm8s算波特率寄存器值只要Fmaster/波特率就可以了,不需要加加减减。 但是在写入寄存器时需要

零界 9891

集成calibre到cadence virtuoso环境中 load: can‘t access file - “/opt/eda/Mentor/lib/calibre.skl“

项目场景: 设想是将Calibre集成到cadence virtuoso中,但网上的解决办法尝试过在本机上实验都有点问题,因此想记录下来我的解决办法仅供参考。 问题描述: 安装好cadence, calibre之后打开virtuoso,CIW窗口显示 *Error* load: can't access file - "/opt/eda/Mentor/lib/calibre.skl" 问题是出在calibre.skl的加载路径出错,尝试网上的在工程目录下修改.cdsinit文件,添加calibre安装

weixin_52714276的博客 1万+

基于DS3231时钟模块的stm32 程序,源码

本文介绍了DS3231高精度实时时钟芯片的结构原理及与STM32的通信实现。DS3231是一款集成温度补偿晶体振荡器的I2C实时时钟器件,具有电池备份功能,断电仍可保持精确计时。文章详细分析了芯片内部结构、寄存器功能及典型应用电路。在STM32通信部分,提供了完整的I2C驱动代码,包括GPIO配置、初始化函数、读写操作等实现细节。通过串口交互可设置时间,并实时读取显示时间、温度信息。该系统实现了DS3231与STM32的高效通信,为嵌入式系统提供了可靠的时间基准。

BackCatK Chen的博客 1万+

SAP SD RRB实战:从DIP参数文件到DP90/DP91开票的完整链路解析

本文详细解析了SAP SD模块中RRB(Resource-related Billing)业务场景的完整链路,从DIP参数文件配置到DP90/DP91开票操作。通过实战案例分享DIP参数文件的核心配置技巧、特性设置及物料决定要点,帮助用户掌握动态开票的关键技术,提升SAP SD RRB的实施效率。

weixin_26833939的博客 378

2022年电赛E题声源定位跟踪系统

电赛声源定位

qq_53357019的博客 2万+

【单片机】[STM8] - 外部时钟 + 内部时钟 的切换

STM8S103K3: 外部时钟 + 内部时钟 的切换。 首先看一下 STM8S103K3 的时钟结构图,可以帮助你很好的理解。 这里有几个时钟,就是图中标识的时钟,需要弄清楚一下:fHSE: 外部高速晶振时钟,它是由外部晶振产生,大小由外部晶振大小决定,STM8S的外部晶振范围:1-24M,看图中的”HSE OSC 1-24M“。 fHSI:内部RC高速时钟,它是由内部的RC震荡电路产生的,

z21109的专栏 1万+

YOLO26 数据标注工具:LabelImg、Label Studio实战指南:主流标注工具的安装配置与使用技巧,高效完成目标检测数据标注

本文介绍了目标检测中数据标注的核心地位与常用工具。数据标注质量直接影响模型性能,需要关注准确性、一致性等维度。文章详细讲解了边界框、类别标签等基本概念,并对比了LabelImg、Label Studio等主流标注工具的特点。重点介绍了LabelImg的轻量级、易用性等优势,以及Label Studio的协作功能,为不同规模项目提供标注工具选择建议。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1176

STM32标准库时钟配置源码分析

这里型号为STM32F40_41xxx,即F407。SystemInit()中完成,使能内部高速晶振HSI,复位CFGR清除所有时钟源配置,关闭HSE,CSS,PLL,复位PLL配置寄存器默认值,关闭HSE旁路模式,禁用所有RCC,接着进入SetSysClock();根据芯片型号宏定义,在system_stm32f4xx.c中可以看到,PLL_M分频系数为8,使VCO输入频率为1MHz,即8/1 = 1MHz。HSE_VALUE,使用外部高速晶振8MHz,其他格式,stm32f4xx.h中可进行配置。

BFwBQG919的博客 373

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【IAR工程】STM8S208RB基于ST标准库下GPIO点灯示例

【IAR工程】STM8S208RB基于ST标准库下GPIO点灯示例

perseverance51博客 1335

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: ubuntu12.04 64位构建ARM交叉编译环境
下一篇: stm8s 串口通讯源码程序(8位数据,奇校验,2个停止位)
ZeroSkyrim
博客等级 码龄16年 34粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值