历史上的今天
返回首页

历史上的今天

今天是:2025年07月24日(星期四)

正在发生

2018年07月24日 | STM8S105 TIM1 TIM2 定时器的定时时间初始化

2018-07-24 来源:eefocus

很多刚接触STM8单片机的入门者不知到如何使用TIM1和TIM2的定时器作为定时功能。

下面介绍如下:

TIM1的初始化1us:

系统时钟是16M。

void set_TIM1_nus(u16 nus)
{
 /*1u的记数周期*/
 /*TIM1_TimeBaseInit(0x0F,TIM1_COUNTERMODE_UP,nus,TIM1_RCR_RESET_VALUE);*/
 /* Set the Autoreload value */
 TIM1->ARRH = (u8)(nus >> 8);
 TIM1->ARRL = (u8)(nus);

 /* Set the Prescaler value */
 TIM1->PSCRH = (u8)(0x0F >> 8);
 TIM1->PSCRL = (u8)(0x0F);

 /* Select the Counter Mode */
 TIM1->CR1 = (u8)(((TIM1->CR1) & (u8)(~(TIM1_CR1_CMS | TIM1_CR1_DIR))) | (u8)(TIM1_COUNTERMODE_UP));

 /* Set the Repetition Counter value */
 TIM1->RCR = TIM1_RCR_RESET_VALUE;
 
 /*打开1中断*/
 /*TIM1_ITConfig( TIM1_IT_UPDATE , ENABLE); */
 TIM1->IER |= (u8)TIM1_IT_UPDATE;
 
 /*计时器打开*/
 /*TIM1_Cmd(ENABLE); */
 TIM1->CR1 |= TIM1_CR1_CEN;

 /*TIM1_ClearFlag(TIM1_FLAG_UPDATE); */
   /* Clear the flags (rc_w0) clear this bit by writing 0. Writing ??has no effect*/
 TIM1->SR1 = (u8)(~(u8)(TIM1_FLAG_UPDATE));
 TIM1->SR2 = (u8)((u8)(~((u8)((u16)TIM1_FLAG_UPDATE >> 8))) & (u8)0x1E);

}

TIM2的初始化如下:

初始化为1ms

void time2_set_1ms(void)
{
 My_TIM2_TimeBaseInit(TIM2_PRESCALER_16,1000);

 My_TIM2_ITConfig( TIM2_IT_UPDATE , ENABLE); 
 
 My_TIM2_SetCounter(0x0000);
 
 /*计时器打开*/
 My_TIM2_Cmd(ENABLE); 
 My_TIM2_ClearFlag(TIM2_FLAG_UPDATE); 
}

中断处理部分,两者基本上都是一致的:

中断处理函数里面清除本次的中断就好了。其他功能自己定义。

TIMx_ClearFlag(TIM_FLAG_UPDATE);


推荐阅读

史海拾趣

问答坊 | AI 解惑

Cypress 2.4G PA模块 功率+27dBm

Complete Transceiver Radio module: CYRF6936 LP 2.4GHz DSSS Radio SOC Operates in the 2.4 to 2.483GHz, unlicensed frequency range (ISM ¨C ndustrial, Scienti and Medical) Transmit power up to +23dBm Receive sensitivity up to ...…

查看全部问答>

RADIO造型的收音机

这一组设计依然是同样的创意,用字母作为电子产品的外壳形状,RADIO造型的收音机,WLAN造型的路由器,MUSIC造型的播放器,SPEAKER造型的扬声器…       顺着这个思路,还有更多的可能性会出现。 …

查看全部问答>

基于虚拟仪器的无线心电监护系统上位机软件设计

基于虚拟仪器的无线心电监护系统上位机软件设计…

查看全部问答>

在线急求 8051在keil中编程关于全局变量的问题!

我使用的是一款STC的一个有双串口的51片子,有1280byte的RAM和60K的ROM. 我声明了几个全局变量比如: unsigned int counst1; unsigned char buf[256]; 然后在串口的中断程序中使用来存放接受数据,但是经过以下语句查看串口输出很奇怪 k=SBUF; ...…

查看全部问答>

麻烦大家提供几个芯片

    我们学校电子设计要做一个红外遥控密码锁,关于红外遥控模块我不太了解,请问         1:哪种红外发射,接收芯片用的比较多,不要太复杂的,能满足学校的电子设计就OK 。     2:有没有双向的红 ...…

查看全部问答>

如何打开sqlce 数据库,用vs2005 vc++

数据库已经建立好了,就是想在点击一个按钮的时候把所有表中的数据都显示出来…

查看全部问答>

问个网络的问题

这个问题是这样的,两台机子,A和B,比如说,A机的设置如下: I P:192.168.0.1 子网:255.255.255.0 网关:192.168.0.2 B机的设置: I P:192.168.0.2 子网:255.255.255.0 网关:192.168.0.1 这样,中间用一个交换机,猫的线直接连在交换 ...…

查看全部问答>

[请教]GPRS模块接入Internet之后的数据传输问题

刚开始学习GPRS,有如下问题请教各位 1.终端为ARM+Q2403A+Linux,通过PPP与远方主机建立连接之后,是不是就直接可以通过socket编程与远方主机进行通信? 2.终端是动态IP,远方主机貌似可以发送短消息给终端,那么远方主机是主动发送短消息至终端的 ...…

查看全部问答>

[推荐]51/ARM/MIPS/PowerPC 仿真器

上海祥佑数码(Micetek)-嵌入式开发系统制造商,公司具备强大研发实力,拥有支持自主开发 51/ARM/MIPS/PowerPC CPU的仿真器及集成开发环境,公司以质优价廉产品,赢得市场广泛认可,公司将竭 诚为广大客户服务。 单片机仿真器系列: - EasyPa ...…

查看全部问答>

如果想在windows mobile上实现一个输入法!具体步骤应该如何?

本输入法已经在PC先用VC实现。 而且已经在ARM系列的试验仪上面实现了嵌入式移植。 现在想在windows mobile上面进行移植。 望高手指点…

查看全部问答>