STM8S TIM1/TIM2 初始化函数
来源:互联网 发布:如东知品服饰有限公司 编辑:程序博客网 时间:2024/05/22 19:17
/*
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<PSCR;i++) //算2的n次方
{
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; //计数器使能,开始计数
}
阅读全文
0 0
- STM8S TIM1/TIM2 初始化函数
- STM8S TIM2 输出PWM初始化函数
- STM8S105 TIM1 TIM2 定时器的定时时间初始化
- STM8S---TIM2产生PWM与TIM1定时器周期中断的时钟问题
- STM8S TIM1时钟分频
- STM8S TIM1库函数应用
- stm32f103使用TIM1和TIM2输出PWM
- STM8S---定时器产生PWM(TIM2)
- STM8S的TIM1 PWM设置(寄存器版本)
- STM8S各个模块初始化
- STM8S各个模块初始化
- STM8S延时函数
- STM8L051F3单片机竟然没有TIM1定时器,却有TIM2,3,4!!!害我调了一天没调出来
- stm8s 时钟库函数选择内部RC初始化
- stm8s电机库vtimer_SetTimer()函数的使用
- stm32F401在HAL库下的TIM2初始化产生PWM,后附直接寄存器
- STM8S简介
- stm8s中断
- mysql储存过程遇到的坑(while 循环中,select count(*) 总是返回0的解决方案 )
- 我的第一个Hbuilder项目
- Java连接数据库
- sizeof的那些事儿
- 利用Immutable解决React-Native那些因为对象被篡改导致的多次render问题
- STM8S TIM1/TIM2 初始化函数
- Html标签解释及使用方法
- python快速入门(5)字典结构
- C++学习:malloc/free和new/delete动态内存分配
- LVM小结
- 无监督聚类算法该如何评价
- 分享一道有趣的原创题
- 应用anaconda一键安装python及配置numpy scipy theano,pylearn2各种包
- 解决使用jrebel,集成在eclipse的tomcat里面,修改类和jsp都可以加载修改后的类和文件,无法马上更新修改过的jsp