STM8S TIM1/TIM2 初始化函数

发布者:andyliow1980最新更新时间:2020-02-09 来源: eefocus关键字:STM8S  TIM1  TIM2  初始化函数 手机看文章 扫描二维码
随时随地手机看文章

/*

TIM2初始化函数

返回值:无

参数:定时时间 us


*/

#define CPU_CLK 16027  //主频 KHz


void timer2_Init(ulong us)

{

    uchar PSCR = 0; //分频 

    uint pow;

   ulong ARR;

start:

    pow=1;

    for(uchar i=0;i    {

        pow *= 2;

    }

    if(us>250000)

      ARR = (((((us-1)/ 1000) * CPU_CLK) )/pow);

    else

      ARR = ((((us-1) * CPU_CLK+500) / 1000)/pow);

    if(ARR>0xffff) //计算arr是否超出范围

    {

        PSCR++;

        goto start;

    }

    TIM2_PSCR_PSC = PSCR; 

    TIM2_ARRH = (uchar)(ARR>>8);

    TIM2_ARRL = (uchar)(ARR&0x00ff); 

    TIM2_IER = 0x01; 

    TIM2_CR1 = 0x01; 

}

/*

TIM1初始化函数

返回值:无

参数:定时时间 us


*/

void  timer1_Init(ulong us)

{

  uint PSCR = 0; //分频 

   ulong ARR;


start:



    if(us>250000) //2000000

      ARR = (((((us-1)/ 1000) * CPU_CLK) )/(PSCR+1));

    else

      ARR = ((((us-1) * CPU_CLK+500) / 1000)/(PSCR+1));


    if(ARR>0xffff) //计算arr是否超出范围

    {

        PSCR++;

        goto start;

    }



    TIM1_PSCRH = (uchar)((PSCR)>>8);

    TIM1_PSCRL = (uchar)((PSCR) & 0x00ff);          //(15+1)分频为1M

    TIM1_ARRH = (uchar)(ARR>>8);

    TIM1_ARRL = (uchar)(ARR&0x00ff);        //每us中断一次

    TIM1_IER = 0x01;         //允许更新中断

    TIM1_CR1 = 0x01;         //计数器使能,开始计数

}


关键字:STM8S  TIM1  TIM2  初始化函数 引用地址:STM8S TIM1/TIM2 初始化函数

上一篇:解决stm8s003中timer2配置初始化中引起中断更新
下一篇:stm8s003 8K空间不够用,出现报错,修改stvd参数进行最优化

推荐阅读最新更新时间:2024-11-10 12:25

stm8s: GPIO配置,点亮LED!PB4,PB5引脚LED点不亮
最近两天在做STM8S103的开发,调完硬件后,就开始编写软件了,第一步当然又是点亮LED灯了,结果很尴尬的死活点不亮!后来各种百度,认真查看数据手册,才发现一个很大的坑,由于粗心大意,没有看到,做个笔记,以为备忘。 1、流程 点亮LED,流程跟STM32基本一样: (1)配置GPIO(STM8S不需要专门配置每个引脚的时钟,最开始的时候配置系统时钟即可) (2)GPIO输出高低电平 废话不说,直接上代码: 2、上代码 //FUNCKTION: LED灯GPIO口初始化 //PARA : 无 //RETURN : 无 void LED_Config() { GPIO_Init(GPIOB, GPIO_PIN
[单片机]
<font color='red'>stm8s</font>: GPIO配置,点亮LED!PB4,PB5引脚LED点不亮
STM8S_ 004_UART基本收发数据
写在前面 Ⅰ 做软件开发的人都知道打印信息的重要,说到打印信息,我们就不得不说UART串口打印。做单片机开发的人,打印信息主要的来源就是UART串口打印。因此,关于UART相关的知识就比较重要。 printf、scanf这种标准的函数不只是可以在电脑上可以使用,在我们单片机上也同样可以使用,本文只讲述关于UART的基础知识,关于printf、scanf这一块后面将再次给大家整理一篇文章。 本文将结合“STM8S参考手册”和软件源代码给大家讲述关于UART的基础知识和用法。 为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1i5uWhJR UART基础知识 Ⅱ 通用异
[单片机]
STM8S_ 004_UART基本收发数据
Systemlnit时钟系统初始化函数剖析
在工程文件的system_stm32f10x.c中有如下代码: 这里将为大家逐个注释,让大家了解。 void SystemInit (void) { RCC- CR |= (uint32_t)0x00000001;//把HSI时钟打开 //HSION:内部高速时钟使能 (Internal high-speed clock enable) 由软件置’1’或清零。 //当从待机和停止模式返回或用作系统时钟的外部4-16MHz振荡器发生故障时,该位由硬件置’1’ 来启动内部8MHz的RC振荡器。 //当内部8MHz振荡器被直接或间接地用作或被选择将要作为系 统时钟时,该位不能被清零。 //0:内部8MHz振荡器
[单片机]
STM8S中Option Byte的改写操作
在STM8S中有些引脚是第二功能,需要对OptionByte字节进行改写才能实现第二功能,在博文里有蜂鸣器的程序,在里面对Option Byte进行了修改,由于用到了库函数,觉得比较麻烦,想用裸机写个程序修改字节,操作后发现改了之后芯片就不能读写了,出现错误,总是出现找不到主函数的错误,郁闷了一天。 可项目里要用到第二引脚的功能,没办法继续努力吧!在网上查了一些相关的资料,说是可以用STVP修改Option Byte,抱着试试看的心态在网上下了软件,安装上后就简单的操作了一下,发现芯片居然好使了。虽然方法笨了点,但可以应用就OK了! 因为FLASH是掉电不丢失的,我先用STVP把OptionByte修改好后,
[单片机]
LPC1754内部PLL0原理及应用设计详解
LPC175x作为NXP公司主推的cortex-M3内核芯片,广泛应用于各工控、电子计量、报警系统等领域,无论何种应用,根据实际需求选择合适的时钟源并配置合理的系统时钟频率都是必不可少的。 振荡器 以EasyARM-1754M3开发板为例,LPC1754芯片外部晶体振荡器包含两个,一个频率为12MHz外部高速晶振和一个频率为32.768KHz的外部低速晶振,两个都可以使用软件设置选用或不选用。此外LPC1754内部也包含三个独立的振荡器,他们分别是内部主振荡器,内部RC振荡器和内部RTC振荡器。实际应用当中常用的振荡器是外部高速晶体振荡器,和外部低速晶体振荡器。 LPC1754内部PLL0原理简介 PLL0包含多个寄存器,
[单片机]
LPC1754内部PLL0原理及应用设计详解
stm8s 定时器2测量脉冲宽度(单位 us)
void Init_Timer2(void) { GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);//输入 无中断 TIM2_TimeBaseInit(TIM2_PRESCALER_16,65536-1); //16分频, 65ms 溢出 TIM2_Cmd(ENABLE); } uint16_t TIM2_GetCapture(void) { /* Get the Capture Register value */ uint16_t tmpccr = 0; uint8_t tmpccrl=0, tmpccrh=0; tmpccrh = TIM2- C
[单片机]
STM8S学习笔记之二(STM8 GPIO输出功能)
拿到STM8板子之后,在IAR官方下载IAR for STM8s 30天试用版本,在电脑上安装后发现在安装IAR时,STLink的驱动也会全部自动的安装上去,方便啊。。因为之前我的AVR都是在IAR上开发的,所有对这个软件并不陌生,打开软件新建工程,Debug模式下,设置使用STLink仿真,将空白文件成功烧写进去了,看来,开饭环境搭建还是很简单的。。 接下来,进入主题,STM8S的IO口控制,这是学习一个单片机最最最基础的东西了。 STM8单片机IO与AVR差不多,可以配置为输入输出,同时还可以带上拉电阻下拉电阻。还有就是跟STM32几乎相同,某些IO口可以配置成模拟输入,模拟输入,复用端口,也可以配置成中断端口。
[单片机]
STM8S配置位 OptionByte
1.什么是STM8S 的配置字 OptionByte 2.Option Byt Byte 里面的位都表示什么 3.如何编程Option Byte 一 选项字节(OptionByte ) STM8S 的配置字类似于AVR 的Fuse 熔丝位。 用于配置端口的复用功能和读保护等操作。 不同于AVR 的熔丝位,STM8S 的时钟配置并不在Option Byte 中,不会出现写完STM8S 后芯片直接锁死的尴尬。 选项字节用于配置硬件特性和存储器保护状态,这些字节位于同一页的特定存储器阵列中。 选项字节可以在ICP/SWIM模式中或IAP模式中修改, 也就是可以通过STlink 写配置字,或者是通过程序写选项字。
[单片机]
<font color='red'>STM8S</font>配置位 OptionByte
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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