很多刚接触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);

STM8S105 TIM1 TIM2 定时器的定时时间初始化相关推荐

  1. STM32F1系列定时器 最大定时时间

    STM32定时器工作原理: 定时器本质上是一个16位计数器(就是TIMx_CNT寄存器),计数器就是一种寄存器,学过数电应该清楚,寄存器必须输入时钟才能工作,该计数器输入时钟频率为72M/(psc+1 ...

  2. stm32常见定时器---TIM定时及PWM输出

    STM32 常见定时器资源: 系统滴答定时器SysTick----提供时钟节拍做时间基准 看门狗定时器WatchDog----防止程序跑飞 实时时钟RTC 基本定时器:TIM7.TIM6 通用定时器: ...

  3. 单片机定时器精准定时_通过51单片机定时器/计数器实现精确延时

    MCS-51单片机内部共有两个16位可编程定时器,计数器,即TO.Tl.既有定时功能,又有计数的功能.每个定时器都是由两个8位的特殊功能寄存器THi和TLi组成(i=0.1).TMOD是TO和Tl的工 ...

  4. STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结

    STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...

  5. 高级定时器/TIM1/TIM8 定时时间不准的问题/TIM_TimeBaseStructure.TIM_RepetitionCounter

    配置定时器遇到的问题 举例1: /*TIM1时钟配置*/ TIM_TimeBaseStructure.TIM_Prescaler = 2; //预分频(时钟分频)72M/(2+1)=24M TIM_T ...

  6. STM32 定时器 定时时间的计算

    假设 系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到 关键是设定 时钟预分频数,自动重装载寄存器周期的值 /*每1秒发生一次更新事件(进入中断服 ...

  7. 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...

    下面一段文字是对8051单片机定时器初值的计算描述,希望对你有所帮助,对于你的提问,根据下面文字的说明,可以得到初值为:FE0CH(65536-500) 定时器/计数器可用软件随时随地起动和关闭,起动 ...

  8. 利用T0定时器定时 100ms,每当定时时间到就使 P1.7 求反

    一个简单的单片机的问题 8031 的 P1.7 接一个发光二极管:利用T0定时器定时100ms,每当定时时间到就使 P1.7 求反. 也就是使二极管亮100ms,灭100ms,周而复始. 请帮忙把程序 ...

  9. java定时开始和关闭_springboot自带定时器实现定时任务的开启关闭以及定时时间可以配置详解...

    一.序言: 最近项目需要用到定时任务,需要完成一个定时功能.经过了解,项目中目前实现定时任务,一般有三种选择,一是用Java自带的timer类.稍微看了一下,可以实现大部分的指定频率的任务的调度(ti ...

最新文章

  1. Docker 公司是如何做社区的?
  2. 提升网站优化排名的前提是什么?
  3. USACO1.4.2(The clocks)BFS
  4. 项目: 用函数实现反弹球消砖块
  5. 2015版App推广全攻略:你所不知道的撕逼营销,事件营销和PR传播
  6. Microsoft SQL server 2005的基本操作
  7. Python源代码文件的文本编码
  8. [转载] Python Numpy
  9. 简单的Vue计算属性
  10. gitlab 删除分支_idea gitlab 分支 pull、push 实践笔记
  11. C/C++作用域运算符::
  12. python身份证照片识别信息
  13. python numpy函数手册_NumPy常用中文手册.pdf
  14. 分享帝国CMS采集教程(图文详解)
  15. 控制系统状态空间表达式的解(1)——求解线性定常系统零输入响应
  16. linux内核将新驱动添加到menuconfig菜单
  17. php生成appid,uniapp运营中项目转移一定要注意把DCloud appid转移过来
  18. 可用资源不足excel无法完成任务_你若会用Excel里的SUM函数,又何须加班到半夜!【Excel教程】...
  19. 计算机专业毕业设计答辩ppt案例,计算机专业 毕业设计答辩PPT.ppt
  20. 南昌师范学院同学会05级计算机,返校感言|故事初始,是回归,回到南昌师范学院的TA们,说了这些……...

热门文章

  1. Go语言:谷歌google的uuid模块的基本用法
  2. 随机森林调参 - python
  3. Dell 错误代码(供参考) 我试过报E1410 却是坏阵列卡 杯具
  4. UG NX 12 曲面
  5. 有了Socket协议,为什么还要Websocket协议?
  6. 2022化工自动化控制仪表操作证考试题库及在线模拟考试
  7. 【计算摄影】浅析图像修复背后的核心技术
  8. docker与gosu-阿里云开发者社区
  9. Puppeteer 不重启如何更换代理 IP
  10. 忽米网赋能长三角制造业成效突出助力企业数字化转型升级