STM8 设置系统时钟

发布者:keiss2018最新更新时间:2018-06-02 来源: eefocus关键字:STM8  系统时钟 手机看文章 扫描二维码
随时随地手机看文章

硬件平台:stm8s103 

编译环境:IAR for stm8


#include

#include


//

//  设置系统时钟使用内部振荡器为16MHz运行。

//

void InitialiseSystemClock()

{

    CLK_ICKR = 0;                       //  复位内部时钟寄存器

    CLK_ICKR_HSIEN = 1;                 //  使能 HSI

    CLK_ECKR = 0;                       //  禁用外部时钟

    while (CLK_ICKR_HSIRDY == 0);       //  等待HSI准备好

    CLK_CKDIVR = 0;                     //  确定时钟全速运行

    CLK_PCKENR1 = 0xff;                 //  使能所有外设时钟

    CLK_PCKENR2 = 0xff;                 //  同上

    CLK_CCOR = 0;                       //  关闭CCO Turn off CCO

    CLK_HSITRIMR = 0;                   //  关闭所有HSI trimming

    CLK_SWIMCCR = 0;                    //  设置SWIM分频=系统时钟/2

    CLK_SWR = 0xe1;                     //  使用HSI作为时钟源

    CLK_SWCR = 0;                       //  复位时钟开关控制寄存器

    CLK_SWCR_SWEN = 1;                  //  开关使能

    while (CLK_SWCR_SWBSY != 0);        //  如果时钟忙,继续等待

}


int main(void)

{

    __disable_interrupt();

    //

    //  Initialise Port D.

    //

    PD_ODR = 0;             //  关闭所有PD脚输出

    PD_DDR_DDR4 = 1;        //  设置PD4为输出

    PD_CR1_C14 = 1;         //  设置PD4为上拉输出

    PD_CR2_C24 = 1;         //  设置PD4翻转速度为10MHz

    //

    // 初始化系统时钟源

    //

    InitialiseSystemClock();

    __enable_interrupt();

    while (1)

    {

        PD_ODR_ODR4 = 1;    // PD4输出高电平

        PD_ODR_ODR4 = 0;    // PD4输出低电平

    }

}


关键字:STM8  系统时钟 引用地址:STM8 设置系统时钟

上一篇:STM8S 串口应用 UART2 STM8S105
下一篇:STM8时钟配置

推荐阅读最新更新时间:2024-03-16 16:04

