STM8s103F3p 16位定时器 STM2

2020-02-13来源: eefocus关键字:STM8s103F3p  16位定时器  STM2

/************************************************************************************


/* MAIN.C file

 * 

 * Copyright (c) 2002-2005 STMicroelectronics

 */

//16位定时器2的中断方式

//周期为50ms

#include "stm8s103f.h"


main()

{

 //端口初始化

 PD_DDR=0x0f;

 PD_CR1=0x0f;

 PD_CR2=0x00;

 PD_ODR=0x0f;//端口D的前4位输出高电平

 //定时器初始化

 TIM2_IER=0x00;//禁止中断

 TIM2_EGR=0x01;//允许产生更新事件

 TIM2_PSCR=0x01;//计数器时钟=主时钟/128=2Mhz/2

        //相当于技术周期是1us

 TIM2_ARRH=0xC3;//设置重装载时候寄存器的高8位  

 TIM2_ARRL=0x50;//设置重装载时候寄存器的低8位 

         //0xc350=50000*1us=50ms

 TIM2_CNTRH=0xC3;//设定计数器的初始值高8位 

 TIM2_CNTRL=0x50;//设定计数器的初始值低8位

 TIM2_CR1=0x01;//b0=1;允许计数器工作

        //b1=0;允许更新

        //设置控制器,启动定时器

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

 _asm("rim");//允许全局中断

 while (1)

 {}

}


/************************************************************************************


/* BASIC INTERRUPT VECTOR TABLE FOR STM8 devices

 * Copyright (c) 2007 STMicroelectronics

 */

#include "stm8s103f.h"

typedef void @far (*interrupt_handler_t)(void);

void TIM2_UPD_IRQHandler(void);

struct interrupt_vector {

 unsigned char interrupt_instruction;

 interrupt_handler_t interrupt_handler;

};


@far @interrupt void NonHandledInterrupt (void)

{

 /* in order to detect unexpected events during development, 

    it is recommended to set a breakpoint on the following instruction

 */

 return;

}


extern void _stext();     /* startup routine */

@near @interrupt void TIM2_UPD_IRQHandler(void)

{

  TIM2_SR1=0x00;//清楚更新标志

  PD_ODR^=0x0f;

}

struct interrupt_vector const _vectab[] = {

 {0x82, (interrupt_handler_t)_stext}, /* reset */

 {0x82, NonHandledInterrupt}, /* trap  */

 {0x82, NonHandledInterrupt}, /* irq0  */

 {0x82, NonHandledInterrupt}, /* irq1  */

 {0x82, NonHandledInterrupt}, /* irq2  */

 {0x82, NonHandledInterrupt}, /* irq3  */

 {0x82, NonHandledInterrupt}, /* irq4  */

 {0x82, NonHandledInterrupt}, /* irq5  */

 {0x82, NonHandledInterrupt}, /* irq6  */

 {0x82, NonHandledInterrupt}, /* irq7  */

 {0x82, NonHandledInterrupt}, /* irq8  */

 {0x82, NonHandledInterrupt}, /* irq9  */

 {0x82, NonHandledInterrupt}, /* irq10 */

 {0x82, NonHandledInterrupt}, /* irq11 */

 {0x82, NonHandledInterrupt}, /* irq12 */

 {0x82, (interrupt_handler_t)TIM2_UPD_IRQHandler}, /* irq13 */

 {0x82, NonHandledInterrupt}, /* irq14 */

 {0x82, NonHandledInterrupt}, /* irq15 */

 {0x82, NonHandledInterrupt}, /* irq16 */

 {0x82, NonHandledInterrupt}, /* irq17 */

 {0x82, NonHandledInterrupt}, /* irq18 */

 {0x82, NonHandledInterrupt}, /* irq19 */

 {0x82, NonHandledInterrupt}, /* irq20 */

 {0x82, NonHandledInterrupt}, /* irq21 */

 {0x82, NonHandledInterrupt}, /* irq22 */

 {0x82, NonHandledInterrupt}, /* irq23 */

 {0x82, NonHandledInterrupt}, /* irq24 */

 {0x82, NonHandledInterrupt}, /* irq25 */

 {0x82, NonHandledInterrupt}, /* irq26 */

