说起STM8的时钟,那还真是个杯具,用HSI没问题,切换到HSE也没问题,就是切LSI怎么都不行,然后百思不得其解人,然后上论坛求教,才知道还有个选项字节(OPTION BYTE),数据手册上有这么一段描述:
“选项字节包括芯片硬件特性的配置和存储器的保护信息,这些字节保存在存储器中一个专用的块内。除了ROP(读出保护)字节,每个选项字节必须被保存两次,一个是通常的格式(OPTx)和一个用来备份的互补格式(NOPTx)”
要使用内部低速RC必须将LSI_EN置1,就是这个地方让我纠结了半天,然后用IAR将其置1,方法是:进入调试模式,在上面有个ST-LINK,点击,看到OPTION BYTE,左键点进去,右键单击上面的选项,就可更改了,然后全速运行,就写进去了。
STM8的时钟分为HSI,HSE,LSI,最常用的是HSI,STMS105S4内置的是16M的RC,叫fhsi。它可以分频输出为fhsidiv=fhsi/hsidiv,如果选择其为主时钟源,那么主时钟fmaster=fhsidiv。CPU时钟fcpu=fmaster/cpudiv。
可以通过外设时钟门控寄存器CLK_PCKENR1和CLK_PCKENR2选择是否与某个外设连接。
好了上个切换内部时钟的源代码,测试通过
void CLK_Init(void)
{
//切换到内部LSI(!!!需要修改选项字节的LSI_EN为1)
CLK_ICKR|=0x08;//开启内部低速RC震荡
while(CLK_ICKR&0x10==0);//LSI准备就绪
CLK_SWR=0xd2;
while(CLK_SWCR&0x08==0); //等待目标时钟源就绪
CLK_SWCR|=0x02;
//CPU分频设置
CLK_CKDIVR=0;//内部RC输出不分频,CPU亦分频
}
GPIO的操作相对来说简单些,无非是方向选择,输入输出的设置啊,等等一些,在此就不再赘述了,详见手册GPIO部分。
关键字:STM8 学习笔记 时钟 GPIO
引用地址:
STM8学习笔记——时钟和GPIO
推荐阅读最新更新时间:2024-03-16 14:40
STM8——cannot open source file "xx.h"错误
在使用MDK5编译STM32时,新增的.c文件需要添加到 include Paths 处,否则编译时会报错。 使用STM8时,用的是IAR,新增的.c文件需要添加头文件路径到 options- c/c++ Compiler- Preprocessor下的Additional include directories; 否则在mian函数添加头文件,会报错:cannot open source file xx.h 错误
[单片机]
STM32学习笔记——外部中断EXTI
学习笔记 for STM32F103C8 redesigned by zhang bin 2012-10-30 versions:V-0.1 All Rights Reserved main.c如下,注释的比较详细,把下面的例子即说明都看明白基本上就可以用了: //抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。 //EXTI:外部中断/事件控制器 //EXTI控制器可以产生高达19个软件事件/中断请求 //将19根线配置为中断源,将19根线配置为事件源,将19根线配置为软件中断/事件线,详见《STM32F103xxx使用手册》 //P135
[单片机]
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
[单片机]
STM8S003xx学习笔记(2):16位高级控制定时器(TIM1)
在单片机中定时器是一个非常重要的概念,这篇文章主要是对定时器TIM1做一个学习笔记。 1 综述 STM8S003xx只含有TIM1、TIM2、TIM4,其中TIM1是高级控制寄存器,TIM2和TIM4是通用定时器,这篇文章介绍的是TIM1。 在《数据手册》中我们可以知道,TIM1是一个应用广泛的高级定时器,由其互补输出,死区时间控制和居中对齐PWM功能。其应用领域扩展到电机控制、灯和半桥驱动。 ● 16位向上、向下、向上/向下自动重装载计数器,并有一个16位预分频器。 ● 四个独立的捕捉/比较通道(CAPCOM)配置为输入捕获、输出比较、PWM生成(边缘和居中对齐模式)和单脉冲输出模式 ● 同步模块的控制外部信号的计时
[单片机]
stm32系统时钟详解&&移植
写作原由:今日接手用stm32f100xx芯片开发的项目,以前用的是stm8s 和stm32f103xx芯片;因为在别人的项目代码的基础上做2次开发,但是发现那个代码main函数中没有对系统时钟的设置的相关函数,一直纳闷,但也没有深究,直至昨日 调试时出现串口收发数据出错,源代码在原项目的板子上串口发送、接收数据正常,同样程序在项目板子上收发的数据不正确, 两块板子芯片一样,串口收发管脚一样,最后发现原来板子外部晶振是8MHZ ,新板子外部晶振是12MHZ; 而在STM32固件库中,默认的外部晶振是8MHZ,由于时钟源不正确,导致波特率不正确,当然收发的数据也不正确了.....我勒个去!都怪自己平时看问题“不求甚解”。 (波特
[单片机]
STM8 UART 接收器
STM8 UART 接受器 UART可以接收8位或9位的数据字。如果M位置1,字长为9位,其中MSB存放在寄存器UART_CR1的R8位。 字符接收 在UART接收期间,数据的最低有效位首先从RX脚移进。在此模式里,UART_DR寄存器有一个缓冲器(TDR),位于内部总线和接收移位寄存器之间。 配置步骤: 1.编程UART_CR1的M位来定义字长。 2.在UART_CR3中编程停止位的位数。 3.按下列顺序编写波特率寄存器选择要求的波特率。 a) UART_BRR2 b) UART_BRR1 4.将UART_CR2的REN置1。这将激活接收器,使它开始寻找起始位。 当一字符被接收到时 RXNE位被置位。它表明移位寄存的
[单片机]
韦东山ARM裸机学习笔记——S3C2440的串口驱动编程原理
前言 讲解韦东山JZ2440开发板的串口驱动原理,对韦东山在维基教程串口使用内容的一些补充,串口使用点击这里进入。这里主要讲的是串口驱动的编程思路,如何根据s3c2440的芯片手册编写出最简单的串口驱动。 一、串口的初始化 串口初始化包括引脚初始化、串口时钟初始化和中断模式、波特率配置以及参数配置等。 1、引脚初始化 (1)看JZ2440开发板的原理图,可知UART0的引脚是GPH2(TXD0)和GPH3(RXD0)。 (2)到s3c2440芯片手册295页,看GPHCON(GPH控制寄存器),可以需要把GPH2也就是GPHCON 配置为10,GPH3也就是GPHCON 配置为10。 (3)配置引脚为内部上拉,
[单片机]
TMS320C5402 在电视数字传输复用器中的应用
引言 随着信息技术的发展,电视信号的数字化编码、数字化存储、数字化处理已经越来越广泛。新开发的数字有限电视广播系统主要包括MPEG-2编码器、数字传输复用器、数字调制器以及机顶盒。复用器是该系统的重要组成部分,完成对多路符合MPEG-2系统层标准ITU-TREC.H.222.1|ISO/IEC13818-1的TS流(Transport Stream)的复用,经过64 QAM调制后,以便在1路6MHx的带宽中传送多路数字化节目。考虑到处理的实时性,我们使用美德州仪器公司(TI)的TMS320C5402(简称C5402)DSP作为主控芯片。本文首先介绍TS流的结构、C5402芯片、复有器的组成,然后重点介绍该芯片在复用器的应用
[手机便携]