STM8S系统时钟设置,对于单片机来说是非常重要的,不同的用处必须应用不同的时钟。。举个例子,做AVR时在高稳定的串口通讯时用的时钟一般是3.6864M,主要是这个算波特率精确。。STM8S同样重要。。
STM8S时钟源:
●1-24MHz高速外部晶体振荡器(HSE)
●最大24MHz高速外部时钟信号(HSE user-ext)
●16MHz高速内部RC振荡器(HSI)
●128KHz低速内部RC(LSI)
各个时钟源可单独打开或关闭,从而优化功耗。
对于我这么懒得人一般都是用的内部或者外部晶振。。这个芯片时钟方面很大的一个亮点就是时钟可以自由分频。在降低功耗方面,如果有特殊需求的时候还是考虑STM8L系列或者430的吧,不得不承认术业有专攻。
按照技术手册寄存器功能给寄存器赋值写成一下函数:
//启动时钟配置
void SysClkInit(void)
{
// CLK_SWR=0xe1; //HSI为主时钟源
CLK_SWR=0xb4; //HSE为主时钟源
CLK_CKDIVR=0x00;//CPU时钟0分频,系统时钟0分频
CLK_CSSR=0x01;//时钟安全监测使能
CLK_SWCR=0x02;//使能自动时钟切换
}
首先设置时钟源,也就是时钟是用内部还是外部,如果对时间精度要求不高,用内部也可以。。然后是时钟分频。。这个分频需要设定系统时钟和CPU时钟,这两个时钟,如果对此有特殊要求就得好好斟酌一下了,而我全部不分频。时钟安全监测还是打开吧,如果用的外部时钟,但是外部时钟突然出现故障的话,单片机会自动启用内部时钟,内部时钟默认为8分频也就是2M。然后时钟自动切换,好像这个有没有都可以,去掉能不能使回头再试。。
开机初始化,在不调用此函数时CPU时钟默认开启2M,但是调用此函数后,时钟切换为16M,LED闪烁速度明显加快、、
关键字:STM8S 学习笔记 SysClk
引用地址:
STM8S学习笔记之三(STM8 SysClk)
推荐阅读最新更新时间:2024-03-16 14:40
【ARM学习笔记】实验二:S3C2440A的GPIO输入实验
在实验一中,研究了如何输出高低电平。 本实验来研究了如何接收高低电平,我们知道,GPIO的输入功能的实际上是电压测量,不会形成通路。 实验2:在下面的电路中: 假设我们将GPG11设置为输入功能,GPB5设置为输出功能,检测开关是否按下,如果按下,则点亮LED,否则熄灭。 观察电路图可知,开关的一端接在GND(接地)上,另一端通过电阻接在VCC(电源3.3V)上,而S3C2440的GPG11接在开关与电阻之间。 这个电路中,电阻称为上拉电阻,其作用在于,当开关断开时,GPG11检测到高电平,当开关闭合时,GPG11引脚检测到低电平。 相应的也有下拉电阻,用来拉低电平,以后会接触到。 ######
[单片机]
学习笔记 从零开始学单片机(4) D/A转化
DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。如图所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。运算放大器输出的模拟量V0为: 由上式可见,输出的模拟量 与输入的数字量 成正比,这就实现了从数字量到模拟量的转换。 一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。下面的图是DAC0832的逻辑框图和引脚排列。 CS:片选信号,低电平有效,与ILE相配合,可以对写信号WR1是否有效起到控制作用
[单片机]
STM32+FreeRTOS+CUBEMX_学习笔记(三)
一、前言和目的: 在使用freertos的过程中,难免会遇到关于任务优先级和时间片分配的问题。为了更好的使用该系统,学习了下面的一些知识。 看freertos源文档 时间片调度 抢占式调度 对比两种调度的方式 二、freertos文档: 2.0、看看源文档: 源文档是个好东西啊,虽然网上的论坛和帖子里面都存在很多的答案,但是任何转述的东西或者自己的语言都经过了一定的加工和改造。虽然可能会让人更加容易理解,但是终究是不如源文档的正式和官方。 以下为对源文档的学习和翻译: 2.1、freertos任务定义: Tasks are implemented as C functions. The only thing speci
[单片机]
STM32F103单片机学习笔记(1):用库新建工程和驱动IO口
一、用库新建工程 1、打开软件新建工程,project- new project 2、在工程中分别新建文件夹: Libraries用来装库函数,把库函数的包复制到这个的文件夹中; User用来装主函数和与注册中断的函数,main.c和system_stm32f10x.c放在这里面; Startup用来装启动文件,startup_stm32f10x_hd.s放在里面; CMSIS用来装系统文件,core_cm3.c放在里面; 3、点击,在工程下分别按照如下添加组和文件 4、点击 选择C/C++,添加头文件目录,我都把他们添加进来 5、接着再选择linker Debug设置下载方式 这里要注意一下,单片机在每次下载程
[单片机]
STM32F429HAL库UART学习笔记
UART串口通讯作为最基本通讯协议我就不多赘述。我主要用HAL库实现串口通讯,看一下配置Uart的结构一变量 这里使用了结构体嵌套 typedef struct { USART_TypeDef *Instance; 串口类型和串口内部控制寄存器结构体 UART_InitTypeDef Init; 定义串口输出数据类型停止位奇偶校验位的结构体 uint8_t *pTxBuffPtr; 要发送的数据的缓冲数组指针 uint16_t TxXferSize; 要发送数组大小 uint16_t TxX
[单片机]
MSP430单片机定时器学习笔记
_BIS_SR(LPM2_bits + GIE) //进入LPM3低功耗模式和开总中断允许 中断 #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A(void) { } TACTL timerA控制寄存器 TAR timerA计数器 CCTL0 捕获/比较控制寄存器0 CCRO 捕获/比寄存器0(具有最高中断优先级别,单独使用一个中断向量) CCTL1 捕获/比较寄存器1 CCR1 捕获/比较寄存器1 CCTL2 捕获/比较寄存器2 CCR2 捕获/比较寄存器2 TAIV 中断向量寄存器 其中,定时器,CCR2,CCR1三者共用一个中
[单片机]
STM32 USB学习笔记5
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library 承接前文,对于上层应用而言只剩下CDC类接口文件即usbd_cdc_interface,该文件主要为实现CDC类接口所用到的物理资源以及逻辑资源,需要参考通信设备通用串行总线类定义版本1.2以及PSTN设备通用串行总线通信类子类规范版本1.2,这两个文档都可以在USB组织官网上下载得到,首先看下usbd_cdc_interface.h文件,如下: /* Define to prevent recursive inclusion
[单片机]
PID算法学习笔记
1年前就有听说 摇摇摆摆终于 可以来 详细的 应用学习下 系统需求: 调压器 恒压恒流功能的使用 最基本的比例调节 U=P*Uk+U0 u 为控制信号输出UK为 当前值 和 期望值的U0的偏差 P 为比例系数 这个很容易理解的 这种控制 只在 存在偏差 UK不等于0的时候 才起作用 也就是说 这种控制一定会存在偏差,,偏差越小调节作用越弱 当然 如果增加K 可以使这个必然存在的偏差值 变小。。不过 增加K 会让整个系统不稳定,, (比如系统存在一个正偏差,,K很大,。。系统很容易就输出到一个 傅偏差的值,,这样系统很难稳定 或者说K越大 系统波动 的幅度也越大 增加K减小误差 只适用与不存在超调的系统 也就是
[单片机]