 {0x82, NonHandledInterrupt}, /* irq27 */

 {0x82, NonHandledInterrupt}, /* irq28 */

 {0x82, NonHandledInterrupt}, /* irq29 */

};

关键字:STM8s103F3p  16位定时器  STM2 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic488088.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32学习笔记——利用通用定时器TIM2进行精确延时
下一篇:OSAL移植到STM8

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8 最小开发板/核心板 STM8S003F3P6开发与设计效果
及STVD两种开发环境下寄存器操作和库函数操作的两套配套I/O口例程、定时器例程、UART发送例程、UART接收例程、时钟切换例、AD例程。3.STM8应用案例4.STM8封装库5.STM8各功能模块的寄存器编程6.IAR开发环境和STVP烧写软件STM8S103F3P6 性能对比:
发表于 2020-02-15
STM8 最小开发板/核心板 STM8S003F3P6开发与设计效果
电路设计_STM8S003F3P6 AWU&ADC使用小结
序言现象:当ADC初始化之后,再进休眠,那么AWU唤醒会出现异常,表现为唤醒不成功。解决办法:在睡眠唤醒之后初始化ADC,在进休眠之前关闭ADC功能。工作模式Run mode    正常运行模式,功耗最大。Wait mode    在运行模式下执行WFI(等待中断)指令,可进入等待模式。此时CPU停止运行,但外设与中断控制器仍保持运行,因此功耗会有所降低。等待模式可与PCG(外设时钟门控),降低CPU时钟频率,以及选择低功耗时钟源(LSI,HSI)相结合使用,以进一步降低系统功耗。参见时钟控制(CLK)的说明。    在等待模式下,所有寄存器与RAM的内容保持不变,之前所定
发表于 2020-02-11
电路设计_STM8S003F3P6 AWU&ADC使用小结
关于STM8S003F3P6开发的笔记
5.STM8各功能模块的寄存器编程6.IAR开发环境和STVP烧写软件STM8S103F3P6 性能对比:看到了吧,关键是只有100次,不过我估计一次也用不了了,,,
发表于 2020-02-07
关于STM8S003F3P6开发的笔记
STM8S103F3P STVD+COSMIC开发环境搭建
1、安装STVD,在ST的官网下载。STVD只支持汇编开发,C语言开发需要安装COSMIC C編譯器,单独下载。2、到COSMIC官网下载COSMIC C for STM8:http://www.cosmic-software.com/download.php#stm8对于stm8可以使用32K免费使用权限,每台电脑是1年,以及16K的限制权限。需要使用邮件获取license.lic文件(必须使用邮件或在线获取,其他方法会不成功)。3、在STVD添加COSMIC编译器,选择Tools->Option选项Toolsets页面进行设置。同时软件会自动提示:添加license文件,将前面邮件获取的license指定进来即可
发表于 2020-01-28
STM8S103F3P STVD+COSMIC开发环境搭建
STM8S103F3P6锁死问题及解锁
平台芯片:STM8S103F3P6编译环境:IAR烧录环境:STVP下载工具:ST-Link下载方式:SWIM问题芯片锁死,无法通过IAR调试和下载程序摁~~~~~忘记截图出错的提示信息了解决连接ST-LINK,确认在电脑上,ST-LINK驱动安装成功(红色指示灯常亮)。STVP如图: 点击Configure-------选择ST-LINK(默认是R-LINK)----选择SWIM方式------选择芯片型号------OK选项字节设置点击 OPTION BYTE ------- 第一项ROF,读保护是否打开,选择OFFProgram更改点击 Program ------ 选择下拉的 Current tab点击该按钮写入解锁
发表于 2020-01-28
STM8S103F3P6锁死问题及解锁
M16的T1 16位定时器一共有15种工作模式,其他2个8位定时器
;   T/C 的时钟源可以有多种选择,由CS12:0控制,分别用于高速(低分频)/长时间(高分频)/外部计数场合     一个16位定时器,在8MHz系统时钟驱动下,可以实现uS级的高速定时和长达8秒的超长定时,这可是标准51的弱点    CS12 CS11 CS10 说明         0     0     0   无时钟源      (T/C 停止)         0  
发表于 2019-11-16
小广播
何立民专栏 单片机及嵌入式宝典

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

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