MSP430F5529火箭板 ---> 控制时钟系统输出频率实验
实验内容:上电控制MSP430F5529 Launch Pad上的主时钟系统达到25Mhz 实验准备: 1、硬件:MSP430F5529 Launch Pad 2、软件:Code Composer Studio集成开发工具(CCS) 3、提升MSP430F5529核心电压的办法及介绍请参考《MSP430F5529火箭板 ----> 关于核心电压提升实验(含电源管理模块和供电监控系统介绍)》文章链接 link 一、时钟系统 1、MSP430F5529 Lanuch Pad晶振的物理层分析   在进入时钟系统之前我们先对MSP430F5529的时钟晶振做一个介绍。    MSP430F5529 Launch Pad 板载了1
[单片机]
MSP430F5529火箭板 ---> 控制<font color='red'>时钟</font><font color='red'>系统</font>输出频率实验
Green hand_基于STM8的程控加热器
一.题目要求: A.基础部分 (1)能显示控制温度和实际工作温度; (2)可用键盘设置工作温度,温控误差要求误差±2℃; (3)温度低于30℃时,风扇停止散热,加热器工作;当温度高于70℃,切断加热器,并且接通风扇开始散热; (4)达到预定温度、上下限温度时,能声光报警; (5)自制直流电源。 B.发挥部分 (1)能显示加热功率和风扇转速; (2)加热功率程控可调。 二.解题思路: 通过多途径了解和多方面考虑之后,决定分块解题。风扇使用12V的机箱风扇、加热器使用20W 1.5RJ的水泥电阻、温度传感器使用DS18B20、MCU使用STM8 105型号、显示使用OLED、风扇转速使用霍尔元件进行测速、除复位外再加三个按
[单片机]
Green hand_基于<font color='red'>STM8</font>的程控加热器
SWIM接口及STM8烧录过程
1. 硬件连接 SWIM接口只需要一根传输线,即可完成双向的传输。传输过程,都是由主控制端(host)发起,设备端然后做出反应。host端需要在一个总线上实现读和写,那就是说必须要同时接一个输出IO和一个输入IO(也可以用同一个,开漏的情况下,IO可以同时读写),且输出IO必须设计成开漏,总线上挂接上拉电阻,以便随时交出控制权。硬件连接如下: 上图SWIM_IN为输入IO,SWIM为输出IO。 2. 编码格式 SWIM协议使用归零码,且支持两种速率。 高速模式 低速模式 这两种模式都是使用8M的clock同步(上图中的箭头)。高速模式下,2个低电平加8个高电平表示1;8个低电平加2个高电平表示0。低
[单片机]
SWIM接口及<font color='red'>STM8</font>烧录过程
STM8S学习笔记之三(STM8 SysClk)
STM8S系统时钟设置,对于单片机来说是非常重要的,不同的用处必须应用不同的时钟。。举个例子,做AVR时在高稳定的串口通讯时用的时钟一般是3.6864M,主要是这个算波特率精确。。STM8S同样重要。。 STM8S时钟源: ●1-24MHz高速外部晶体振荡器(HSE) ●最大24MHz高速外部时钟信号(HSE user-ext) ●16MHz高速内部RC振荡器(HSI) ●128KHz低速内部RC(LSI) 各个时钟源可单独打开或关闭,从而优化功耗。 对于我这么懒得人一般都是用的内部或者外部晶振。。这个芯片时钟方面很大的一个亮点就是时钟可以自由分频。在降低功耗方面,如果有特殊
[单片机]
stm32系统时钟详解&&移植
写作原由:今日接手用stm32f100xx芯片开发的项目,以前用的是stm8s 和stm32f103xx芯片;因为在别人的项目代码的基础上做2次开发,但是发现那个代码main函数中没有对系统时钟的设置的相关函数,一直纳闷,但也没有深究,直至昨日 调试时出现串口收发数据出错,源代码在原项目的板子上串口发送、接收数据正常,同样程序在项目板子上收发的数据不正确, 两块板子芯片一样,串口收发管脚一样,最后发现原来板子外部晶振是8MHZ ,新板子外部晶振是12MHZ; 而在STM32固件库中,默认的外部晶振是8MHZ,由于时钟源不正确,导致波特率不正确,当然收发的数据也不正确了.....我勒个去!都怪自己平时看问题“不求甚解”。 (波特
[单片机]
stm32<font color='red'>系统</font><font color='red'>时钟</font>详解&&移植
对于MSP430F5529时钟系统的理解
大一下学期才开始自学单片机,真真切切的感受到自己是个弱鸡,专业知识一点不会,看个书都费劲,周围又没有什么人可以交流交流或者带带我,那个酸爽就别提了,学的我一度想挠黑板。没办法,那也只能硬着头皮学,就是硬看,多看几遍或者看上一段时间就差不多才能理解意思。中断、IO口还比较好理解,到了时钟系统就一脸懵,看了好多遍,一直到暑假才算大致理解了,写篇博文当做梳理,也希望能帮到大家。 首先理解一下时钟系统到底是干啥用的,这个问题曾经困扰了我好久。 (1)时钟系统一个作用是使cpu与各部分协调同步。因为各部件的工作速度不一致,导致它们在协同工作时出现沟通不便,效率低下的情况。有了时钟系统,运行快的部件即使已经执行完当前指令,在时钟系统进
[单片机]
STM8 CPU寄存器映射
CPU寄存器在STM8的地址空间映射如表2所示。只有CPU的调试模块才可以使用这些寄存器的 地址对其操作,在CPU核内执行的指令只能通过直接使用寄存器名才可以读写这些寄存器。 (表2:STM8 CPU寄存器映射)
[单片机]
<font color='red'>STM8</font> CPU寄存器映射
STM 8 AD 转换问题
其它的设置都很简单,仅需注意一个地方:开启AD转换时要延迟一下,延迟后需再开启一次方可。main中如下: ADC_CR1|=0x01; //启动转换 DelayMS(1); ADC_CR1|=0x01; //启动转换 important while(!(ADC_CSR&0x80)); // 等待ADC结束 ADC_CSR &= 0X7F; //清除中断标志
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved