STM8S105 TIM1 TIM2 定时器的定时时间初始化
很多刚接触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 定时器的定时时间初始化相关推荐
- STM32F1系列定时器 最大定时时间
STM32定时器工作原理: 定时器本质上是一个16位计数器(就是TIMx_CNT寄存器),计数器就是一种寄存器,学过数电应该清楚,寄存器必须输入时钟才能工作,该计数器输入时钟频率为72M/(psc+1 ...
- stm32常见定时器---TIM定时及PWM输出
STM32 常见定时器资源: 系统滴答定时器SysTick----提供时钟节拍做时间基准 看门狗定时器WatchDog----防止程序跑飞 实时时钟RTC 基本定时器:TIM7.TIM6 通用定时器: ...
- 单片机定时器精准定时_通过51单片机定时器/计数器实现精确延时
MCS-51单片机内部共有两个16位可编程定时器,计数器,即TO.Tl.既有定时功能,又有计数的功能.每个定时器都是由两个8位的特殊功能寄存器THi和TLi组成(i=0.1).TMOD是TO和Tl的工 ...
- STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结
STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...
- 高级定时器/TIM1/TIM8 定时时间不准的问题/TIM_TimeBaseStructure.TIM_RepetitionCounter
配置定时器遇到的问题 举例1: /*TIM1时钟配置*/ TIM_TimeBaseStructure.TIM_Prescaler = 2; //预分频(时钟分频)72M/(2+1)=24M TIM_T ...
- STM32 定时器 定时时间的计算
假设 系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到 关键是设定 时钟预分频数,自动重装载寄存器周期的值 /*每1秒发生一次更新事件(进入中断服 ...
- 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...
下面一段文字是对8051单片机定时器初值的计算描述,希望对你有所帮助,对于你的提问,根据下面文字的说明,可以得到初值为:FE0CH(65536-500) 定时器/计数器可用软件随时随地起动和关闭,起动 ...
- 利用T0定时器定时 100ms,每当定时时间到就使 P1.7 求反
一个简单的单片机的问题 8031 的 P1.7 接一个发光二极管:利用T0定时器定时100ms,每当定时时间到就使 P1.7 求反. 也就是使二极管亮100ms,灭100ms,周而复始. 请帮忙把程序 ...
- java定时开始和关闭_springboot自带定时器实现定时任务的开启关闭以及定时时间可以配置详解...
一.序言: 最近项目需要用到定时任务,需要完成一个定时功能.经过了解,项目中目前实现定时任务,一般有三种选择,一是用Java自带的timer类.稍微看了一下,可以实现大部分的指定频率的任务的调度(ti ...
最新文章
- Docker 公司是如何做社区的?
- 提升网站优化排名的前提是什么?
- USACO1.4.2(The clocks)BFS
- 项目: 用函数实现反弹球消砖块
- 2015版App推广全攻略:你所不知道的撕逼营销,事件营销和PR传播
- Microsoft SQL server 2005的基本操作
- Python源代码文件的文本编码
- [转载] Python Numpy
- 简单的Vue计算属性
- gitlab 删除分支_idea gitlab 分支 pull、push 实践笔记
- C/C++作用域运算符::
- python身份证照片识别信息
- python numpy函数手册_NumPy常用中文手册.pdf
- 分享帝国CMS采集教程(图文详解)
- 控制系统状态空间表达式的解(1)——求解线性定常系统零输入响应
- linux内核将新驱动添加到menuconfig菜单
- php生成appid,uniapp运营中项目转移一定要注意把DCloud appid转移过来
- 可用资源不足excel无法完成任务_你若会用Excel里的SUM函数,又何须加班到半夜!【Excel教程】...
- 计算机专业毕业设计答辩ppt案例,计算机专业 毕业设计答辩PPT.ppt
- 南昌师范学院同学会05级计算机,返校感言|故事初始,是回归,回到南昌师范学院的TA们,说了这些……...