STM8S208R8的第四个程序---外部晶振时钟源验证

发布者:hylh2008最新更新时间:2016-10-12 来源: eefocus关键字:STM8S208R8  外部晶振  时钟源 手机看文章 扫描二维码
随时随地手机看文章
#include

#define LED PC_ODR_ODR1//PC1->LED
#define SW  PD_IDR_IDR3//按键

/****************************************************
PC1推挽输出,PD3上拉输入并开按键中断
****************************************************/
void GPIO_INIT()
{
  PC_DDR_DDR1=1;
  PC_CR1_C11=1;
  
  PD_CR1_C13=1;//上拉输入
  PD_CR2_C23=1;//开输入中断
}
/****************************************************
外部中断初始化
****************************************************/
void EXTI_INIT()
{
  EXTI_CR1=0X80;//PD口下降沿触发中断
}
/***********************************************
系统时钟分频系数采用默认值8分频
上电后,系统以内部时钟8分频为时钟源,LED闪烁得比较慢
当按下按键PD3过后,时钟进行切换,使用了外部晶振8分频作为系统时钟源
因而LED闪烁速度明显加快,因为使用外部时钟后是24MHz不分频的时钟,是2M的12倍
在LED闪烁上可以看出,本程序内部2M时钟的情况下闪烁频率0.5Hz左右,使用外部时钟后是6Hz左右,验证了12倍
再按下复位键后速度还原
***********************************************/
#pragma vector=0x08//GPIOD中断向量号是6,+2即可
__interrupt void EXTI_PD3()
{
  while(!SW);//判断是否按下
  
  CLK_ECKR_HSEEN=1;//开外部
  while(!CLK_ECKR_HSERDY);//等待外部时钟准备好
  CLK_SWCR_SWEN=1;//使能时钟切换
  CLK_SWR=0XB4;//HSE为主时钟源
  while(!CLK_SWCR_SWIF);//等待切换成功,如果Option Bytes中的Flash_Wait_States不设置为1,此行不能通过
  CLK_SWCR_SWEN=0;// 清除切换标志
}
void delay(unsigned int time)//延时程序
{
  unsigned int x,y;
  for(x=0;x     for(y=0;y<500;y++);
}
void main()
{
  asm("sim");//关闭全局中断
  GPIO_INIT();
  EXTI_INIT();
  asm("rim");//打开全局中断
  while(1)
  {
    LED=0;
    delay(500);
    LED=1;
    delay(500);
  }
}

 

这个程序中需要用STLINK,stm8s的Option Bytes

下面截图说明怎么做

1:在IAR for stm8环境里右键工程选Options

STM8S208R8的第四个程序---外部晶振时钟源验证 - liangb2000 - liangb2000的博客
2:选择Debugger->Driver,在下拉复选框中选择ST-LINK
STM8S208R8的第四个程序---外部晶振时钟源验证 - liangb2000 - liangb2000的博客
 
 suppress verify我是一般不选,不然不能用STLINK进行Debug
STM8S208R8的第四个程序---外部晶振时钟源验证 - liangb2000 - liangb2000的博客
 
3:如果程序写好编译了以后,进入download and debug
STM8S208R8的第四个程序---外部晶振时钟源验证 - liangb2000 - liangb2000的博客
4:这时我们就该修改Options Bytes了,在Debug模式下,IAR的工具栏是不是有所变化了,我们选ST-LINK下来中就有Options Bytes了STM8S208R8的第四个程序---外部晶振时钟源验证 - liangb2000 - liangb2000的博客
 
5:本程序的设置一定要把flash_wait_states改为1
STM8S208R8的第四个程序---外部晶振时钟源验证 - liangb2000 - liangb2000的博客
6:程序仿真,全速运行,先前LED闪烁速度很慢,一旦键按下,速度明显变快了,哈哈12倍时钟效果是有区别的
STM8S208R8的第四个程序---外部晶振时钟源验证 - liangb2000 - liangb2000的博客

关键字:STM8S208R8  外部晶振  时钟源 引用地址:STM8S208R8的第四个程序---外部晶振时钟源验证

上一篇:STM8S208R8的第五个程序---时钟CCO输出验证
下一篇:STM8S208R8的第三个程序---外部中断

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

怎样辨别单片机的内部晶振外部晶振
  单片机的外部晶振稳定,受温度,湿度等环境因素影响比内部振荡器小,精度比较高。而且当设计需要降低功耗时,比如说便携式仪表等,就需要外设晶振,因为内部振荡器不能根据需要停止,而外部晶振可以适时停止,从而进入休眠状态,降低功耗。   而单片机的内部晶振一般不够准确,误差比较大。但是单片机的内部晶振和外部晶振的作用都是一样的,给系统提供时钟。如果对频率要求不高的话(比如不涉及串口通信和精确定时等的话),用内部晶振就足够了,并且这样成本还低。内部时钟,频率受温度等其它影响,但是能省下晶振的钱,还有2个I/O.所以,如果对频率要求不高,一般是优先选用内部振荡。 假如你想要省电,用了SLEEP,那你就不能用内部振荡了,内部振荡回停止!
[单片机]
ATmega48 外部时钟
ATmega48可用外部时钟源驱动,如Figure 15所示的进行连接。 此时CKSEL熔丝位必须按照Table15编程。 选择了这个振荡源之后,启动时间由熔丝位 SUT确定,如 Table16 所示。 为了保证MCU 能够稳定工作,不能突然改变外部时钟源的振荡频率。工作频率突变超过2% 将会产生异常现象。应该在MCU 保持复位状态时改变外部时钟的振荡频率。 要注意的是,系统时钟预分频可以实现在运行期间改变内部时钟频率而保持系统稳定运 行。请参见 P31”系统时钟预分频器 ”。
[单片机]
ATmega48 <font color='red'>外部</font>时钟
LPC17xx使用内部晶体(Internal RC Oscillator)作为时钟源
在一般应用场合(不使用USB,对精度要求不高)LPC17xx系列除了使用外部晶体外,还可以使用内部的12MHZ晶体作为振荡源。其实在运行初始化程序,进入用户程序前(main函数),LPC17xx是使用了内部晶体,这样设计是为了让引导代码(俗称bootloader)运行在一个已知的频率上。 最近在开发板上做了个使用内部晶体的小实验,把原来使用外部12MHZ的程序修改成了使用内部晶体。这个修改其实很简单,只要修改时钟源选择寄存器(CLKSRCSEL)和锁相环0配置寄存器(PLL0CFG)。在Keil下system_LPC177x_8x.c下甚至能可视化修改。具体如下图: 为了确定实验效果,把外部晶体使能关闭了(Main
[单片机]
LPC17xx使用内部晶体(Internal RC Oscillator)作为<font color='red'>时钟源</font>
STM8S208R8的第三个程序---外部中断
注意,下面的程序都没按键去抖 #include iostm8s208r8.h #define LED PC_ODR_ODR1 /****************************************************** PD3按键中断控制LED亮灭 ******************************************************/ void GPIO_INIT()//端口初始化 { //---------------------------LED--------------------- PC_DDR_DDR1=1; PC_CR1_C11 =1;//LED推挽输出 //----
[单片机]
PIC时钟源选择与内部时钟源配置总结
总体上PIC单片机的时钟源分为内部和外部2种,内部是由内部的时钟产生电路完成,经过分频器后提供给CPU作为主频时钟,外部又可分为2种,如上述1,2,3则是来源于其他源的直接脉冲时钟,4-7则是需要外部振荡电路产生的时钟源。 下面为如何配置单片机使用内部时钟源 首先选择使用内部时钟源方式有2种: 1.通过配置字方式,编译下载时一次性完成 2.在程序初始化的时候通过配置寄存器完成 一般情况下选择第2种方式选用内部时钟源,选择完内部时钟后,还要通过配置 OSCCON的来配置时钟频率 特别注意的地方就是,当不设置对应频率时,默认为500KHZ 关于时钟配置的寄存器说明如下:
[单片机]
PIC<font color='red'>时钟源</font>选择与内部<font color='red'>时钟源</font>配置总结
STM32关于外部时钟晶振为什么选用8MHz
芯片的主晶振频率范围一般来说在数据手册(Datasheet)和技术参考手册(Technical Reference Manual)中都有介绍。 你提到的时钟先分频再倍频,这个需要深入到STM32的内部去一探究竟了, 在其技术参考手册的第7.2节Clocks的一开始有一个表格,时钟树(Figure 8. Clock tree),它完全地列出来STM32这个芯片内部各个模块的时钟来源以及相关的从属关系。 在这个图的正中央,有一个核心时钟:SYSCLK,它最大频率是72MHz,它的时钟信号通过选择器SW可以由PLLCLK提供(也可由HIS、HSE提供)。 PLL,毫无疑问,它是用来倍频的,可以*2,*3,*4……*16,它
[单片机]
STM32关于<font color='red'>外部</font>时钟<font color='red'>晶振</font>为什么选用8MHz
STM32在外部32Mhz晶振下的时钟配置方法
1. 硬件平台 本例程使用的是 STM32F302RDT6 芯片,其时钟配置方法在其它ST单片机中也类似。 2. 实验目的 使用外部 32Mhz 晶振配置系统时钟为 72Mhz。 3. 配置原理 根据STM32F302RD芯片的参考手册,可以查看该芯片的时钟树结构,这里我们配置系统时钟 SYSCLK 为72Mhz,所以这里只需要修改 PREDIV 的分频值为4分频,其它 PLL 倍频等配置和使用8Mhz外部晶振时配置相同。 4. 修改配置 (1)打开工程里的 system_stm32f30x.c 文件,找到 SetSysClock() 函数,进行时钟配置修改。这里我们只需要将外部时钟四分频后得到8Mhz的时钟,所
[单片机]
SYSCLK时钟源三个来源:HSI RC、HSE OSC、PLL
1、 SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL 2、 MCO 可以提供4源不同的时钟同步信号,PA8 3、 GPIO口貌似有两个反向串联的二极管用作钳位二极管。 4、 ICode总线,DCode总线、系统总线、DMA总线、总线矩阵、AHB/APB桥 5、在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟 6、 STM32复位有三种:系统复位、上电复位、备份区域复位。其中系统复位除了RCC_CSR中的复位标志和BKP中的数值不复位之外,其他的所有寄存器全部复位。 触发方式例如外部复位、看门狗复位、软件复位等;电源复位由于外部电源的上电/掉电复位或者待机模式返回。 复位除了BKP
[单片机]
SYSCLK<font color='red'>时钟源</font>三个来源:HSI RC、HSE OSC、PLL
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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